Thank you for your interest in contributing to our project! This document provides guidelines and steps for contributing.
- Create a Pull Request for any contribution. Pull requests should include clear descriptions.
- Pull requests titles should follow Conventional Commits specifications. Pull requests may contain any number of commits. Commit messages do not need to follow Conventional Commits.
- Everything must be documented following Rust conventions.
- All new functionality must include relevant unit and integration tests.
- Please disclose AI use in your contributions.
- Rust toolchain (
rustup,cargo) – pinned viarust-toolchain.toml - Foundry (forge/cast/anvil):
curl -L https://foundry.paradigm.xyz | bashthenfoundryup - For running the Rust services look at the specific READMEs of each service.
The Rust crates are logically separated to ensure proper integration without feature flag conflicts:
world-id-primitives
└── functionality-specific crates
└── world-id-core
world-id-primitives: Foundation layer containing only raw types with minimal implementation logic except for hashing mechanisms. Has an optionalopenapifeature for OpenAPI schema derives.- Functionality-specific crates: Providing focused use cases for authenticator, issuer, and RP operations.
world-id-core: Top-level integration layer which exposes all functionality.
Versioning and releases are managed separately for crates and services.
Crate releases are automated using release-plz.
How it works:
- Commits to
mainfollow conventional commits. To override the version, simply update the PR. - release-plz creates/updates a release PR with:
- Version bumps in
Cargo.tomlfiles - Updated
CHANGELOG.mdfor each crate
- Version bumps in
- When the release PR is merged:
- Crates are published to crates.io using trusted publishing
- GitHub releases are created for each updated crate (e.g.,
world-id-core-v0.2.0)
Please note that this project is released with a Code of Conduct. By participating in this project, you agree to abide by its terms.
Feel free to reach out to the maintainers if you have any questions.
Thank you for contributing!