Thanks for your interest in contributing. Suffete is a young, fast-moving project, and help is very welcome. Please read this document first so we can keep the work productive.
This project adheres to the Code of Conduct. By participating, you are expected to uphold it.
Before filing an issue, please check whether it is already reported. When opening a new one, include enough information to reproduce the behavior. Ideally, a small Rust snippet that calls into suffete and exhibits the problem, plus what you expected to happen.
For bugs, use the bug report template. For feature ideas, use the feature request template.
- Discuss first. For anything beyond a small fix, open an issue before starting work. The type system is in active design and the answer to "is this the right shape?" often is not obvious.
- Fork and clone the repository.
- Set up your environment. You need a recent Rust toolchain (see
rust-versioninCargo.toml) and Just. A Nixflake.nixis provided. Runnix develop, or use direnv, to drop into a reproducible shell. - Create a branch off
main. - Make your change.
- Verify. Run
just testandjust checklocally before pushing. - Commit with a clear, present-tense message describing why the change is being made.
- Push and open a pull request.
- Tests are required for bug fixes and new functionality. Run
just testand make sure the existing suite still passes. - Formatting and lints are enforced by CI. Run
just check(orjust fixto auto-apply what can be auto-applied) before pushing. - Authorship matters. Every commit on a pull request must be authored by a real human we can reach. AI assistance is welcome, but the commit author and any
Co-Authored-By:trailers must be people, not models. CI will reject the PR otherwise. - License. By submitting a pull request, you agree that your contribution is dual-licensed under MIT and Apache-2.0, matching the rest of the repository.
Do not open public issues for security vulnerabilities. See SECURITY.md for the disclosure process.