libp2p/ROADMAP.md

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.

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

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

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

Notes NA

Expected date of completion: NA