Skip to content

Latest commit

 

History

History
48 lines (31 loc) · 2.22 KB

File metadata and controls

48 lines (31 loc) · 2.22 KB

Contributing to pea2pea

Thank you for your interest in contributing to pea2pea!

To maintain the library's stability, performance, and simplicity, we adhere to a strict scope policy. Please read this document carefully before opening a Pull Request.

📐 Design Philosophy

pea2pea is designed as a micro-kernel for P2P networking. It provides the absolute minimum required to build a network: connection pooling, stream handling, and framing.

It is not a framework. It does not enforce specific high-level protocols (like Gossipsub, Kademlia, etc.). Those belong in the application layer (user-land), not in this library.

✅ What We Accept

We welcome contributions that harden the existing core without expanding the API surface area:

  1. Bug Fixes: Resolving panics, race conditions, or logic errors.
  2. Performance Improvements: Optimizations that reduce memory footprint or CPU usage.
  3. Documentation: Clarifications, typo fixes, or additional examples.
  4. Tests: New cases for any untested features, improvements to structure.
  5. Features impossible to implement by the user: Select enhancements that cannot be introduced outside the library.

❌ What We Do Not Accept

To keep the library lightweight and maintainable, we generally reject:

  1. "Userland" Features: If it can be implemented on top of pea2pea, it belongs in your application, not here.
  2. Helper Functions: Quality-of-life abstractions often lead to bloat. We prefer explicit, low-level control.
  3. Specific Protocols: Implementations of specific RPC or Gossip algorithms.
  4. New Dependencies: We strive to keep the dependency tree minimal.

📝 How to Contribute

  1. Open an Issue First: Unless it is a trivial typo fix, please open an issue to discuss your proposed change. This saves your time if the change falls outside our scope.

  2. Run Tests: Ensure all tests pass locally.

    cargo test -p tests
  3. Format Code: Ensure your code is formatted correctly, and that clippy is happy.

    cargo fmt --all -- --check
    cargo clippy --workspace --all-targets -- -D warnings

Thank you for helping us keep pea2pea robust and reliable!