9.4 KiB
libp2p Roadmap
We track the development of the libp2p project through Github issues and Waffle.io. See our waffle board at: https://waffle.io/libp2p/libp2p
2016 Q3
Milestone - JS and Go libp2p interop
Summary: Achieve interoperability between the JS and Go implementations, specificially with secio.
- Tasks
- Migration to pull-streams (track: https://github.com/ipfs/js-ipfs/issues/403). Also part of js-ipfs Milestone 2
- js-secio - https://github.com/libp2p/js-libp2p-secio
- Interop with Go
- Verify that it interops
- Automated tests(track: https://github.com/ipfs/js-libp2p-ipfs/issues/15)
- Integrate the
ping protocol
in js-libp2p (track: https://github.com/ipfs/js-libp2p-ipfs/pull/13)
- Dependencies:
- n/a
- Requirements by other projects
- js-ipfs and go-ipfs interop
Notes NA
Expected date of completion: Q3
2016 Q4
Milestone - libp2p interfaces
Summary: Review and converge both go and js interfaces
Leads
- David
- Juan
Tasks
Notes
Expected date of completion: Week 2 - October 24
Milestone - interface-xtp
Summary: ship xTP interface
Leads
- David
- Juan
Tasks
Notes
Expected date of completion: Week 4 - November 7
Milestone - Documentation of the libp2p modules
Summary: Create easy to write documentation for libp2p modules that is searchable.
Leads
- Friedel
Tasks
Notes
Expected date of completion: Week 5 - November 14
Milestone - Standardize Organization and libp2p/libp2p org clean up
Summary:
Leads
- Richard
Tasks
- Standardize all READMEs and repositories in the libp2p organization
- Use standard-readme for all READMEs
- Look at project-repos.ipfs.io to ensure green across the board.
- Point to IPFS community guidelines for the libp2p project
Notes
Having the community guidelines pointed to, and creating custom ones as needed, should be the priority.
Expected date of completion: Week 5 - November 14
Milestone - libp2p.io
Summary: We need to ship a first version of the libp2p.io website
Leads
- @VictorBjelkholm
Tasks
- Agree and create tasks about what's missing for first version
- Agree on where to take inspiration
- Come up with site structure (sitemap)
- Have content written and integrated
- Setup Libp2p examples
- Deploy and setup CD for shipping website
Notes
The website should be launched, accessible, and thoughtful.
libp2p.io has it's repository here: https://github.com/libp2p/libp2p-website
Expected date of completion: Week 6 - November 21
Milestone - Ship Private Networks
Summary: have pre-shared key based private networks in go-libp2p and go-ipfs
Leads
- Kuba
Tasks
- Choose crypto primitive - XSalsa20 - https://github.com/ipfs/notes/issues/177#issuecomment-255588927
- Get review on the crypto
- Decide on format for key file in ipfs repo - https://github.com/ipfs/notes/issues/177#issue-183845331
- Write a spec/manual
- Publish the spec/manual
- Implementation:
- Create private networks interface - https://github.com/libp2p/go-libp2p-interface-pnet/
- Finish private netwroks interface
- Finish private networks implementation - https://github.com/libp2p/go-libp2p-pnet
- Integrate private networks interface with go-libp2p-swarm and go-ipfs
- Error propagation cleanup
- Key generation tooling
- Tests for private networks
Notes
Expected date of completion: Week 7 - November 28
Milestone - ship js-libp2p-dht
Summary:
Leads
- David
Tasks
Notes
Expected date of completion: Week 9 - December 12
Milestone - Packet Switching #1
Summary: low-level groundwork for the packet switched overlay network
Leads
- Lars
Tasks
- multigram spec and go-multigram implementation - https://github.com/multiformats/multigram
- message-oriented interfaces in libp2p
- go-udp-transport implementation
- message-oriented /ping implementation
Notes
This milestone makes libp2p capable of datagrams, or message-oriented communication. It fleshes out the interfaces through libp2p and the transports, and enables message-based protocols up to the swarm layer.
More milestones in Q1/2017 will implement:
- The switch
- Send/receive messages through a route over the network of peers.
- The actual overlay routing
- Find and maintain routes through the network.
- IP/Ethernet through a TUN/TAP interface
- Transport capabilities:
- Can this transport do streams, i.e. reliable plus ordered?
- Selective reliability upgrade
- Swarm protocols should use a reliability layer of their own if they need a stream, and the transport doesn't take care of it.
- Even for mostly message-based protocols it sometimes makes sense to briefly have a stream.
- Messages over streams
- Put framing around messages so that we can send/receive them even if we only a have a stream-based transport which doesn't technically do message-based.
Expected date of completion: Week 10 - December 19
Milestone - Write libp2p-relay spec
Summary:
Leads
- David
- Juan
Tasks
Notes
Expected date of completion: Week 12 - January 2
Milestone - Ship libp2p-relay
Summary:
Leads
- David
- Jeromy
Tasks
Notes
Expected date of completion: Week 13 - January 9
CACHED MILESTONES (for later re-evaluation)
Milestone - Developer Experience
Summary: Get libp2p into a state that is super easy to use and understand.
##@ Tasks
- Examples
- How to use js-libp2p (dial, multi transport, stream muxing, identify, protocol multiplexing)
- How to use go-libp2p (everything js-libp2p + DHT)
- Spec
- Move spec to the libp2p org
- Revisit and improve
- interface-libp2p
- Make js-libp2p-ipfs and js-libp2p-ipfs-browser use it
- Create js-libp2p, a base class that other libp2p builds can reuse
- make go-libp2p have a top level, easy to use package
- add examples for each of the go-libp2p- repos
Notes NA
Expected date of completion: NA
Milestone - Move DHT to use IPRS
Summary: Currently our records are simple protobufs that get stored in the datastore. With this milestone, any record (provider or IPNS) will be a full IPLD object that follows the IPRS spec.
Tasks
- Technical Discussion: Decide if whether we should support two types of records or simply create another universe of the DHT
- Migrate go-ipfs to use IPRS
- js-libp2p-dht (also known as dht legacy)
Notes NA
Expected date of completion: NA
Milestone - Break DHT into Peer Routing and Content Routing
Summary:
NA
Tasks
- Technical Discussion: Revisit proposed spec
Notes
This milestone is still very green, however something we know for sure we want to do.
Expected date of completion: NA
Milestone - Improve Connectivity of go-libp2p/go-ipfs
Summary: Improve the connectivity of go-libp2p. Have the technical discussions that will enable us to follow a plan to achieve a better connected graph.
Tasks
- Technical Discussion: Define a strategy for connection closing
- Implement the strategy for connection closing in go-libp2p
- Technical Discussion: Definte a strategy for Relay (or multiple Relay)
- Implement Relay in go-libp2p
- Technical Discussion: Improve NAT Traversal
- Improve NAT traversal in go-libp2p