Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

chore(roadmap): move webrtc to done #549

Merged
merged 2 commits into from
Jun 1, 2023
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
45 changes: 23 additions & 22 deletions ROADMAP.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,6 @@ third-party data ownership.
- [⏱ Full Observability](#-full-observability)
- [🧪 Automated compatibility testing](#-automated-compatibility-testing)
- [Stream Migration Protocol](#stream-migration-protocol)
- [WebRTC](#webrtc)
- [🤖 libp2p as a Wasm library](#-libp2p-as-a-wasm-library)
- [🤝 Low latency, efficient connection handshake](#-low-latency-efficient-connection-handshake)
- [🛣️ Peer Routing Records](#️-peer-routing-records)
Expand All @@ -38,6 +37,7 @@ third-party data ownership.
- [🏹 RPC and other common node communication patterns](#-rpc-and-other-common-node-communication-patterns)
- [Done](#done)
- [🕸 Hole punching on TCP and QUIC](#-hole-punching-on-tcp-and-quic)
- [WebRTC](#webrtc)

## Core Tenets
Before we dive into what libp2p should support and enable, let's outline the core tenets that underpin the project. As maintainers, we commit to ensuring libp2p is:
Expand Down Expand Up @@ -265,27 +265,6 @@ connection to a direct connection.
- Tracking issue https://github.com/libp2p/specs/issues/328
- Specification draft https://github.com/libp2p/specs/pull/406#discussion_r852835671

### WebRTC

**Status**: In progress

**What?** WebRTC is a transport protocol supported by all major browsers. Those
browsers allow the establishment of connections to remote endpoints that don't
have a TLS certificate signed by a trusted certificate authority. In addition
WebRTC includes hole punching capabilities.

**Why?** In most p2p networks the majority of nodes do not have a signed TLS
certificate. With WebRTC browsers will thus be able to connect to these
previously unreachable nodes. In addition, being able to hole punch allows
browsers to connect to nodes behind firewalls and NATs e.g. other browsers. Note
that the former, namely connecting without trusted TLS certificate, can as well
be achieved with the [WebTransport](#✈️-webtransport) protocol.

**Links:**

- Tracking issue https://github.com/libp2p/specs/issues/220
- Specification draft https://github.com/libp2p/specs/pull/412

### 🤖 libp2p as a Wasm library

**What?** This point encompasses two things:
Expand Down Expand Up @@ -666,3 +645,25 @@ connect to the rest of the libp2p network.
- [webtransport-go](https://github.com/marten-seemann/webtransport-go/)
- [go-libp2p WebTransport](https://github.com/libp2p/go-libp2p/tree/master/p2p/transport/webtransport)
- [js-libp2p WebTransport](https://github.com/libp2p/js-libp2p-webtransport/)

### WebRTC

**Status**: Done

**What?** WebRTC is a transport protocol supported by all major browsers. Those
browsers allow the establishment of connections to remote endpoints that don't
have a TLS certificate signed by a trusted certificate authority. In addition
WebRTC includes hole punching capabilities.

**Why?** In most p2p networks the majority of nodes do not have a signed TLS
certificate. With WebRTC browsers will thus be able to connect to these
previously unreachable nodes. In addition, being able to hole punch allows
browsers to connect to nodes behind firewalls and NATs e.g. other browsers. Note
that the former, namely connecting without trusted TLS certificate, can as well
be achieved with the [WebTransport](#✈️-webtransport) protocol.

**Links:**

- Tracking issue https://github.com/libp2p/specs/issues/220
- [`/webrtc` specification](./webrtc/webrtc.md)
- [`/webrtc-direct` specification](./webrtc/webrtc-direct.md)