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)