|
| 1 | +# Project Governance |
| 2 | + |
| 3 | +## Overview |
| 4 | + |
| 5 | +This document outlines how decisions are made in the OpenCoder project and how the community can participate in shaping its future. |
| 6 | + |
| 7 | +## Project Leadership |
| 8 | + |
| 9 | +### Maintainers |
| 10 | + |
| 11 | +The OpenCoder project is maintained by a small team dedicated to its quality and vision. Maintainers are responsible for: |
| 12 | + |
| 13 | +- **Reviewing pull requests** - Ensuring code quality and alignment with project goals |
| 14 | +- **Managing issues** - Triaging, discussing, and prioritizing work |
| 15 | +- **Making release decisions** - Determining when features are ready to ship |
| 16 | +- **Setting direction** - Guiding the project's long-term vision |
| 17 | +- **Community management** - Fostering a healthy, inclusive community |
| 18 | + |
| 19 | +Current maintainers can be found in the [CONTRIBUTING.md](CONTRIBUTING.md). |
| 20 | + |
| 21 | +### Becoming a Maintainer |
| 22 | + |
| 23 | +Contributors who consistently demonstrate: |
| 24 | + |
| 25 | +- High-quality contributions |
| 26 | +- Strong understanding of the codebase |
| 27 | +- Commitment to community values |
| 28 | +- Excellent communication skills |
| 29 | + |
| 30 | +...may be invited to join the maintainer team. This is not based on quantity of contributions but on quality and judgment. |
| 31 | + |
| 32 | +## Decision-Making Process |
| 33 | + |
| 34 | +### Types of Decisions |
| 35 | + |
| 36 | +**1. Small Changes (Bug Fixes, Documentation)** |
| 37 | +- Require: One maintainer review and approval |
| 38 | +- Process: Standard pull request review |
| 39 | +- Timeline: Can be merged quickly |
| 40 | + |
| 41 | +**2. Medium Changes (New Features, Significant Refactoring)** |
| 42 | +- Require: Two maintainer reviews and approval |
| 43 | +- Process: Standard pull request review with discussion |
| 44 | +- Timeline: 3-5 day discussion period |
| 45 | +- Community input welcome but not required |
| 46 | + |
| 47 | +**3. Major Changes (API Changes, Breaking Changes, New Direction)** |
| 48 | +- Require: RFC (Request For Comments) issue |
| 49 | +- Process: Community discussion, consensus building |
| 50 | +- Timeline: 1-2 week discussion period |
| 51 | +- Community input strongly encouraged |
| 52 | +- Requires majority maintainer approval |
| 53 | + |
| 54 | +**4. Project Direction (Long-term Goals, Major Features)** |
| 55 | +- Require: RFC issue and community discussion |
| 56 | +- Process: Open discussion with all stakeholders |
| 57 | +- Timeline: 2-4 week discussion period |
| 58 | +- Community input critical |
| 59 | +- Requires consensus among maintainers |
| 60 | + |
| 61 | +### RFC (Request For Comments) Process |
| 62 | + |
| 63 | +Major decisions follow an RFC process: |
| 64 | + |
| 65 | +1. **Create Issue** - Open an issue with `[RFC]` prefix describing the proposal |
| 66 | +2. **Discussion** - Community comments and feedback (1-2 weeks) |
| 67 | +3. **Revision** - Proposer updates based on feedback |
| 68 | +4. **Decision** - Maintainers make final decision |
| 69 | +5. **Implementation** - Approved proposals are implemented |
| 70 | + |
| 71 | +RFC topics might include: |
| 72 | + |
| 73 | +- Major architectural changes |
| 74 | +- Breaking changes to APIs |
| 75 | +- New commands or significant features |
| 76 | +- Project scope changes |
| 77 | + |
| 78 | +## Issue and PR Management |
| 79 | + |
| 80 | +### Issue Categories |
| 81 | + |
| 82 | +Issues are labeled to help organize work: |
| 83 | + |
| 84 | +- **bug** - Something isn't working |
| 85 | +- **enhancement** - New feature or improvement request |
| 86 | +- **documentation** - Documentation updates |
| 87 | +- **good first issue** - Good for newcomers |
| 88 | +- **help wanted** - Extra attention needed |
| 89 | +- **discussion** - Community discussion topics |
| 90 | +- **question** - Questions about usage |
| 91 | + |
| 92 | +### PR Review Guidelines |
| 93 | + |
| 94 | +When submitting a pull request: |
| 95 | + |
| 96 | +1. **Describe your changes clearly** - Link to related issues |
| 97 | +2. **Follow coding standards** - Run `bun test` and `bunx biome check` |
| 98 | +3. **Add tests** - Maintain or improve coverage |
| 99 | +4. **Write commit messages** - Follow Conventional Commits |
| 100 | +5. **Be patient** - Reviews take time |
| 101 | + |
| 102 | +Maintainers will: |
| 103 | + |
| 104 | +1. **Review promptly** - Aim for response within 3 days |
| 105 | +2. **Provide constructive feedback** - Explain reasoning |
| 106 | +3. **Request changes clearly** - Be specific about what needs adjusting |
| 107 | +4. **Merge thoughtfully** - Ensure quality and consistency |
| 108 | + |
| 109 | +## Release Management |
| 110 | + |
| 111 | +### Version Strategy |
| 112 | + |
| 113 | +OpenCoder follows [Semantic Versioning](https://semver.org/): |
| 114 | + |
| 115 | +- **MAJOR** - Breaking changes |
| 116 | +- **MINOR** - New features (backward compatible) |
| 117 | +- **PATCH** - Bug fixes (backward compatible) |
| 118 | + |
| 119 | +### Release Process |
| 120 | + |
| 121 | +1. **Planning** - Decide what goes into release |
| 122 | +2. **Development** - Implement features and fixes |
| 123 | +3. **Testing** - Comprehensive testing on multiple platforms |
| 124 | +4. **Release Candidate** - Tag and test pre-release |
| 125 | +5. **Release** - Publish to all platforms |
| 126 | +6. **Announcement** - Document changes in release notes |
| 127 | + |
| 128 | +### Support Timeline |
| 129 | + |
| 130 | +- **Latest version** - Full support |
| 131 | +- **Previous major version** - Bug fixes and critical issues |
| 132 | +- **Older versions** - Security fixes only |
| 133 | +- **End of life** - No support |
| 134 | + |
| 135 | +## Community Participation |
| 136 | + |
| 137 | +### How to Get Involved |
| 138 | + |
| 139 | +1. **Report bugs** - Open an issue with reproduction steps |
| 140 | +2. **Suggest features** - Start a discussion or RFC issue |
| 141 | +3. **Contribute code** - Submit a pull request |
| 142 | +4. **Improve documentation** - Help others understand the project |
| 143 | +5. **Help others** - Answer questions in discussions |
| 144 | +6. **Share feedback** - Tell us what you think |
| 145 | + |
| 146 | +### Recognition |
| 147 | + |
| 148 | +We recognize contributions in multiple ways: |
| 149 | + |
| 150 | +- **Contributor list** - Listed in README and releases |
| 151 | +- **Commit history** - Your commits are preserved in git |
| 152 | +- **Maintainer status** - Top contributors may become maintainers |
| 153 | +- **Community mention** - Highlighted in release notes |
| 154 | + |
| 155 | +## Conflict Resolution |
| 156 | + |
| 157 | +### Disagreements |
| 158 | + |
| 159 | +Disagreements are normal and healthy. When they occur: |
| 160 | + |
| 161 | +1. **Discuss respectfully** - Focus on ideas, not people |
| 162 | +2. **Listen actively** - Try to understand other perspectives |
| 163 | +3. **Find common ground** - Look for compromise |
| 164 | +4. **Involve maintainers** - If needed, escalate for guidance |
| 165 | +5. **Respect decisions** - Once decided, move forward |
| 166 | + |
| 167 | +### Code Review Conflicts |
| 168 | + |
| 169 | +If there's disagreement during code review: |
| 170 | + |
| 171 | +1. **Explain reasoning** - Both sides articulate their position |
| 172 | +2. **Consider tradeoffs** - Discuss pros and cons |
| 173 | +3. **Seek maintainer input** - Ask for guidance if stuck |
| 174 | +4. **Document decisions** - Record the rationale |
| 175 | + |
| 176 | +### Escalation |
| 177 | + |
| 178 | +If conflicts can't be resolved: |
| 179 | + |
| 180 | +1. Contact the project maintainers |
| 181 | +2. Describe the situation clearly |
| 182 | +3. Request guidance from leadership |
| 183 | +4. Respect the final decision |
| 184 | + |
| 185 | +## Amendment Process |
| 186 | + |
| 187 | +This governance document may be updated as the project evolves: |
| 188 | + |
| 189 | +1. **Propose change** - Open an issue or discussion |
| 190 | +2. **Community feedback** - Get input from contributors |
| 191 | +3. **Maintainer approval** - Requires consensus |
| 192 | +4. **Update document** - Apply approved changes |
| 193 | +5. **Announce change** - Notify the community |
| 194 | + |
| 195 | +## Values and Principles |
| 196 | + |
| 197 | +The OpenCoder project is guided by: |
| 198 | + |
| 199 | +### Technical Excellence |
| 200 | +- Code quality matters |
| 201 | +- Testing is essential |
| 202 | +- Documentation is important |
| 203 | +- Performance is considered |
| 204 | + |
| 205 | +### Community First |
| 206 | +- Contributors are valued |
| 207 | +- Diverse perspectives are welcome |
| 208 | +- Respectful communication is expected |
| 209 | +- Everyone's time is respected |
| 210 | + |
| 211 | +### Transparency |
| 212 | +- Decisions are explained |
| 213 | +- Processes are documented |
| 214 | +- Community input is considered |
| 215 | +- Outcomes are communicated |
| 216 | + |
| 217 | +### Sustainability |
| 218 | +- Projects should be maintainable |
| 219 | +- Dependencies are managed carefully |
| 220 | +- Breaking changes are minimized |
| 221 | +- Long-term viability is prioritized |
| 222 | + |
| 223 | +## Questions? |
| 224 | + |
| 225 | +If you have questions about governance, project direction, or how decisions are made: |
| 226 | + |
| 227 | +1. **Check this document** - May answer your question |
| 228 | +2. **Open an issue** - Tag with `[governance]` or `[question]` |
| 229 | +3. **Start a discussion** - For broader topics |
| 230 | +4. **Contact maintainers** - For confidential matters |
| 231 | + |
| 232 | +We're here to help and want to make sure you feel heard. |
| 233 | + |
| 234 | +--- |
| 235 | + |
| 236 | +**Last Updated**: January 2026 |
| 237 | +**Version**: 1.0 |
0 commit comments