You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Building large scale peer-to-peer systems has been complex and difficult in the last 15 years and libp2p is a way to fix that. It strives to be a modular stack with secure defaults and useful protocols, while remaining open and extensible.
This is a native Nim implementation, using chronos for asynchronous execution. It's used in production by a few projects
If you only want to run tests that don't require go-libp2p-daemon, use:
nimble testnative
For a list of all available test suites, use:
nimble tasks
Contribute
The libp2p implementation in Nim is a work in progress. We welcome contributors to help out! Specifically, you can:
Go through the modules and check out existing issues. This would be especially useful for modules in active development. Some knowledge of IPFS/libp2p may be required, as well as the infrastructure behind it.
Perform code reviews. Feel free to let us know if you found anything that can a) speed up the project development b) ensure better quality and c) reduce possible future bugs.
Add tests. Help nim-libp2p to be more robust by adding more tests to the tests folder.
Small PRs. Try to keep PRs atomic and digestible. This makes the review process and pinpointing bugs easier.
Join the Conversation. Connect with other contributors in our community channel. Ask questions, share ideas, get support, and stay informed about the latest updates from the maintainers.
(open a pull request if you want to be included here)
Stability
nim-libp2p has been used in production for over a year in high-stake scenarios, so its core is considered stable.
Some modules are more recent and less stable.
The versioning follows semver, with some additions:
Some of libp2p procedures are marked as .public., they will remain compatible during each MAJOR version
The rest of the procedures are considered internal, and can change at any MINOR version (but remain compatible for each new PATCH)
We aim to be compatible at all time with at least 2 Nim MINOR versions, currently 1.6 & 2.0