CONTRIBUTING
Contributing¶
Branch Strategy¶
The Clue project follows a Git flow branching model to ensure stable releases and organized development:
Main Branches¶
main: Contains production-ready code. All releases are tagged from this branch. Direct commits tomainare restricted.develop: The integration branch for new features and the primary development branch. All feature branches are created from and merged back intodevelop.
Supporting Branches¶
- Feature branches: Created from
developfor new features or enhancements. Use descriptive names likefeature/add-oauth-providerorfeature/improve-caching. - Release branches: Created from
developwhen preparing for a new release (e.g.,release/v2.1.0). Used for final testing and minor bug fixes. - Hotfix branches: Created from
mainfor critical bug fixes that need immediate deployment (e.g.,hotfix/security-patch).
Development Workflow¶
- Feature Development: Create a feature branch from
develop - Integration: Merge completed features into
developvia pull request - Release Preparation: Create a release branch from
developwhen ready for release - Production Release: Merge release branch into both
mainanddevelop, then tag the release - Hotfixes: If critical issues are found in production, create hotfix branches from
main
Pull Request Process¶
All code changes must go through the pull request process to ensure code quality and maintain project standards:
For Contributors with Write Access¶
- Create Feature Branch: Create a new branch from
developwith a descriptive name
git checkout develop
git pull origin develop
git checkout -b feature/your-feature-name
-
Implement Changes: Make your changes, following the project's coding standards and including appropriate tests
-
Open Pull Request: Create a PR targeting the
developbranch with: - Clear, descriptive title
- Detailed description of changes
- Reference to any related issues
- Screenshots or examples if applicable
For External Contributors¶
-
Fork Repository: Fork the Clue repository to your GitHub account
-
Clone and Setup: Clone your fork and set up the development environment as described in this guide
-
Create Feature Branch: Create a branch from
developin your fork -
Implement and Test: Make your changes and ensure all checks pass
-
Submit Pull Request: Open a PR from your fork's feature branch to the main repository's
developbranch
Review Process¶
- Required Approvals: All pull requests require at least two approvals from project maintainers
-
Automated Checks: PRs must pass all automated checks including:
-
Unit tests and integration tests
- Code formatting and linting
- Type checking
-
Security scans
-
Code Review: Reviewers will examine:
- Code quality and adherence to project standards
- Test coverage and quality
- Documentation updates if needed
- Security implications
- Performance considerations
Merge and Release¶
- Merge to Develop: Once approved and all checks pass, the PR is merged into
develop - Release Cycle: Features merged into
developwill be included in the next release whendevelopis merged intomain - Release Timeline: Release schedules are determined by the project maintainers based on feature readiness and testing completion. There's no guaranteed duration from merge to release.
Best Practices¶
In order to maintain high code quality in clue:
- Keep PRs focused and reasonably sized
- Include comprehensive test coverage for new features
- Update documentation for user-facing changes
- Rebase your branch if requested to maintain a clean history
- All PRs will be squash merged into the trunk.
Getting Help¶
You can reach the Clue developemnt team on the CCCS aurora discord: https://discord.gg/GUAy9wErNu