Compare commits

...

7 Commits

Author SHA1 Message Date
Max Inden 08a5e6d277
README.md: Clean-up introduction (#102)
- Remove outdated slides.
- Remove duplicate single-line libp2p introduction.
- Remove ~fulfilled promise on writing docs, posts and tutorials.

Fixes https://github.com/libp2p/libp2p/issues/101
2022-01-28 10:12:45 +01:00
Max Inden 014f309c54
Merge pull request #98 from libp2p/mxinden-patch-1
README: Replace IRC freenode with Matrix
2021-06-21 12:23:41 +02:00
Max Inden d6cd6e57b9
README: Replace IRC freenode with Matrix
Replace IRC freenode badge with Matrix badge.

See https://github.com/ipfs/ipfs-docs/pull/787 for the greater picture.
2021-06-18 13:59:39 +02:00
Max Inden 1f03ef60cf
Merge pull request #97 from mxinden/remove-requirements
REQUIREMENTS.md: Remove file
2021-05-18 15:25:13 +02:00
Max Inden 7bd620d6a9
Merge pull request #96 from mxinden/remove-roadmap
ROADMAP.md: Remove file
2021-04-27 12:19:47 +02:00
Max Inden 6233dd0f2b
REQUIREMENTS.md: Remove file 2021-04-19 22:18:01 +02:00
Max Inden c7c59860d5
ROADMAP.md: Remove file 2021-04-19 22:14:41 +02:00
3 changed files with 2 additions and 188 deletions

View File

@ -5,20 +5,15 @@
<p align="center">
<a href="http://protocol.ai"><img src="https://img.shields.io/badge/made%20by-Protocol%20Labs-blue.svg?style=flat-square" /></a>
<a href="http://libp2p.io/"><img src="https://img.shields.io/badge/project-libp2p-yellow.svg?style=flat-square" /></a>
<a href="http://webchat.freenode.net/?channels=%23libp2p"><img src="https://img.shields.io/badge/freenode-%23libp2p-yellow.svg?style=flat-square" /></a>
<a href="https://matrix.to/#/#libp2p:matrix.org"><img src="https://img.shields.io/badge/matrix-%23libp2p%3Amatrix.org-blue.svg?style=flat-square" /></a>
</p>
> This document presents libp2p, a modularized and extensible network stack to overcome the networking challenges faced when doing peer-to-peer applications. libp2p is used by IPFS as its networking library.
# Description
libp2p is a networking stack and library modularized out of The IPFS Project, and bundled separately for other tools to use.
libp2p is the product of a long, and arduous quest of understanding -- a deep dive into the internet's network stack, and plentiful peer-to-peer protocols from the past. Building large scale peer-to-peer systems has been complex and difficult in the last 15 years, and libp2p is a way to fix that. It is a "network stack" -- a protocol suite -- that cleanly separates concerns, and enables sophisticated applications to only use the protocols they absolutely need, without giving up interoperability and upgradeability. libp2p grew out of IPFS, but it is built so that lots of people can use it, for lots of different projects.
We will be writing a set of docs, posts, tutorials, and talks to explain what p2p is, why it is tremendously useful, and how it can help your existing and new projects.
Meanwhile, learn more about libp2p at [**libp2p.io**](https://libp2p.io) and follow our evolving documentation efforts at [**docs.libp2p.io**](https://docs.libp2p.io)
Learn more about libp2p at [**libp2p.io**](https://libp2p.io) and [**docs.libp2p.io**](https://docs.libp2p.io).
## Specification
@ -35,35 +30,3 @@ Meanwhile, learn more about libp2p at [**libp2p.io**](https://libp2p.io) and fol
## Community Discussion
Please visit our discussion forums at [**discuss.libp2p.io**](https://discuss.libp2p.io) to get help, ask questions about the past, present, and future of libp2p, and more.
## Stub Explanation
> Overview of the libp2p project
### libp2p is the networking layer of IPFS
![](img/libp2p.001.jpg)
### a collection of p2p protocols
![](img/libp2p.002.jpg)
### modules that satisfy interfaces (roles)
![](img/libp2p.003.jpg)
### The whole of IPFS ...
![](img/libp2p.004.jpg)
### ... is made up of libp2p modules
![](img/libp2p.005.jpg)
### libp2p has two impls so far: Go and JS
![](img/libp2p.006.jpg)
### libp2p cool demo: orbit.chat (p2p chat)
![](img/libp2p.007.jpg)

View File

@ -1,142 +0,0 @@
# libp2p Requirements: Roadmap to Feature Complete
## Table of Contents
- [Description](#description)
- [Cross Language Milestones](#cross-language-milestones)
- [libp2p Modules Implementations](#libp2p-modules-implementations)
- [Performance Milestones](#performance-milestones)
- [Polish Level](#polish-level)
## 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](#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: :green_apple: Done &nbsp; :lemon: In Progress &nbsp; :tomato: Missing &nbsp; :chestnut: Not planned
| libp2p Node | Go | JS - Node.js | JS - Browser | Rust | Python |
| -------------------------------------------- | :-----------: | :-------------: | :-------------: | :-----------: | :-----------: |
| **`libp2p`** | :green_apple: | :green_apple: | :green_apple: | :green_apple: | :green_apple: |
| Identify Protocol | Go | JS - Node.js | JS - Browser | Rust | Python |
| -------------------------------------------- | :-----------: | :-------------: | :-------------: | :-----------: | :-----------: |
| **`Identify`** | :green_apple: | :green_apple: | :green_apple: | :tomato: | :tomato: |
| Transport Protocols | Go | JS - Node.js | JS - Browser | Rust | Python |
| -------------------------------------------- | :-----------: | :-------------: | :-------------: | :-----------: | :-----------: |
| **`TCP`** | :green_apple: | :green_apple: | :green_apple: | :green_apple: | :lemon: |
| **`UTP`** | :green_apple: | :green_apple: | :green_apple: | :tomato: | :tomato: |
| **`UDP`** | :green_apple: | :tomato: | :tomato: | :tomato: | :tomato: |
| **`WebSockets`** | :green_apple: | :green_apple: | :green_apple: | :tomato: | :tomato: |
| **`WebRTC`** | :tomato: | :green_apple: | :green_apple: | :tomato: | :tomato: |
| **`SCTP`** | :tomato: | :tomato: | :tomato: | :tomato: | :chestnut: |
| **`Tor`** | :tomato: | :tomato: | :tomato: | :tomato: | :chestnut: |
| **`i2p`** | :tomato: | :tomato: | :tomato: | :tomato: | :chestnut: |
| **`cjdns`** | :tomato: | :tomato: | :tomato: | :tomato: | :chestnut: |
| **`Bluetooth LE`** | :tomato: | :tomato: | :tomato: | :tomato: | :chestnut: |
| **`Audio TP`** | :tomato: | :tomato: | :tomato: | :tomato: | :chestnut: |
| **`Zerotier`** | :tomato: | :tomato: | :tomato: | :tomato: | :chestnut: |
| **`QUIC`** | :tomato: | :tomato: | :tomato: | :tomato: | :chestnut: |
| Stream Muxers | Go | JS - Node.js | JS - Browser | Rust | Python |
| -------------------------------------------- | :-----------: | :-------------: | :-------------: | :-----------: | :-----------: |
| **`benchmarks`** | :green_apple: | :green_apple: | :green_apple: | :tomato: | :chestnut: |
| **`muxado`** | :green_apple: | :tomato: | :tomato: | :tomato: | :chestnut: |
| **`spdystream`** | :green_apple: | :tomato: | :tomato: | :tomato: | :chestnut: |
| **`multiplex`** | :green_apple: | :green_apple: | :green_apple: | :tomato: | :lemon: |
| **`spdy`** | :tomato: | :green_apple: | :green_apple: | :tomato: | :chestnut: |
| **`http2`** | :tomato: | :tomato: | :tomato: | :tomato: | :chestnut: |
| **`QUIC`** | :tomato: | :tomato: | :tomato: | :tomato: | :chestnut: |
| **`yamux`** | :green_apple: | :chestnut: | :chestnut: | :chestnut: | :tomato: |
| Switch | Go | JS - Node.js | JS - Browser | Rust | Python |
| -------------------------------------------- | :-----------: | :-------------: | :-------------: | :-----------: | :-----------: |
| **`Dialer stack`** | :green_apple: | :green_apple: | :green_apple: | :tomato: | :chestnut: |
| **`Switch`** | :green_apple: | :green_apple: | :green_apple: | :tomato: | :lemon: |
| NAT Traversal | Go | JS - Node.js | JS - Browser | Rust | Python |
| -------------------------------------------- | :-----------: | :-------------: | :-------------: | :-----------: | :-----------: |
| **`nat-pmp`** | :green_apple: | :tomato: | :tomato: | :tomato: | :tomato: |
| **`upnp`** | :green_apple: | :tomato: | :tomato: | :tomato: | :tomato: |
| **`ext addr discovery`** | :green_apple: | :tomato: | :tomato: | :tomato: | :chestnut: |
| **`STUN-like`** | :tomato: | :tomato: | :tomato: | :tomato: | :chestnut: |
| **`line-switch relay`** | :green_apple: | :tomato: | :tomato: | :tomato: | :chestnut: |
| **`pkt-switch relay`** | :tomato: | :tomato: | :tomato: | :tomato: | :chestnut: |
| Peer Discovery | Go | JS - Node.js | JS - Browser | Rust | Python |
| -------------------------------------------- | :-----------: | :-------------: | :-------------: | :-----------: | :-----------: |
| **`mDNS`** | :green_apple: | :green_apple: | :green_apple: | :tomato: | :tomato: |
| **`bootstrap list`** | :green_apple: | :green_apple: | :green_apple: | :tomato: | :green_apple: |
| **`DHT query`** | :green_apple: | :green_apple: | :green_apple: | :tomato: | :tomato: |
| **`PEX`** | :tomato: | :tomato: | :tomato: | :tomato: | :chestnut: |
| **`DNS`** | :tomato: | :tomato: | :tomato: | :tomato: | :chestnut: |
| Content Routing | Go | JS - Node.js | JS - Browser | Rust | Python |
| -------------------------------------------- | :-----------: | :-------------: | :-------------: | :-----------: | :-----------: |
| **`Kademlia DHT`** | :green_apple: | :green_apple: | :green_apple: | :tomato: | :tomato: |
| **`pub/sub`** | :tomato: | :tomato: | :tomato: | :tomato: | :tomato: |
| **`PHT`** | :tomato: | :tomato: | :tomato: | :tomato: | :chestnut: |
| Peer Routing | Go | JS - Node.js | JS - Browser | Rust | Python |
| -------------------------------------------- | :-----------: | :-------------: | :-------------: | :-----------: | :-----------: |
| **`Kademlia DHT`** | :green_apple: | :green_apple: | :green_apple: | :tomato: | :tomato: |
| **`pub/sub`** | :tomato: | :tomato: | :tomato: | :tomato: | :tomato: |
| **`PHT`** | :tomato: | :tomato: | :tomato: | :tomato: | :chestnut: |
| Exchange | Go | JS - Node.js | JS - Browser | Rust | Python |
| -------------------------------------------- | :-----------: | :-------------: | :-------------: | :-----------: | :-----------: |
| **`HTTP`** | :green_apple: | :green_apple: | :green_apple: | :tomato: | :chestnut: |
| **`Bitswap`** | :green_apple: | :green_apple: | :green_apple: | :tomato: | :chestnut: |
| **`Bittorrent`** | :green_apple: | :green_apple: | :green_apple: | :tomato: | :chestnut: |
| Consensus | Go | JS - Node.js | JS - Browser | Rust | Python |
| -------------------------------------------- | :-----------: | :-------------: | :-------------: | :-----------: | :-----------: |
| **`Paxos`** | :chestnut: | :chestnut: | :chestnut: | :chestnut: | :chestnut: |
| **`Raft`** | :tomato: | :tomato: | :tomato: | :tomato: | :chestnut: |
| **`PBTF`** | :tomato: | :tomato: | :tomato: | :tomato: | :chestnut: |
| **`Nakamoto`** | :tomato: | :tomato: | :tomato: | :tomato: | :chestnut: |
### 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

View File

@ -1,7 +0,0 @@
# libp2p Roadmap
> We track the development of the libp2p project through Github issues and [Waffle.io](https://waffle.io/libp2p/libp2p). See our waffle board at: [https://waffle.io/libp2p/libp2p](https://waffle.io/libp2p/libp2p)
For higher level planning, we use [OKRs](https://github.com/libp2p/pm/tree/master/OKRs).
For feature completeness, we are tracking in [REQUIREMENTS.md](https://github.com/libp2p/libp2p/blob/master/REQUIREMENTS.md).