Thank you for your interest in contributing to Odyssey! We welcome contributions from the community and are excited to see what you build.
When contributing to this repository, please first discuss the change you wish to make via issue, email, or any other method with the owners of this repository before making a change.
Please note we have a Code of Conduct, please follow it in all your interactions with the project.
Please follow the installation instructions in our README.md to set up your development environment. This includes:
- Installing Rust and Cargo
- Installing LeftHook for Git hooks
- Cloning the repository and setting up the project
- Rust (latest stable recommended)
- Cargo package manager
- LeftHook for Git hooks management
- Cargo Tarpaulin for test coverage (optional)
# Install lefthook if not already installed
brew install lefthook # macOS
# or
npm install -g lefthook # Cross-platformThis project uses LeftHook to manage Git hooks that ensure code quality:
- Formatting:
cargo fmt --checkensures consistent code formatting - Linting:
cargo clippy -- -D warningscatches common mistakes and enforces best practices - Testing:
cargo test --features fullruns the test suite
These hooks run automatically before commits. You can also run them manually:
# Format code
cargo fmt
# Run lints
cargo clippy --all-features
# Run tests
cargo test --all-features
# Run all checks (same as pre-commit hook)
lefthook run pre-commit# Run all tests
cargo test --all-features
# Run with coverage
cargo install cargo-tarpaulin
cargo tarpaulin --all-features --out html- Fork the repository and create your feature branch from
main - Ensure any install or build dependencies are removed before the end of the layer when doing a build
- Make your changes and ensure they follow our coding standards
- Add tests for any new functionality
- Update the README.md with details of changes to the interface, including new environment variables, exposed ports, useful file locations and container parameters
- Update version numbers in any example files and the README.md to the new version that this Pull Request would represent. We use SemVer versioning
- Ensure all tests pass and pre-commit hooks succeed
- Create a pull request targeting the
mainbranch - You may merge the Pull Request once you have the sign-off of two other developers, or if you do not have permission to do that, you may request the second reviewer to merge it for you
- All tests pass (
cargo test --all-features) - Code is properly formatted (
cargo fmt) - No linting errors (
cargo clippy --all-features) - Documentation is updated
- Pre-commit hooks pass (
lefthook run pre-commit)