List external ressources / tutorials on rust-libp2p
In the last community call, the topic of external resources on (rust-)libp2p came up.
There are quite a few useful ones out there, e.g.:
I wanted to open the discussion on whether we want do include links to such resources in our repo, e.g. in as a ## External Resources section in our examples/README.md.
I think they can help newcomers quite a bit.
However, because they are external, there is also the risk of them being or becoming outdated and not working with our current API anymore.
Thank you for bringing up the topic of external resources for rust-libp2p. I completely agree that well-curated external resources can be incredibly valuable for newcomers and even experienced developers looking to deepen their understanding of peer-to-peer networking with Rust. Resources like tutorials and live coding sessions often provide practical insights and step-by-step guidance that can complement our official documentation and examples. Wish to suggest some more external resources, which we may include:
-
Tutorials
-
Playing with Decentralized P2P Network: https://medium.com/lifefunk/playing-with-decentralized-p2p-network-rust-libp2p-stacks-2022abdf3503
-
Exploring Rust libp2p: https://dev.to/oudwud/exploring-rust-libp2p-4pd4
-
Learn libp2p in Rust: https://redandgreen.co.uk/learn-libp2p-in-rust/rust-programming/
-
-
Video Guides
-
Full Stack Rust libp2p Apps with WASM and WebRTC: https://www.youtube.com/watch?v=cROI6RMyQ70
-
Introduction to Rust libp2p: https://www.youtube.com/watch?v=HqSXFlCwgMY
-
-
Blog Posts
-
Libp2p Demo utilizing Rust: https://koonts.net/articles/rust-libp2p
-
A Rusty Bootstrapper: https://blog.ipfs.tech/2023-rust-libp2p-based-ipfs-bootstrap-node/
-
Decentralized Networking with libp2p Rust Library: https://blog.devgenius.io/decentralized-networking-with-the-libp2p-rust-library-ef4c06988193
-
-
Advanced/Specialized Topics
- Anonymous P2P Apps in Rust: https://comit.network/blog/2020/07/02/tor-poc/
As discussed in yesterday's libp2p Community Call and recent maintainer's call, I'd like to share some feedback and thoughts on including external resources to scale developer adoption:
Pros of Including External Resources: Accelerated Learning: Community tutorials offer hands-on experiences that can significantly shorten the learning curve for new contributors. Broader Perspectives: External resources explore diverse use cases, design choices, and problem-solving approaches beyond our core documentation. Community Engagement: Showcasing community-created content promotes involvement and highlights real-world applications.
Managing the Risk of Outdated Content: To address concerns about resource compatibility, wish to propose: Regular Review Process: Conduct periodic reviews (quarterly/semi-annually) to check resource compatibility with the current rust-libp2p API. Clear Disclaimer: Add a prominent note explaining that external resources may not reflect the latest API changes. Community Feedback Loop: Create a dedicated channel for reporting outdated links and suggesting new resources.
Recommended Curation Strategy:
- Implement quarterly resource reviews
- Include clear disclaimers about potential API changes
- Foster community contributions and feedback
- Maintain rigorous technical accuracy checks
Adding an External Resources section to examples/README.md can enhance the onboarding experience and provide valuable learning paths for developers. By implementing periodic reviews, clear disclaimers, and community-driven curation, we can mitigate the risk of outdated content while maximizing the value of these resources.
Thoughts and further input are welcome :)
This is in continuation with my earlier memo on adding external resoures.
Wish to add that for RetroPGF developers with working experience in Rust, we can focus on key challenges and project opportunities and can add tutorials, blog articles, wiki/github pages or external resources for the same:
Potential Project Areas:
Reliability & Security Audits Identifying and addressing vulnerabilities in libp2p components.
Resource Management Enhancements Simplifying resource handling for efficiency.
NAT Traversal Improvements Strengthening NAT traversal mechanisms for broader adoption.
Browser Support Optimization Improving browser performance for truly decentralized applications.
Enhanced RPC Tooling Creating user-friendly libraries with secure communication defaults.
This is in continuation with my earlier memo on adding external resoures. Based on the recent maintainer's call meeting, wish to share a documentation template which PLDG-cohort-2 members can use to describe a pull request for faster review during the libp2p maintainers' calls. It ensures clarity and professionalism while encouraging collaboration: please find the documentation link at https://docs.google.com/document/d/13xWvDLAucFSC6DXI_2JriKmSSw9bTJGqlJjo01_Ejgg/edit?usp=sharing
Reference: chain-gossip as an External Example for Beginner Developers and PLDG Cohort Members
Following up on issue #5717, I’d like to highlight [[chain-gossip](https://github.com/SAMAD101/chain-gossip)] as a valuable external example for new OSS developers using rust-libp2p and PLDG cohort members exploring decentralized gossip-based messaging in rust-libp2p.
Why chain-gossip?
The chain-gossip project, originally developed by @SAMAD101, demonstrates a structured approach to implementing a gossip protocol using libp2p. It provides a practical example of how nodes can exchange and propagate blockchain-related messages efficiently over a peer-to-peer network.
Key Highlights:
- Gossip-Based Propagation: Implements a lightweight gossip network to distribute blockchain data among peers.
-
libp2p Integration: Uses
rust-libp2pcomponents such asgossipsubfor decentralized messaging. - Custom Chain Messaging: Demonstrates handling of blockchain-specific messages, useful for PLDG members working on chain synchronization or consensus models.
Relevance to Issue #5717:
For those contributing to issue #5717, chain-gossip provides a working reference for integrating libp2p gossiping mechanisms into real-world applications. It can serve as a basis for improving documentation and guiding new contributors in understanding decentralized message propagation within the libp2p framework.
Next Steps:
-
PLDG Cohort Members: I encourage you to review
chain-gossipto better understand libp2p-based gossip implementations. -
Maintainability & Enhancements: Feedback is welcome on how this example can be further refined or adapted to address gaps in the
rust-libp2pdocumentation. -
Future Contributions: If applicable, we can collaborate on documenting learnings from
chain-gossipwithin the officialrust-libp2prepository.
Would love to hear thoughts from maintainers and contributors! 🚀