Skip to content

Latest commit

 

History

History
141 lines (100 loc) · 10.2 KB

REQUIREMENTS.md

File metadata and controls

141 lines (100 loc) · 10.2 KB

libp2p Requirements: Roadmap to Feature Complete

Table of Contents

Description

In order for libp2p to achieve its goals, the project will need to achieve the items described in this document.

This document is in the process of being updated. Currently known deficiencies:

  • Rust is incomplete (some tomatoes should be apples)
  • Should we divide Node.js and Browser, or just a have a single JS column?
  • Needs a proofread from implementors to make sure the fruits are correct
  • Performance Milestones is incomplete - need to agree on what these are

As you improve this document, please remove items from the list above.

libp2p Modules Implementations

The libp2p protocols are the protocol stack for the modular libp2p protocols library. These form a p2p-first network stack, with no assumptions, self description, and modular interfaces. More at https://github.com/libp2p/specs/

Legend: 🍏 Done   🍋 In Progress   🍅 Missing   🌰 Not planned

libp2p Node Go JS - Node.js JS - Browser Rust
libp2p 🍏 🍏 🍏 🍏
Identify Protocol Go JS - Node.js JS - Browser Rust
Identify 🍏 🍏 🍏 🍅
Transport Protocols Go JS - Node.js JS - Browser Rust
TCP 🍏 🍏 🍏 🍏
UTP 🍏 🍏 🍏 🍅
UDP 🍏 🍅 🍅 🍅
WebSockets 🍏 🍏 🍏 🍅
WebRTC 🍅 🍏 🍏 🍅
SCTP 🍅 🍅 🍅 🍅
Tor 🍅 🍅 🍅 🍅
i2p 🍅 🍅 🍅 🍅
cjdns 🍅 🍅 🍅 🍅
Bluetooth LE 🍅 🍅 🍅 🍅
Audio TP 🍅 🍅 🍅 🍅
Zerotier 🍅 🍅 🍅 🍅
QUIC 🍅 🍅 🍅 🍅
Stream Muxers Go JS - Node.js JS - Browser Rust
benchmarks 🍏 🍏 🍏 🍅
muxado 🍏 🍅 🍅 🍅
spdystream 🍏 🍅 🍅 🍅
multiplex 🍏 🍏 🍏 🍅
spdy 🍅 🍏 🍏 🍅
http2 🍅 🍅 🍅 🍅
QUIC 🍅 🍅 🍅 🍅
Switch Go JS - Node.js JS - Browser Rust
Dialer stack 🍏 🍏 🍏 🍅
Switch 🍏 🍏 🍏 🍅
NAT Traversal Go JS - Node.js JS - Browser Rust
nat-pmp 🍏 🍅 🍅 🍅
upnp 🍏 🍅 🍅 🍅
ext addr discovery 🍏 🍅 🍅 🍅
STUN-like 🍅 🍅 🍅 🍅
line-switch relay 🍏 🍅 🍅 🍅
pkt-switch relay 🍅 🍅 🍅 🍅
Peer Discovery Go JS - Node.js JS - Browser Rust
mDNS 🍏 🍏 🍏 🍅
bootstrap list 🍏 🍏 🍏 🍅
DHT query 🍏 🍏 🍏 🍅
PEX 🍅 🍅 🍅 🍅
DNS 🍅 🍅 🍅 🍅
Content Routing Go JS - Node.js JS - Browser Rust
Kademlia DHT 🍏 🍏 🍏 🍅
pub/sub 🍅 🍅 🍅 🍅
PHT 🍅 🍅 🍅 🍅
Peer Routing Go JS - Node.js JS - Browser Rust
Kademlia DHT 🍏 🍏 🍏 🍅
pub/sub 🍅 🍅 🍅 🍅
PHT 🍅 🍅 🍅 🍅
Exchange Go JS - Node.js JS - Browser Rust
HTTP 🍏 🍏 🍏 🍅
Bitswap 🍏 🍏 🍏 🍅
Bittorrent 🍏 🍏 🍏 🍅
Consensus Go JS - Node.js JS - Browser Rust
Paxos 🌰 🌰 🌰 🌰
Raft 🍅 🍅 🍅 🍅
PBTF 🍅 🍅 🍅 🍅
Nakamoto 🍅 🍅 🍅 🍅

Cross Language Milestones

  • Standardized interfaces (using a neutral IDL) to define conformance in any language implementation
  • Interoperability testing framework

Performance Milestones

TODO needs performance milestones

Polish level

The polish level achieved defined how much effort has gone into polishing all the corners of the tools, APIs, documentation, and so on. Early on, things will be much more rough as we need to focus on implementation speed over final polish. As we reach completion of the implementations, we turn our focus towards scalability, stability, and security. After that, we focus on end user polish.

  • Polish level: alpha - individuals innovators
  • Polish level: alpha - production for early adopters
  • Polish level: beta - production for small orgs (in progress)
  • Polish level: beta - production for large orgs
  • Polish level: 1.0 - production for all