chore(roadmap): update

- Update target completions.
- Introduce QUIC hole punching item.
- Add address pipeline and AutoNATv2.
- Reword WebRTC item (not move to str0m) to entail both `/webrtc` and `/webrtc-direct`.

Pull-Request: #3958.
This commit is contained in:
Max Inden
2023-05-26 03:42:36 +02:00
committed by GitHub
parent 801023f468
commit a5a00205c2

View File

@ -12,7 +12,7 @@ roadmap](https://github.com/libp2p/specs/blob/master/ROADMAP.md).
| Category | Status | Target Completion | Tracking | Dependencies | Dependents |
|--------------|-------------|-------------------|---------------------------------------------------|-----------------------------------------------------------------|------------|
| Optimization | in progress | Q1/2023 | https://github.com/libp2p/rust-libp2p/issues/2032 | [Cross behaviour communication](#cross-behaviour-communication) | |
| Optimization | in progress | Q2/2023 | https://github.com/libp2p/rust-libp2p/issues/2032 | [Cross behaviour communication](#cross-behaviour-communication) | |
Kademlia client mode will enhance routing table health and thus have a positive impact on all
Kademlia operations.
@ -21,10 +21,19 @@ Kademlia operations.
| Category | Status | Target Completion | Tracking | Dependencies | Dependents |
|--------------|--------|-------------------|---------------------------------------------------|--------------|------------|
| Connectivity | todo | Q2/2023 | https://github.com/libp2p/rust-libp2p/issues/2883 | | |
| Connectivity | todo | Q3/2023 | https://github.com/libp2p/rust-libp2p/issues/2883 | | |
We added alpha support for QUIC in Q4/2022 wrapping `quinn-proto`. Evaluate using `quinn` directly, replacing the wrapper.
## QUIC - implement hole punching
| Category | Status | Target Completion | Tracking | Dependencies | Dependents |
|--------------|--------|-------------------|---------------------------------------------------|--------------|------------|
| Connectivity | todo | Q3/2023 | https://github.com/libp2p/rust-libp2p/issues/2883 | | |
Add hole punching support for QUIC. See also [DCUtR specification on usage with
QUIC](https://github.com/libp2p/specs/blob/master/relay/DCUtR.md#the-protocol).
## Attempt to switch from webrtc-rs to str0m
| Category | Status | Target Completion | Tracking | Dependencies | Dependents |
@ -33,11 +42,28 @@ We added alpha support for QUIC in Q4/2022 wrapping `quinn-proto`. Evaluate usin
Reduce maintenance burden and reduce dependency footprint.
## Optimize Hole punching
## Address pipeline
| Category | Status | Target Completion | Tracking | Dependencies | Dependents |
|--------------|--------|-------------------|----------|--------------|------------|
| Optimization | todo | Q2/2023 | | | |
| Connectivity | todo | Q4/2023 | | AutoNATv2 | AutoNATv2 |
Be smart on address prioritization. go-libp2p made a lot of progress here. Lots to learn. See https://github.com/libp2p/go-libp2p/issues/2229 and https://github.com/libp2p/rust-libp2p/issues/1896#issuecomment-1537774383.
## AutoNATv2
| Category | Status | Target Completion | Tracking | Dependencies | Dependents |
|--------------|--------|-------------------|----------|------------------|------------------|
| Connectivity | todo | Q4/2023 | | Address pipeline | Address pipeline |
Implement the new AutoNAT v2 specification. See https://github.com/libp2p/specs/pull/538.
## Optimize Hole punching
| Category | Status | Target Completion | Tracking | Dependencies | Dependents |
|--------------+--------+-------------------+----------+--------------+------------|
| Optimization | todo | | | | |
We released hole punching support with [rust-libp2p
`v0.43.0`](https://github.com/libp2p/rust-libp2p/releases/tag/v0.43.0), see also
@ -51,8 +77,8 @@ hole punching stack.
## Improved Wasm support
| Category | Status | Target Completion | Tracking | Dependencies | Dependents |
|----------------------|--------|-------------------|---------------------------------------------------|--------------|----------------------------------------------|
| Developer ergonomics | todo | Q3/2023 | https://github.com/libp2p/rust-libp2p/issues/2617 | | [WebRTC](#webrtc-support-browser-to-browser) |
|----------------------+--------+-------------------+---------------------------------------------------+--------------+----------------------------------------------|
| Developer ergonomics | todo | | https://github.com/libp2p/rust-libp2p/issues/2617 | | [WebRTC](#webrtc-support-browser-to-browser) |
The project supports Wasm already today, though the developer experience is cumbersome at best.
Properly supporting Wasm opens rust-libp2p to a whole new set of use-cases. I would love for this to
@ -60,15 +86,17 @@ happen earlier. Though (a) I think we should prioritize improving existing funct
functionality and (b) we don't have high demand for this feature from the community. (One could
argue that that demand follows this roadmap item and not the other way round.)
## WebRTC support (browser-to-browser)
## WebRTC in the browser via WASM
| Category | Status | Target Completion | Tracking | Dependencies | Dependents |
|--------------|--------|-------------------|--------------------------------------------|-------------------------------------------------------------------------------------------|------------|
| Connectivity | todo | Q3/2023 | https://github.com/libp2p/specs/issues/475 | [Improved WASM support](#improved-wasm-support), https://github.com/libp2p/specs/pull/497 | |
|--------------+--------+-------------------+--------------------------------------------+-------------------------------------------------------------------------------------------+------------|
| Connectivity | todo | | https://github.com/libp2p/specs/issues/475 | [Improved WASM support](#improved-wasm-support), https://github.com/libp2p/specs/pull/497 | |
Once WebRTC for browser-to-server is complete, we can begin work on **browser-to-browser** and complete the WebRTC connectivity story.
We need to improve rust-libp2p's WASM story first.
Use the browser's WebRTC stack to support
[`/webrtc`](https://github.com/libp2p/specs/blob/master/webrtc/webrtc.md) and
[`/webrtc-direct`](https://github.com/libp2p/specs/blob/master/webrtc/webrtc-direct.md) from within
the browser using rust-libp2p compiled to WASM. This makes rust-libp2p a truly end-to-end solution,
enabling users to use rust-libp2p on both the client (browser) and server side.
## WebTransport