Contributing¶
Help is welcome at any level — whether you are new to Rust or to DNS, or have run BIND for twenty years. Fixing a typo, sharpening an error message, or reporting something that confused you all count.
Getting started¶
You need Rust 1.94 or newer and the native build dependencies — a C compiler, pkg-config, and the OpenSSL headers — listed per platform in Building from Source. Tests use temporary SQLite databases and local processes by default. Docker is needed for the optional DNS/database integration mode and the benchmark suite.
git clone https://github.com/kweonminsung/bindizr.git
cd bindizr
cargo build -p bindizr
cargo test --workspace --all-features -- --test-threads=1
Tests run single-threaded; .cargo/config.toml sets this for local runs,
and the command above makes it explicit. For Docker integration tests, see
the end-to-end test guide.
cargo +nightly fmt formats the code (the config uses nightly-only options),
and cargo clippy --workspace catches the rest.
Editing these docs¶
The site is MkDocs Material, built from docs/ in the main repository. With
uv there is nothing to install or activate:
Or in a virtualenv, if you prefer:
Use the pinned versions either way — CI builds with --strict, so a page that
renders against a different Material release can still fail the build.
Check the site and internal links before submitting:
Every page has an edit link in the top right that opens the corresponding file on GitHub.
docs/openapi.yaml is generated, not written
The API reference comes from the #[utoipa::path] annotations in
crates/bindizr/src/api/. Change the annotations, then regenerate the spec
from a Bindizr running with api.openapi_enabled = true — never edit the
YAML by hand.
The rest¶
The full contributor guide — issue templates, pull-request conventions, and the project rules a review will check against — lives in CONTRIBUTING.md.