Skip to content

Contributing

We develop in the open. This page is the public mirror of CONTRIBUTING.md in the engine repo.

TL;DR

  1. Read the RFCsdocs/rfc/. They are the canonical source of design decisions on the storage engine, query engine, and surrounding subsystems.
  2. Open issues to discuss before sending large PRs.
  3. Small PRs are welcome any time — typo fixes, docs improvements, perf tweaks, test additions.

Workflow

  • main is the development branch. Releases are tagged.
  • Every PR runs cargo fmt --check, cargo clippy --workspace --all-targets -- -D warnings, and cargo test --workspace.
  • Commits should be signed (git commit -S).
  • PR titles follow Conventional Commits: feat:, fix:, docs:, refactor:, test:, bench:, chore:.

Coding standards

  • Rust edition 2021, MSRV 1.85 (kept current).
  • unsafe only in hot paths with documented invariants and // SAFETY: comments.
  • All public APIs documented (cargo doc --workspace --no-deps must succeed).
  • Errors via thiserror; avoid anyhow in library crates (OK in binaries / tests).
  • Tracing instrumentation on pub async functions (#[tracing::instrument]).
  • Tests live next to code (#[cfg(test)] mod tests) for unit; integration tests in the crate’s tests/ directory.

Testing

  • Property tests with proptest for invariants.
  • Loom for concurrency-critical code paths where appropriate.
  • Local integration with an S3-compatible endpoint via docker compose -f tests/docker-compose.s3.yml up (LocalStack).
  • Benchmarks with criterion; results expected to be reproducible.

Communication

See also