Skip to content

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:

uv run --with-requirements docs/requirements.txt mkdocs serve

Or in a virtualenv, if you prefer:

pip install -r docs/requirements.txt
mkdocs serve

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:

uv run --with-requirements docs/requirements.txt mkdocs build --strict

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.