Thank you for your interest in contributing to CrowdCode! This document explains how to contribute to the project.
CrowdCode is a meta project - it uses itself for development! This means:
- Feature Requests: Submit via GitHub Issues
- AI Generation: GitHub Actions generates PRs automatically
- Community Voting: PatchPanel members vote on features
- Automatic Promotion: Approved features are merged to main
The primary way to contribute is by submitting feature requests:
- Go to Issues
- Select "CrowdCode Feature Request"
- Fill out the template completely:
- Feature Name: Concise, descriptive title
- Description: What should it do?
- Use Case: Why is it valuable?
- Acceptance Criteria: How to verify it works?
Tips for good feature requests:
- Be specific and detailed
- Explain the "why" not just the "what"
- Provide examples or references
- Consider edge cases
- Define success criteria
PatchPanel members vote on which features to promote:
To request membership:
- Open an issue requesting PatchPanel membership
- Explain why you'd like to participate
- Describe your interest in the project
- Wait for review by existing members
Responsibilities:
- Review AI-generated PRs thoughtfully
- Vote on features (approve, reject, or request review)
- Provide constructive feedback
- Participate regularly (at least monthly)
Found a bug? Let us know:
- Check if it's already reported in Issues
- If not, create a new issue with:
- Clear description of the problem
- Steps to reproduce
- Expected vs. actual behavior
- Environment details (OS, browser, etc.)
- Screenshots if applicable
Documentation improvements are always welcome:
- Submit a feature request for documentation changes
- Or submit a direct pull request for:
- Typo fixes
- Clarifications
- Examples
- Formatting improvements
While CrowdCode uses AI for feature implementation, you can still submit PRs for:
- Urgent bug fixes: Critical issues needing immediate attention
- Documentation: Improvements to markdown files
- Small improvements: Minor tweaks and optimizations
PR Guidelines:
- Keep changes focused and minimal
- Follow existing code style
- Update documentation if needed
- Add tests if applicable
- Reference related issues
- Python 3.11+
- Git
- GitHub CLI (optional, recommended)
# Clone the repository
git clone https://github.com/evcatalyst/CrowdCode.git
cd CrowdCode
# Install dependencies
pip install -r requirements.txt
# Run tests (when available)
python -m pytestUse act to test GitHub Actions locally:
# Install act
brew install act # macOS
# or
curl https://raw.githubusercontent.com/nektos/act/master/install.sh | sudo bash
# Test a workflow
act -j generate-prs -s GITHUB_TOKEN=your_tokenAll scripts support dry-run mode for testing:
# Test PR generation without making changes
python scripts/generate-feature-pr.py
export DRY_RUN=true
# Test vote counting
python scripts/validate-votes.py- Follow PEP 8
- Use type hints where appropriate
- Add docstrings for functions
- Keep functions focused and small
- Use Markdown for all documentation
- Include code examples
- Add links to related documents
- Keep README.md up to date
- Use clear, descriptive commit messages
- Start with a verb (Add, Fix, Update, etc.)
- Keep commits focused on single changes
- Reference issues when applicable
Example:
Add vote notification feature
Implements email notifications when features are promoted.
Closes #42
When voting on features:
Approve (👍) when:
- Implementation matches requirements
- Code quality is acceptable
- No security concerns
- Aligns with project goals
- Tests pass (when required)
Reject (👎) when:
- Implementation is incomplete
- Security vulnerabilities present
- Breaking changes without discussion
- Doesn't match requirements
- Quality issues
Request Review (👀) when:
- Need more time to evaluate
- Want other opinions
- Implementation looks promising but needs refinement
- Unclear about requirements
Best Practices:
- Review thoroughly before voting
- Provide constructive feedback
- Explain rejection reasons
- Test the implementation when possible
- Vote within the voting period
We follow the Contributor Covenant Code of Conduct:
- Be respectful: Treat everyone with respect
- Be inclusive: Welcome diverse perspectives
- Be constructive: Focus on issues, not people
- Be collaborative: Work together toward shared goals
- Issues: For feature requests and bugs
- Discussions: For questions and ideas (coming soon)
- Pull Requests: For code contributions
- Email: For sensitive matters
CrowdCode uses democratic decision-making:
- Proposals: Anyone can propose features
- Discussion: Community discusses merits
- Implementation: AI generates initial code
- Voting: PatchPanel votes on promotion
- Promotion: Approved features merge to main
Releases are created automatically when:
- Significant features are promoted
- Major milestones are reached
- Monthly release cycles (future)
- 📖 Read the documentation
- 🐛 Check existing issues
- 💬 Start a discussion (coming soon)
- 📧 Contact maintainers
Contributors are recognized through:
- GitHub contributor graph
- Release notes
- PatchPanel membership
- Project acknowledgments
By contributing, you agree that your contributions will be licensed under the MIT License.
Thank you for contributing to CrowdCode! Together, we're building a more democratic, transparent, and collaborative approach to software development. 🚀