Thank you for considering contributing to hanko
!
This document intends to make contribution more accessible while aligning expectations.
Please don't hesitate to open issues and PRs regardless if anything is unclear.
By contributing to hanko
, you agree that your code will be licensed under the terms of the MIT License without any additional terms or conditions.
To gain an overview of hanko
, please read the documentation.
- Contributions of all sizes are welcome, including single line grammar / typo fixes.
- For new features, documentation and tests are a requirement.
- Changes must pass CI. PRs with failing CI will be treated as drafts unless you explicitly ask for help.
- Simplicity is a core objective of
hanko
. Please open an issue before working on a new feature to discuss it.
For users of IDEs with support for devcontainers, it's usage is recommended.
Ensure a recent version of rustup is available and optionally install just
.
hanko
uses rustfmt
for uniform fomatting and clippy
for basic linting and enforcement of best practices. The just
lint
recipe can be used to run both.
just lint
In addition to basic formatting and linting, a high code coverage should be maintained.
just test
To ensure that hanko does not regress in performance, benchmarks are run on every PR. To execute them locally, run cargo bench
.
To release a new version of hanko
, perform the following steps.
-
Ensure the unreleased section of the CHANGELOG contains all relevant changes.
-
Pick a new version according to the SemVer 2.0 spec and set it in your environment.
export NEW_VERSION=0.5.0
-
Checkout a new branch.
git switch -c bump-version-$NEW_VERSION
-
Use the just recipe to bump the version. This will create the necessary commits as well as a pull request using the GitHub CLI.
just bump-version $NEW_VERSION
-
Once the branch is merged, a GitHub release for the new version containing the recent changes can be created automatically.
just release-latest-version $NEW_VERSION