Switch from `webrtc-rs` to `str0m`
Nobody has claimed this yet.
- Dominant language
- Rust
- Stars
- 5.6k
- Forks
- 1.3k
- Avg merge
- 8h 47m
- Merged PRs (30d)
- 19
Description
Description
The webrtc-rs implementation has a few fundamental issues due to its design. async callbacks require locks and prevent the idiomatic use of &mut. This results in problems such as https://github.com/webrtc-rs/webrtc/issues/413 which currently prevent us from upgrading to the latest version: https://github.com/libp2p/rust-libp2p/pull/3552
The new kid on the block is str0m, a sans IO implementation of the webrtc stack: https://github.com/algesten/str0m
In the tests, it looks like they already support data channels, meaning we might be able to replace webrtc with it.
Motivation
webrtcis an extremely heavy dependency and it bloats our dependency tree- It doesn't follow idiomatic Rust and was hard to integrate into our codebase
- From the above follows: Easier maintenance
- A production-grade webrtc implementation
Related issues:
Are you planning to do it yourself in a pull request?
No.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
The issue names no files or tests in rust-libp2p. Start by locating the current webrtc dependency and data-channel integration, then review the str0m tests referenced in the issue. Done means replacing the existing implementation with str0m while preserving supported data-channel behavior and reducing the dependency burden.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- rust
- Domain
- audio-video-rtc, networking
- Issue type
- Refactor
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100