Thank you for your interest in contributing to cel-rust! This document outlines our contribution policies and guidelines.
Please open an issue first before working on new features. The project maintainers are moving quickly and making large changes as we work toward full CEL spec compliance. Your PR might:
- Overlap with existing work already in progress
- Move in a direction that conflicts with planned changes
- Be affected by upcoming refactoring
Opening an issue allows us to coordinate and ensure your effort is well-spent. We appreciate your understanding!
When contributing to cel-rust, please keep in mind our project priorities, in order:
-
Spec Compliance — Full conformance with the CEL specification is our primary goal. Correctness and compatibility come first.
-
User Experience — The library should be ergonomic, well-documented, and easy to integrate into Rust projects.
-
Performance — We care about performance, but not at the expense of correctness or usability.
These priorities guide our decision-making. For example, if a contribution improves performance but breaks spec compliance, we'll prioritize the spec.
Important
AI-assisted code contributions are allowed but must be disclosed in your pull request.
If you use any kind of AI assistance (e.g., GitHub Copilot, ChatGPT, Claude, etc.) while contributing, you must:
- Disclose this in your PR description, including the extent of AI usage (e.g., "Used Copilot for autocomplete" or "Consulted ChatGPT for algorithm design")
- Test your changes thoroughly — you are responsible for understanding and validating the AI-generated code
- Be able to explain and defend the changes — maintainers may ask questions about the implementation
Example disclosure:
This PR was written with assistance from GitHub Copilot for boilerplate code.
Or:
I consulted Claude to understand the CEL spec requirements, but wrote the implementation myself.
- Human accountability — You must understand the code you're submitting
- AI assistance ≠ AI generation — We expect significant human involvement and oversight
- Code only — AI-generated documentation, commit messages, and PR descriptions should be reviewed and edited by you
- PRs where the contributor cannot explain or defend the implementation
- AI-generated responses in issues and discussions (please write in your own words)
- Completely AI-generated code with no human understanding or testing
Note
Trivial AI features like tab completion don't need to be disclosed. When in doubt, disclose it.
Failure to disclose AI assistance is disrespectful to maintainers and makes it difficult to properly review your contribution. Please be transparent!
- Open an issue first for features (as noted above)
- Keep PRs focused — one feature or fix per PR
- Write tests for new functionality
- Follow existing code style — run
cargo fmtandcargo clippy - Update documentation if you're changing public APIs
- Write clear commit messages following the Conventional Commits pattern
- Sign off your commits — all commits must include a DCO sign-off (see below)
All commits must be signed off with a Developer Certificate of Origin (DCO). This is verified automatically by GitHub Actions.
To sign off your commits, add the -s flag when committing:
git commit -s -m "Your commit message"This adds a Signed-off-by line to your commit message:
Signed-off-by: Your Name <your.email@example.com>
By signing off, you certify that you have the right to submit the code under the project's license and agree to the Developer Certificate of Origin.
Be respectful, constructive, and collaborative. We're all here to build something useful together.
If you're unsure about anything, just ask! Open an issue or discussion — we're happy to help.
Thank you for contributing to cel-rust! 🎉