mirror of
https://github.com/jmcorgan/fips.git
synced 2026-07-22 07:48:26 +00:00
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.
2.4 KiB
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:
- docs/design/README.md
- docs/design/fips-intro.md
- the specific design doc for the behavior you are touching
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, andcargo 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:
- docs/design/fips-mesh-operation.md
- docs/design/fips-wire-formats.md
- docs/design/fips-configuration.md
- README.md
- testing/README.md
Questions
Open a GitHub issue for design or implementation questions.