|
| 1 | +--- |
| 2 | +sidebar_label: 'Contributing' |
| 3 | +--- |
| 4 | + |
| 5 | +# Contributing to Roo Code |
| 6 | + |
| 7 | +Roo Code is a community-driven project, and we highly value every contribution. To ensure a smooth and effective process for everyone, **we operate on an "[Issue-First](#2-key-principle-issue-first-approach)" basis.** This means all work should be linked to a GitHub Issue *before* a Pull Request is submitted (see our [PR Policy](#pull-request-pr-policy) for details). Please read this guide carefully to understand how to contribute. |
| 8 | +This guide outlines how to contribute to Roo Code, whether you're fixing bugs, adding features, or improving documentation. |
| 9 | + |
| 10 | +## I. Before You Contribute |
| 11 | + |
| 12 | +First, familiarize yourself with our community standards and project direction. |
| 13 | + |
| 14 | +### 1. Code of Conduct |
| 15 | + |
| 16 | +All contributors must adhere to our [Code of Conduct](https://github.com/RooVetGit/Roo-Code/blob/main/CODE_OF_CONDUCT.md). Please read it before contributing. |
| 17 | + |
| 18 | +### 2. Understand the Project Roadmap |
| 19 | + |
| 20 | +Roo Code has a clear development roadmap that guides our priorities and future direction. Understanding our roadmap can help you: |
| 21 | + |
| 22 | +- Align your contributions with project goals |
| 23 | +- Identify areas where your expertise would be most valuable |
| 24 | +- Understand the context behind certain design decisions |
| 25 | +- Find inspiration for new features that support our vision |
| 26 | + |
| 27 | +Our current roadmap focuses on six key pillars: |
| 28 | + |
| 29 | +#### Provider Support |
| 30 | +We aim to support as many providers well as we can: |
| 31 | + |
| 32 | +- More versatile "OpenAI Compatible" support |
| 33 | +- xAI, Microsoft Azure AI, Alibaba Cloud Qwen, IBM Watsonx, Together AI, DeepInfra, Fireworks AI, Cohere, Perplexity AI, FriendliAI, Replicate |
| 34 | +- Enhanced support for Ollama and LM Studio |
| 35 | + |
| 36 | +#### Model Support |
| 37 | +We want Roo to work as well on as many models as possible, including local models: |
| 38 | + |
| 39 | +- Local model support through custom system prompting and workflows |
| 40 | +- Benchmarking evals and test cases |
| 41 | + |
| 42 | +#### System Support |
| 43 | +We want Roo to run well on everyone's computer: |
| 44 | + |
| 45 | +- Cross platform terminal integration |
| 46 | +- Strong and consistent support for Mac, Windows, and Linux |
| 47 | + |
| 48 | +#### Documentation |
| 49 | +We want comprehensive, accessible documentation for all users and contributors: |
| 50 | + |
| 51 | +- Expanded user guides and tutorials |
| 52 | +- Clear API documentation |
| 53 | +- Better contributor guidance |
| 54 | +- Multilingual documentation resources |
| 55 | +- Interactive examples and code samples |
| 56 | + |
| 57 | +#### Stability |
| 58 | +We want to significantly decrease the number of bugs and increase automated testing: |
| 59 | + |
| 60 | +- Debug logging switch |
| 61 | +- "Machine/Task Information" copy button for sending in with bug/support requests |
| 62 | + |
| 63 | +#### Internationalization |
| 64 | +We want Roo to speak everyone's language: |
| 65 | + |
| 66 | +- 我们希望 Roo Code 说每个人的语言 |
| 67 | +- Queremos que Roo Code hable el idioma de todos |
| 68 | +- हम चाहते हैं कि Roo Code हर किसी की भाषा बोले |
| 69 | +- نريد أن يتحدث Roo Code لغة الجميع |
| 70 | + |
| 71 | +We especially welcome contributions that advance our roadmap goals. If you're working on something that aligns with these pillars, please mention it in your PR description. |
| 72 | + |
| 73 | +### 3. Join the Roo Code Community |
| 74 | + |
| 75 | +Connecting with the Roo Code community is a great way to get started: |
| 76 | + |
| 77 | +- **Primary Method**: |
| 78 | + 1. Join the [Roo Code Discord community](https://discord.gg/roocode). |
| 79 | + 2. Once joined, send a direct message (DM) to **Hannes Rudolph** (Discord username: `hrudolph`) to discuss your interest and get guidance. |
| 80 | +- **Alternative for Experienced Contributors**: If you're comfortable with an issue-first approach, you can engage directly through GitHub by following the Kanban board and communicating via issues and pull requests. |
| 81 | + |
| 82 | +## II. Finding & Planning Your Contribution |
| 83 | + |
| 84 | +Identify what you'd like to work on and how to approach it. |
| 85 | + |
| 86 | +### 1. Types of Contributions |
| 87 | + |
| 88 | +We welcome various contributions: |
| 89 | + |
| 90 | +- **Bug Fixes**: Addressing issues in existing code. |
| 91 | +- **New Features**: Adding new functionality. |
| 92 | +- **Documentation**: Improving guides, examples, or fixing typos. |
| 93 | + |
| 94 | +### 2. Key Principle: Issue-First Approach |
| 95 | + |
| 96 | +**All contributions must start with a GitHub Issue.** This is a critical step to ensure alignment and prevent wasted effort. |
| 97 | + |
| 98 | +- **Find or Create an Issue**: |
| 99 | + - Before starting any work, search [GitHub Issues](https://github.com/RooVetGit/Roo-Code/issues) to see if an issue for your intended contribution already exists. |
| 100 | + - If it exists and is unassigned, comment on the issue to express your interest in taking it on. A maintainer will then assign it to you. |
| 101 | + - If no issue exists, create a new one, detailing the bug or feature. For new features, await approval from a maintainer (especially @hannesrudolph) before proceeding. |
| 102 | +- **Claiming and Assignment**: |
| 103 | + - Clearly state your intention to work on an issue by commenting on it. |
| 104 | + - Wait for a maintainer to officially assign the issue to you in GitHub. This prevents multiple people from working on the same thing. |
| 105 | +- **Consequences of Not Following**: |
| 106 | + - Pull Requests (PRs) submitted without a corresponding, pre-approved, and assigned issue may be closed without a full review. This policy is in place to ensure contributions align with project priorities and to respect the time of both contributors and maintainers. |
| 107 | + |
| 108 | +This approach helps us track work, ensure changes are desired, and coordinate efforts effectively. |
| 109 | + |
| 110 | +### 3. Deciding What to Work On |
| 111 | + |
| 112 | +- **Good First Issues**: Check the "Issue [Unassigned]" section of our [Roo Code Issues](https://github.com/orgs/RooVetGit/projects/1) GitHub Project. |
| 113 | +- **Documentation**: Contribute to our [docs](https://docs.roocode.com/) via the "Edit this page" link or the [Roo Code Docs repository](https://github.com/RooVetGit/Roo-Code-Docs). |
| 114 | +- **Proposing New Features**: For significant features, create a [feature request](https://github.com/RooVetGit/Roo-Code/discussions/categories/feature-requests?discussions_q=is%3Aopen+category%3A%22Feature+Requests%22+sort%3Atop) for discussion before implementation. This aligns with our **Issue-First Approach** detailed in the PR Policy. |
| 115 | + |
| 116 | +### 3. Reporting Bugs or Issues |
| 117 | + |
| 118 | +If you find a bug: |
| 119 | + |
| 120 | +1. **Search Existing Issues**: Check [GitHub Issues](https://github.com/RooVetGit/Roo-Code/issues) for duplicates. |
| 121 | +2. **Create a New Issue**: If unique, use the template on our [issues page](https://github.com/RooVetGit/Roo-Code/issues/new/choose). |
| 122 | + |
| 123 | +> 🔐 **Security Vulnerabilities**: Report privately using GitHub's security tool. |
| 124 | +
|
| 125 | +## III. Development & Submission Process |
| 126 | + |
| 127 | +Follow these steps for coding and submitting your work. |
| 128 | + |
| 129 | +### 1. Development Setup |
| 130 | + |
| 131 | +1. **Clone**: `git clone https://github.com/RooVetGit/Roo-Code.git` |
| 132 | +2. **Install Dependencies**: `npm run install:all` |
| 133 | +3. **Run Webview (Dev Mode)**: `npm run dev` (for Vite/React app with HMR) |
| 134 | +4. **Debug Extension**: Press `F5` in VS Code. |
| 135 | + |
| 136 | +Webview changes are immediate; extension changes require an extension host restart. |
| 137 | +Alternatively, build and install a `.vsix`: |
| 138 | +```sh |
| 139 | +npm run build |
| 140 | +code --install-extension bin/roo-cline-.vsix |
| 141 | +``` |
| 142 | + |
| 143 | +### 2. Writing Code Guidelines |
| 144 | + |
| 145 | +- **Focused PRs**: One feature/bug fix per PR. |
| 146 | +- **Code Quality**: Pass CI (linting, formatting). Address ESLint issues. Respond to Ellipsis feedback. Follow TypeScript best practices. |
| 147 | +- **Testing**: Add tests for new features. Run `npm test`. Update existing tests. |
| 148 | +- **Commit Messages**: Clear, descriptive, reference issues (`#issue-number`). |
| 149 | +- **Pre-Submission Checklist**: Rebase on `main`, ensure build success, all tests pass, remove debug code. |
| 150 | + |
| 151 | +### 3. Submitting Code: Pull Request (PR) Process |
| 152 | + |
| 153 | +#### Draft Pull Requests |
| 154 | + |
| 155 | +Use Draft PRs for work that is not yet ready for full review but for which you'd like to: |
| 156 | +- Run automated checks (CI). |
| 157 | +- Get early feedback from maintainers or other contributors. |
| 158 | +- Signal that the work is in progress. |
| 159 | + |
| 160 | +Mark a PR as "Ready for Review" only when all checks are passing and you believe it meets the criteria outlined in the "Writing Code Guidelines" and "Pull Request Description" sections. |
| 161 | + |
| 162 | +#### Pull Request Description |
| 163 | + |
| 164 | +Your PR description must be comprehensive: |
| 165 | +- Clearly describe the changes made and their purpose. |
| 166 | +- Include detailed steps to test the changes. |
| 167 | +- List any breaking changes. |
| 168 | +- **For UI changes, provide clear before-and-after screenshots or videos.** |
| 169 | +- **Crucially, state whether your PR necessitates updates to user-facing documentation. If so, specify which documents or sections are affected.** |
| 170 | + |
| 171 | +#### Pull Request (PR) Policy |
| 172 | + |
| 173 | +##### Objective |
| 174 | +Maintain a clean, focused, and actionable PR backlog. |
| 175 | + |
| 176 | +##### Issue-First Approach |
| 177 | +- **Required**: Before starting work, create or reference an existing, approved issue. (See "Key Principle: Issue-First Approach" under "II. Finding & Planning Your Contribution" for full details). |
| 178 | +- **Approval**: Issues, especially for new features or significant changes, must be reviewed and approved by maintainers (particularly @hannesrudolph) *before* coding begins. |
| 179 | +- **Reference**: PRs must explicitly reference these pre-approved issues. |
| 180 | +- **Consequences**: Failure to follow this process may result in your PR being closed without a full review. |
| 181 | + |
| 182 | +##### Conditions for Open PRs |
| 183 | +- **Ready for Merge**: Passes tests, aligns with roadmap, approved, clear docs/comments, **includes clear before-and-after images or videos for any UI changes**, references an approved issue. |
| 184 | +- **To be Closed**: Unresolved issues (test failures, conflicts), misaligned with goals, stale (inactive >30 days). |
| 185 | + |
| 186 | +##### Procedure |
| 187 | +1. **Issue Qualification**: @hannesrudolph reviews new and existing issues to ensure they align with the project and follow the "Issue-First Approach." This step helps qualify issues before they are considered for PR submission. |
| 188 | +2. **Initial PR Triage (Daily)**: Maintainers (Dev Team) conduct a quick daily review of incoming PRs to filter for urgency or critical issues. |
| 189 | +3. **Thorough PR Review (Weekly - Mondays)**: Maintainers (Dev Team) perform a more in-depth review of PRs to assess readiness, alignment with an approved issue, and overall quality. |
| 190 | +4. **Detailed Feedback & Iteration**: Based on the thorough review, maintainers provide feedback (Approve, Request Changes, or Reject). Contributors are expected to respond to feedback and iterate as needed. |
| 191 | +5. **Decision Stage**: Approved PRs are merged. PRs with unresolvable issues or misalignment may be closed with a clear explanation. |
| 192 | +6. **Follow-up**: Authors of closed PRs are encouraged to open new ones if issues are resolved or project direction shifts. |
| 193 | + |
| 194 | +##### Responsibilities |
| 195 | +- **Issue Qualification & Process Adherence (@hannesrudolph)**: Ensures all contributions adhere to the "Issue-First Approach" by reviewing and qualifying issues. Guides contributors on process. |
| 196 | +- **Maintainers (Dev Team)**: Conduct initial and thorough PR reviews, provide technical feedback, make approval/rejection decisions, and merge PRs. |
| 197 | +- **Contributors**: Ensure PRs are linked to an approved and assigned issue, meet quality guidelines, and respond promptly to feedback. |
| 198 | + |
| 199 | +This policy ensures clarity and efficient integration. |
| 200 | + |
| 201 | +## IV. Legal |
| 202 | + |
| 203 | +### Contribution Agreement |
| 204 | + |
| 205 | +By submitting a pull request, you agree that your contributions will be licensed under the [Apache 2.0 License](https://github.com/RooVetGit/Roo-Code/blob/main/LICENSE), the same as the project. |
0 commit comments