Files
fips/CONTRIBUTING.md
jo 4bc30d2b8a doc: improve contributor setup guidance
Expand CONTRIBUTING.md with detailed build prerequisites, Rust toolchain
setup (pinned to 1.94.0), and step-by-step first build instructions.
Add contributing link to README.
2026-03-27 01:09:25 +00:00

2.4 KiB

Contributing to FIPS

Getting Started

Clone the repo:

git clone https://github.com/jmcorgan/fips.git
cd fips

Before changing code, read the protocol docs in this order:

Prerequisites

  • Rust 1.94.0 and Linux with TUN support
  • Use the pinned toolchain from rust-toolchain.toml for deterministic builds
  • For the default BLE-enabled build on Debian/Ubuntu: sudo apt install bluez libdbus-1-dev pkg-config
  • Docker is required for the integration harnesses under testing/

If you do not want BLE locally, build and test without default features:

cargo build --no-default-features --features tui
cargo test --no-default-features --features tui

Local Verification

Choose the narrowest check that matches your change:

  • Docs-only changes:
git diff --check
  • Normal code changes:
cargo build
cargo test
cargo clippy --all -- -D warnings
  • Local CI-style unit test run:
./testing/ci-local.sh --test-only
  • Narrow integration run for transport, routing, Docker, or packaging-sensitive changes:
./testing/ci-local.sh --only static-mesh

See testing/README.md for the available integration and chaos harnesses.

Filing Issues

  • Search existing issues before opening a new one.
  • Include FIPS version, Rust version, and OS.
  • For bugs: steps to reproduce, expected vs actual behavior.

Pull Requests

  • All PRs must pass cargo build, cargo test, and cargo clippy --all -- -D warnings.
  • Keep commits focused — one logical change per commit.
  • Add tests for new functionality.
  • Reference relevant design docs if the change touches protocol behavior.
  • Update docs in the same change when you modify:
    • protocol or routing behavior
    • wire formats
    • configuration shape or defaults
    • operational workflows or testing instructions

In practice this usually means updating one or more of:

Questions

Open a GitHub issue for design or implementation questions.