We are excited to share with you all the progress that has been made on go-libp2p in 2022. It has been a year full of exciting new features, code organization, and a growing team of talented contributors.
Throughout the year, we released seven updates to go-libp2p ranging from v0.18.0 to v0.24.0, with a number of patch releases in between. In total, we had 21 contributors to the project in 2022.
New Features
Transport Protocols
WebTransport
One of the most exciting developments of the year was the release of the WebTransport protocol in v0.23.0. WebTransport enables browser-to-server connectivity in go-libp2p when paired with a peer running js-libp2p-webtransport in the browser.
To learn more about this exciting feature, check out our blog post on WebTransport in libp2p and the WebTransport documentation.
WebRTC (Browser to Server)
In addition to WebTransport, the go-libp2p team also began work on enabling the WebRTC transport, in partnership with Little Bear Labs. This new transport allows for connectivity between go-libp2p server nodes and js-libp2p browser nodes.
QUIC Versions
We also made developments to the existing QUIC implementation in go-libp2p. In v0.24.0, go-libp2p changed to properly distinguish between QUIC versions (in their multiaddresses) and changed the default dial behavior to prefer the new QUIC version.
DoS Protection & Resource Management
We added the Resource Manager component in v0.18.0. This feature allows developers to configure limits on connections, streams, and memory usage.
Faster Handshakes
In v0.24.0, go-libp2p added optimized muxer selection via TLS' ALPN extension and Noise extensions. This resulted in saving one round trip during connection establishment.
AutoRelay discovers Circuit Relay v2
In v0.19.0, we enabled AutoRelay to discover nodes running Circuit Relay v2, improving the overall performance and reliability of the network.
Project Improvements
Interoperability Testing
We began a concerted effort to improve interoperability between go-libp2p and libp2p implementations in other languages. The details can be seen in the shared libp2p/test-plans Roadmap.
Monorepo Consolidation
go-libp2p is a monorepo as of the v0.22.0 release. This improvement makes changes and improvements across go-libp2p much easier.
Plans for 2023
Key areas of focus:
- Interoperability and end-to-end testing
- Expanding seamless browser connectivity
- Adding support for libp2p + HTTP
- Optimizing performance
- Better observability with metrics
Resources and how you can help contribute
We always welcome contributions from the community! Check out any of these help wanted/good first issues to start contributing.
Thank you for reading!