From 4b1bae8bc8d4b52e33a3868ac19f76b6f1f36194 Mon Sep 17 00:00:00 2001 From: Juan Batiz-Benet <juan@benet.ai> Date: Wed, 30 Jul 2014 02:41:26 -0700 Subject: [PATCH] dev pseudo-roadmap --- README.md | 1 + dev.md | 57 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 58 insertions(+) create mode 100644 dev.md diff --git a/README.md b/README.md index 414fb4028..ab3879b36 100644 --- a/README.md +++ b/README.md @@ -48,6 +48,7 @@ go-ipfs is MIT licensed open source software. We welcome contributions big and s Guidelines: +- see the [dev pseudo-roadmap](dev.md) - 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). - please make branches + pull-request, even if working on the main repository - ask questions or talk about things in [Issues](https://github.com/jbenet/go-ipfs/issues) or #ipfs on freenode. diff --git a/dev.md b/dev.md new file mode 100644 index 000000000..dc4fbe35d --- /dev/null +++ b/dev.md @@ -0,0 +1,57 @@ +# go-ipfs development + +This is a simple description of where the codebase stands. + +There are multiple subpackages: + +- `bitswap` - the block exchange +- `blocks` - retrieve blocks for the core node +- `cmd/ipfs` - cli ipfs tool - the main **entrypoint** atm +- `config` - load/edit configuration +- `core` - the core node, joins all the pieces +- `fuse/readonly` - mount `/ipfs` as a readonly fuse fs +- `importer` - import files into ipfs +- `merkledag` - merkle dag data structure +- `path` - path resolution over merkledag data structure +- `peer` - identity + addresses of local and remote peers +- `routing` - the routing system +- `routing/dht` - the dht default routing system implementation +- `swarm` - connection multiplexing, many peers and many transports +- `util` - various utilities + + +### What's done: + +- merkle dag data structure +- path resolution over merkle dag +- local storage of blocks +- basic file import/export (`ipfs add`, `ipfs cat`) +- mounting `/ipfs` (try `{cat, ls} /ipfs/<path>`) +- multiplexing connections (tcp atm) +- peer addressing + +### What's next: + +- dht - impl basic kademlia routing +- bitswap - impl basic block exchange functionality +- ipns - impl `/ipns` obj publishing + path resolution +- **(at this point should have func similar to bittorrent)** +- block splitting on import - Rabin fingerprints, etc +- version control - `commit` like data structure +- expose objects to the web at `http://ipfs.io/<path>` +- more... + +## Cool demos + +A list of cool demos to work towards + +- boot a VM from an image in ipfs +- boot a VM from a filesystem tree in ipfs +- publish static websites directly from ipfs +- expose objects to the web at `http://ipfs.io/<path>` +- mounted auto-committing versioned personal dropbox +- mounted encrypted personal/group dropbox +- mounted {npm, apt, other pkg manager} registry +- open a video on ipfs, stream it in +- watch a video with a topology of 1 seed N leechers (N ~100) +- more in section 3.8 in the [paper](http://http://static.benet.ai/t/ipfs.pdf) -- GitLab