github.com/keltia/go-ipfs@v0.3.8-0.20150909044612-210793031c63/dev.md (about) 1 # go-ipfs development 2 3 This is a simple description of where the codebase stands. 4 5 There are multiple subpackages: 6 7 - `bitswap` - the block exchange 8 - `blocks` - handles dealing with individual blocks and sharding files 9 - `blockservice` - handles getting and storing blocks 10 - `cmd/ipfs` - cli ipfs tool - the main **entrypoint** atm 11 - `config` - load/edit configuration 12 - `core` - the core node, joins all the pieces 13 - `fuse/readonly` - mount `/ipfs` as a readonly fuse fs 14 - `importer` - import files into ipfs 15 - `merkledag` - merkle dag data structure 16 - `path` - path resolution over merkledag data structure 17 - `peer` - identity + addresses of local and remote peers 18 - `routing` - the routing system 19 - `routing/dht` - the dht default routing system implementation 20 - `swarm` - connection multiplexing, many peers and many transports 21 - `util` - various utilities 22 23 24 ### What's done: 25 26 - merkle dag data structure 27 - path resolution over merkle dag 28 - local storage of blocks 29 - basic file import/export (`ipfs add`, `ipfs cat`) 30 - mounting `/ipfs` (try `{cat, ls} /ipfs/<path>`) 31 - multiplexing connections (tcp atm) 32 - peer addressing 33 - dht - impl basic kademlia routing 34 - bitswap - impl basic block exchange functionality 35 - crypto - building trust between peers in the network 36 - block splitting on import - Rabin fingerprints, etc 37 38 ### What's in progress: 39 40 - ipns - impl `/ipns` obj publishing + path resolution 41 - expose objects to the web at `http://ipfs.io/<path>` 42 43 44 ### What's next: 45 46 - version control - `commit` like data structure 47 - more... 48 49 ## Cool demos 50 51 A list of cool demos to work towards 52 53 - boot a VM from an image in ipfs 54 - boot a VM from a filesystem tree in ipfs 55 - publish static websites directly from ipfs 56 - expose objects to the web at `http://ipfs.io/<path>` 57 - mounted auto-committing versioned personal dropbox 58 - mounted encrypted personal/group dropbox 59 - mounted {npm, apt, other pkg manager} registry 60 - open a video on ipfs, stream it in 61 - watch a video with a topology of 1 seed N leechers (N ~100) 62 - more in section 3.8 in the [paper](http://static.benet.ai/t/ipfs.pdf)