Skip to content
This repository has been archived by the owner on Feb 12, 2024. It is now read-only.

Commit

Permalink
Merge pull request #375 from ipfs/pm/roadmap-update
Browse files Browse the repository at this point in the history
Update project roadmap
  • Loading branch information
daviddias authored Aug 3, 2016
2 parents c3b2c5f + a8c5db3 commit 4b1e657
Show file tree
Hide file tree
Showing 2 changed files with 181 additions and 15 deletions.
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
[![Circle CI](https://circleci.com/gh/ipfs/js-ipfs.svg?style=svg)](https://circleci.com/gh/ipfs/js-ipfs)
[![Dependency Status](https://david-dm.org/ipfs/js-ipfs.svg?style=flat-square)](https://david-dm.org/ipfs/js-ipfs) [![js-standard-style](https://img.shields.io/badge/code%20style-standard-brightgreen.svg?style=flat-square)](https://github.com/feross/standard)
[![standard-readme compliant](https://img.shields.io/badge/standard--readme-OK-green.svg?style=flat-square)](https://github.com/RichardLitt/standard-readme)
[![](https://img.shields.io/badge/pm-waffle-yellow.svg?style=flat-square)](https://waffle.io/ipfs/js-ipfs)

> IPFS JavaScript implementation.
Expand Down
195 changes: 180 additions & 15 deletions ROADMAP.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
IPFS JavaScript Implementation roadmap
======================================

> We track the development of the js-ipfs project through Github issues and [Waffle.io](https://waffle.io/ipfs/js-ipfs). See our waffle board at: [https://waffle.io/ipfs/js-ipfs](https://waffle.io/ipfs/js-ipfs)
# Milestone 1 - js-ipfs on the browser

> Summary: This milestone's focus is to ship a version of js-ipfs that can be embed in browser applications, creating an IPFS node inside a browser web application.
Expand Down Expand Up @@ -47,27 +49,190 @@ UPDATE:
- [x] WebRTC transport with [libp2p-webrtc-star](https://github.com/libp2p/js-libp2p-webrtc-star)
- [ ] [secio](https://github.com/ipfs/js-libp2p-secio)

# Milestone 2 - TBD
# Milestone 2 - Quality and correctness of the JavaScript Implementation

> Summary: The focus of this milestone is quality of the JavaScript implementation so that users of the library can build their applications with confidence.
### Tasks:

- [ ] Interface definition, documentation and test coverage for both js-ipfs and js-ipfs-api. The `interface-ipfs-core` effort.
- [ ] Create a process to signal users of a proposed interface change and interface changelog.
- [ ] swarm API - https://github.com/ipfs/interface-ipfs-core/pull/35
- [ ] block API - https://github.com/ipfs/interface-ipfs-core/pull/32
- [ ] generic API - https://github.com/ipfs/interface-ipfs-core/pull/33
- [ ] pinning API - https://github.com/ipfs/interface-ipfs-core/pull/34
- [ ] swarm API - https://github.com/ipfs/interface-ipfs-core/pull/35
- [ ] DHT API https://github.com/ipfs/interface-ipfs-core/pull/36
- [ ] mfs API https://github.com/ipfs/interface-ipfs-core/pull/38
- [ ] Robust testing infrastructure
- [ ] Isolation of tests. This includes:
- Avoid cases where there is one set up for a bunch of test files, instead make each test file be runnable by itself. This also includes removing the use of all globals (i.e js-ipfs-api).
- [ ] Interoperability tests between js-ipfs and go-ipfs
- [ ] Benchmarking tests
- [ ] Stress tests, things like:
- Spawn a reasonable amount of nodes
- Add large files
- Exchange large files
- [ ] IPTB (InterPlanetary TestBed) Integration
- [ ] Fixed identified bugs

### Dependencies:

- js-ipfs needs the following from go-ipfs (preferrably in a release) (https://github.com/ipfs/go-ipfs/issues/2738):
- [ ] Do not assume that the Public Key is only transfered in secio
- [ ] Websockets support (really nice to have)
- [ ] use the defined protocol multicodecs https://github.com/ipfs/specs/blob/master/libp2p/7-properties.md#757-protocol-multicodecs

### Notes:

- We will be defining the API in `interface-ipfs-core`, however some pieces like DHT, mfs and pinning will not be available in js-ipfs.

##### Expected date of completion: `late August`

# Milestone 3 - Enter IPLD - Enable js-ipfs to handle both merkledag protobufs and ipld cbor objects

> Summary: Integration of IPLD (js-ipld and js-ipld-ipfs) into js-ipfs.
### Tasks:

NA

### Dependencies:

- [ ] IPLD migration path
- [ ] go-ipfs with IPLD already integrated (it would be best)

### Requirements by other projects:

NA

### Notes:

NA

##### Expected date of completion: `mid September`

# Milestone 4 - Documentation and Developer Experience

> Summary: During this period, we will focus on bringing great developer experience to js-ipfs, this includes: great examples, documentation, tutorials, blog posts and more, enabling more developers to hack with js-ipfs or contribute to the project.
### Tasks:

- [ ] Amazing examples
- [ ] Create the same examples available on https://ipfs.io/docs/examples/ using js-ipfs (through CLI and programatically)
- [ ] Example: Create an IPFS node
- [ ] Examples: Add files to IPFS
- [ ] Tutorial: Build an 'pastebin' with js-ipfs
- [ ] Tutorial: How to use js-ipfs in the browser
- [ ] Tutorial: Make a video player with js-ipfs https://github.com/ipfs/js-ipfs/issues/128
- [ ] Tutorial: Load a Webpage/WebApplication using js-ipfs
- [ ] Add all of the examples to https://ipfs.io/docs/examples/
- [ ] Revisit and complete the IPFS spec

### Dependencies:

NA

### Requirements by other projects:

NA

### Notes:

NA

##### Expected date of completion: `TBA`

# Milestone 5 - 1st implementation Peer Routing + Content Routing (the go-ipfs DHT)

> Summary: Enable content discovery in js-ipfs
### Tasks:

- [ ] js-ipfs-dht

### Dependencies:

NA

### Requirements by other projects:

NA

### Notes:

NA

##### Expected date of completion: `TBA`

# Milestone 6 - The last miles for complete feature parity with go-ipfs

> Summary: 100% feature parity and interop with go-ipfs
### Tasks:

- [ ] mfs
- [ ] ipns
- [ ] HAMT on unixfs-engine
- [ ] ls
- [ ] pinning
- [ ] ping

### Dependencies:

NA

### Requirements by other projects:

NA

### Notes:

##### Expected date of completion: `TBA`


# Milestone 7 - Shoot for the moon 🌑

> Summary: Grandiose ideas to make the js-ipfs project really awesome. It might take some time to get to them, but writting them down is always good.
### Tasks:

- [ ] InterPlanetary Lab - A test lab for the IPFS project, spawning nodes in different geographic locations with different network and machine conditions to really stress test IPFS (heavily inspired by [PlanetLab](https://www.planet-lab.org/))

### Dependencies:

NA

### Requirements by other projects:

NA

### Notes:

NA

##### Expected date of completion: `TBA`

---------------------------------------------------------------------

> Summary: TO BE DISCUSSED

# Project Status

### Per component view

| Name | Spec | Disc |
| :----| :----| :----|
| data importing | https://github.com/ipfs/specs/pull/57 | https://github.com/ipfs/js-ipfs/issues/41
| repo | https://github.com/ipfs/specs/tree/master/repo | https://github.com/ipfs/js-ipfs/issues/51
| Name | Spec | Disc |
| :-------------| :----| :----|
| Importers | https://github.com/ipfs/specs/pull/57 | https://github.com/ipfs/js-ipfs/issues/41
| repo | https://github.com/ipfs/specs/tree/master/repo | https://github.com/ipfs/js-ipfs/issues/51
| network layer | https://github.com/ipfs/specs/tree/master/libp2p | https://github.com/diasdavid/js-libp2p/issues
| bitswap | https://github.com/ipfs/js-ipfs/issues/51 | https://github.com/ipfs/js-ipfs/issues/51
| pin | | https://github.com/ipfs/js-ipfs/issues/59
| files | | https://github.com/ipfs/js-ipfs/issues/60
| daemon | | https://github.com/ipfs/js-ipfs/issues/57
| object | | https://github.com/ipfs/js-ipfs/issues/58
| block | | https://github.com/ipfs/js-ipfs/issues/50
| bootstrap | | https://github.com/ipfs/js-ipfs/issues/46
| init | | https://github.com/ipfs/js-ipfs/issues/42
| bitswap | https://github.com/ipfs/js-ipfs/issues/51 | https://github.com/ipfs/js-ipfs/issues/51
| pin | | https://github.com/ipfs/js-ipfs/issues/59
| files | | https://github.com/ipfs/js-ipfs/issues/60
| daemon | | https://github.com/ipfs/js-ipfs/issues/57
| object | | https://github.com/ipfs/js-ipfs/issues/58
| block | | https://github.com/ipfs/js-ipfs/issues/50
| bootstrap | | https://github.com/ipfs/js-ipfs/issues/46
| init | | https://github.com/ipfs/js-ipfs/issues/42

### Per feature view

Expand Down Expand Up @@ -115,7 +280,7 @@ UPDATE:
- [ ] restart
- [ ] files
- [x] add
- [ ] cat
- [x] cat
- [ ] get
- [ ] stat - Statistics about everything
- [ ] bw
Expand Down

0 comments on commit 4b1e657

Please sign in to comment.