dev pseudo-roadmap
Juan Batiz-Benet committed
Jul 30, 2014 at 02:41 UTC
4b1bae8bc8d4b52e33a3868ac19f76b6f1f36194
2 files changed
+58
README.md
+1
@@ -48,6 +48,7 @@ go-ipfs is MIT licensed open source software. We welcome contributions big and s
48
49
Guidelines:
50
51
+- see the [dev pseudo-roadmap](dev.md)
52
- please adhere to the protocol described in [the main ipfs repo](https://github.com/jbenet/ipfs) and [paper](http://static.benet.ai/t/ipfs.pdf).
53
- please make branches + pull-request, even if working on the main repository
54
- ask questions or talk about things in [Issues](https://github.com/jbenet/go-ipfs/issues) or #ipfs on freenode.
dev.md
new
+57
@@ -0,0 +1,57 @@
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` - retrieve blocks for the core node
9
+- `cmd/ipfs` - cli ipfs tool - the main **entrypoint** atm
10
+- `config` - load/edit configuration
11
+- `core` - the core node, joins all the pieces
12
+- `fuse/readonly` - mount `/ipfs` as a readonly fuse fs
13
+- `importer` - import files into ipfs
14
+- `merkledag` - merkle dag data structure
15
+- `path` - path resolution over merkledag data structure
16
+- `peer` - identity + addresses of local and remote peers
17
+- `routing` - the routing system
18
+- `routing/dht` - the dht default routing system implementation
19
+- `swarm` - connection multiplexing, many peers and many transports
20
+- `util` - various utilities
21
+
22
+
23
+### What's done:
24
+
25
+- merkle dag data structure
26
+- path resolution over merkle dag
27
+- local storage of blocks
28
+- basic file import/export (`ipfs add`, `ipfs cat`)
29
+- mounting `/ipfs` (try `{cat, ls} /ipfs/<path>`)
30
+- multiplexing connections (tcp atm)
31
+- peer addressing
32
+
33
+### What's next:
34
+
35
+- dht - impl basic kademlia routing
36
+- bitswap - impl basic block exchange functionality
37
+- ipns - impl `/ipns` obj publishing + path resolution
38
+- **(at this point should have func similar to bittorrent)**
39
+- block splitting on import - Rabin fingerprints, etc
40
+- version control - `commit` like data structure
41
+- expose objects to the web at `http://ipfs.io/<path>`
42
+- more...
43
+
44
+## Cool demos
45
+
46
+A list of cool demos to work towards
47
+
48
+- boot a VM from an image in ipfs
49
+- boot a VM from a filesystem tree in ipfs
50
+- publish static websites directly from ipfs
51
+- expose objects to the web at `http://ipfs.io/<path>`
52
+- mounted auto-committing versioned personal dropbox
53
+- mounted encrypted personal/group dropbox
54
+- mounted {npm, apt, other pkg manager} registry
55
+- open a video on ipfs, stream it in
56
+- watch a video with a topology of 1 seed N leechers (N ~100)
57
+- more in section 3.8 in the [paper](http://http://static.benet.ai/t/ipfs.pdf)