|
4 | 4 |
|
5 | 5 | # Contributing to Roo Code |
6 | 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. |
| 7 | +Roo Code is a community-driven project, and we deeply value every contribution. To streamline collaboration, we operate on an [Issue-First](#issue-first-approach) basis, meaning all [Pull Requests (PRs)](#submitting-a-pull-request) must first be linked to a GitHub Issue. Please review this guide carefully. |
9 | 8 |
|
10 | 9 | ## Table of Contents |
11 | 10 |
|
12 | | -- [I. Before You Contribute](#i-before-you-contribute) |
13 | | - - [1. Code of Conduct](#1-code-of-conduct) |
14 | | - - [2. Understand the Project Roadmap](#2-understand-the-project-roadmap) |
15 | | - - [Reliability First](#reliability-first) |
16 | | - - [Enhanced User Experience](#enhanced-user-experience) |
17 | | - - [Leading on Agent Performance](#leading-on-agent-performance) |
18 | | - - [3. Join the Roo Code Community](#3-join-the-roo-code-community) |
19 | | -- [II. Finding & Planning Your Contribution](#ii-finding--planning-your-contribution) |
20 | | - - [1. Types of Contributions](#1-types-of-contributions) |
21 | | - - [2. Key Principle: Issue-First Approach](#2-key-principle-issue-first-approach) |
22 | | - - [3. Deciding What to Work On](#3-deciding-what-to-work-on) |
23 | | - - [4. Reporting Bugs or Issues](#4-reporting-bugs-or-issues) |
24 | | -- [III. Development & Submission Process](#iii-development--submission-process) |
25 | | - - [1. Development Setup](#1-development-setup) |
26 | | - - [2. Writing Code Guidelines](#2-writing-code-guidelines) |
27 | | - - [3. Submitting Code: Pull Request (PR) Process](#3-submitting-code-pull-request-pr-process) |
28 | | - - [Draft Pull Requests](#draft-pull-requests) |
29 | | - - [Pull Request Description](#pull-request-description) |
30 | | - - [Pull Request (PR) Policy](#pull-request-pr-policy) |
31 | | - - [Objective](#objective) |
32 | | - - [Issue-First Approach](#issue-first-approach) |
33 | | - - [Conditions for Open PRs](#conditions-for-open-prs) |
34 | | - - [Procedure](#procedure) |
35 | | - - [Responsibilities](#responsibilities) |
36 | | -- [IV. Legal](#iv-legal) |
37 | | - - [Contribution Agreement](#contribution-agreement) |
38 | | - |
39 | | -## I. Before You Contribute |
40 | | - |
41 | | -First, familiarize yourself with our community standards and project direction. |
| 11 | +- [Before You Contribute](#before-you-contribute) |
| 12 | +- [Finding & Planning Your Contribution](#finding--planning-your-contribution) |
| 13 | +- [Development & Submission Process](#development--submission-process) |
| 14 | +- [Legal](#legal) |
42 | 15 |
|
43 | | -### 1. Code of Conduct |
44 | | - |
45 | | -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. |
| 16 | +## Before You Contribute |
46 | 17 |
|
47 | | -### 2. Understand the Project Roadmap |
| 18 | +### 1. Code of Conduct |
48 | 19 |
|
49 | | -Roo Code has a clear development roadmap that guides our priorities and future direction. Understanding our roadmap can help you: |
| 20 | +All contributors must adhere to our [Code of Conduct](./CODE_OF_CONDUCT.md). |
50 | 21 |
|
51 | | -- Align your contributions with project goals |
52 | | -- Identify areas where your expertise would be most valuable |
53 | | -- Understand the context behind certain design decisions |
54 | | -- Find inspiration for new features that support our vision |
| 22 | +### 2. Project Roadmap |
55 | 23 |
|
56 | | -We're focused on making Roo Code the top choice for developers building with AI-driven coding tools. Here's how we'll get there: |
| 24 | +Our roadmap guides the project's direction. Align your contributions with these key goals: |
57 | 25 |
|
58 | | -#### Reliability First |
| 26 | +### Reliability First |
59 | 27 |
|
60 | 28 | - Ensure diff editing and command execution are consistently reliable. |
61 | 29 | - Reduce friction points that deter regular usage. |
62 | 30 | - Guarantee smooth operation across all locales and platforms. |
63 | 31 | - Expand robust support for a wide variety of AI providers and models. |
64 | 32 |
|
65 | | -#### Enhanced User Experience |
| 33 | +### Enhanced User Experience |
66 | 34 |
|
67 | 35 | - Streamline the UI/UX for clarity and intuitiveness. |
68 | 36 | - Continuously improve the workflow to meet the high expectations developers have for daily-use tools. |
69 | 37 |
|
70 | | -#### Leading on Agent Performance |
| 38 | +### Leading on Agent Performance |
71 | 39 |
|
72 | 40 | - Establish comprehensive evaluation benchmarks (evals) to measure real-world productivity. |
73 | 41 | - Make it easy for everyone to easily run and interpret these evals. |
74 | | -- Ship improvements to Roo Code that demonstrate clear increases in eval scores. |
| 42 | +- Ship improvements that demonstrate clear increases in eval scores. |
75 | 43 |
|
76 | | -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. |
| 44 | +Mention alignment with these areas in your PRs. |
77 | 45 |
|
78 | 46 | ### 3. Join the Roo Code Community |
79 | 47 |
|
80 | | -Connecting with the Roo Code community is a great way to get started: |
81 | | - |
82 | | -- **Primary Method**: |
83 | | - 1. Join the [Roo Code Discord community](https://discord.gg/roocode). |
84 | | - 2. Once joined, send a direct message (DM) to **Hannes Rudolph** (Discord username: `hrudolph`) to discuss your interest and get guidance. |
85 | | -- **Alternative for Experienced Contributors**: If you're comfortable with an issue-first approach, you can engage directly through GitHub by following the [Kanban board](https://github.com/orgs/RooVetGit/projects/1) and communicating via issues and pull requests. |
86 | | - |
87 | | -## II. Finding & Planning Your Contribution |
88 | | - |
89 | | -Identify what you'd like to work on and how to approach it. |
90 | | - |
91 | | -### 1. Types of Contributions |
| 48 | +- **Primary:** Join our [Discord](https://discord.gg/roocode) and DM **Hannes Rudolph (`hrudolph`)**. |
| 49 | +- **Alternative:** Experienced contributors can engage directly via [GitHub Projects](https://github.com/orgs/RooVetGit/projects/1). |
92 | 50 |
|
93 | | -We welcome various contributions: |
| 51 | +## Finding & Planning Your Contribution |
94 | 52 |
|
95 | | -- **Bug Fixes**: Addressing issues in existing code. |
96 | | -- **New Features**: Adding new functionality. |
97 | | -- **Documentation**: Improving guides, examples, or fixing typos. |
| 53 | +### Types of Contributions |
98 | 54 |
|
99 | | -### 2. Key Principle: Issue-First Approach |
| 55 | +- **Bug Fixes:** Addressing code issues. |
| 56 | +- **New Features:** Adding functionality. |
| 57 | +- **Documentation:** Improving guides and clarity. |
100 | 58 |
|
101 | | -**All contributions must start with a GitHub Issue.** This is a critical step to ensure alignment and prevent wasted effort. |
| 59 | +### Issue-First Approach |
102 | 60 |
|
103 | | -- **Find or Create an Issue**: |
104 | | - - 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. |
105 | | - - 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. |
106 | | - - If no issue exists, create a new one using the appropriate template on our [issues page](https://github.com/RooVetGit/Roo-Code/issues/new/choose): |
107 | | - - For bugs, use the "Bug Report" template. |
108 | | - - For new features, use the "Detailed Feature Proposal" template. Await approval from a maintainer (especially @hannesrudolph) before proceeding with implementation. |
109 | | - - **Note**: General ideas or preliminary discussions for features can start in [GitHub Discussions](https://github.com/RooVetGit/Roo-Code/discussions/categories/feature-requests). Once an idea is more concrete, a "Detailed Feature Proposal" issue should be created. |
110 | | -- **Claiming and Assignment**: |
111 | | - - Clearly state your intention to work on an issue by commenting on it. |
112 | | - - Wait for a maintainer to officially assign the issue to you in GitHub. This prevents multiple people from working on the same thing. |
113 | | -- **Consequences of Not Following**: |
114 | | - - 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. |
| 61 | +All contributions must begin with a GitHub Issue. |
115 | 62 |
|
116 | | -This approach helps us track work, ensure changes are desired, and coordinate efforts effectively. |
| 63 | +- **Check existing issues**: Search [GitHub Issues](https://github.com/RooVetGit/Roo-Code/issues). |
| 64 | +- **Create an issue**: Use appropriate templates: |
| 65 | + - **Bugs:** "Bug Report" template. |
| 66 | + - **Features:** "Detailed Feature Proposal" template. Approval required before starting. |
| 67 | +- **Claim issues**: Comment and await official assignment. |
117 | 68 |
|
118 | | -### 3. Deciding What to Work On |
| 69 | +**PRs without approved issues may be closed.** |
119 | 70 |
|
120 | | -- **Good First Issues**: Check the "Issue [Unassigned]" section of our [Roo Code Issues](https://github.com/orgs/RooVetGit/projects/1) GitHub Project. |
121 | | -- **Documentation**: While this `CONTRIBUTING.md` is the primary guide for code contributions, if you're interested in contributing to other documentation (like user guides or API docs), please check the [Roo Code Docs repository](https://github.com/RooVetGit/Roo-Code-Docs) or inquire in the Discord community. |
122 | | -- **Proposing New Features**: |
123 | | - 1. **Initial Idea/Discussion**: For broad or initial feature ideas, start a conversation in [GitHub Discussions](https://github.com/RooVetGit/Roo-Code/discussions/categories/feature-requests). |
124 | | - 2. **Formal Proposal**: For specific, actionable feature proposals ready for consideration and potential approval, create a "Detailed Feature Proposal" issue using the template on our [issues page](https://github.com/RooVetGit/Roo-Code/issues/new/choose). This is a key part of our **Issue-First Approach**. |
| 71 | +### Deciding What to Work On |
125 | 72 |
|
126 | | -### 4. Reporting Bugs or Issues |
| 73 | +- Check the [GitHub Project](https://github.com/orgs/RooVetGit/projects/1) for unassigned "Good First Issues." |
| 74 | +- For docs, visit [Roo Code Docs](https://github.com/RooVetGit/Roo-Code-Docs). |
127 | 75 |
|
128 | | -If you find a bug: |
| 76 | +### Reporting Bugs |
129 | 77 |
|
130 | | -1. **Search Existing Issues**: Check [GitHub Issues](https://github.com/RooVetGit/Roo-Code/issues) for duplicates. |
131 | | -2. **Create a New Issue**: If unique, use the "Bug Report" template on our [issues page](https://github.com/RooVetGit/Roo-Code/issues/new/choose). |
| 78 | +- Check for existing reports first. |
| 79 | +- Create new bugs using the ["Bug Report" template](https://github.com/RooVetGit/Roo-Code/issues/new/choose). |
| 80 | +- **Security issues**: Report privately via [security advisories](https://github.com/RooVetGit/Roo-Code/security/advisories/new). |
132 | 81 |
|
133 | | -> 🔐 **Security Vulnerabilities**: If you discover a security vulnerability, please report it privately using [GitHub's security advisory tool](https://github.com/RooVetGit/Roo-Code/security/advisories/new). Do not create a public issue for security vulnerabilities. |
| 82 | +## Development & Submission Process |
134 | 83 |
|
135 | | -## III. Development & Submission Process |
| 84 | +### Development Setup |
136 | 85 |
|
137 | | -Follow these steps for coding and submitting your work. |
| 86 | +1. **Fork & Clone:** |
138 | 87 |
|
139 | | -### 1. Development Setup |
140 | | - |
141 | | -1. **Fork & Clone**: |
142 | | - - Fork the repository on GitHub. |
143 | | - - Clone your fork locally: `git clone https://github.com/YOUR_USERNAME/Roo-Code.git` |
144 | | -2. **Install Dependencies**: `npm run install:all` |
145 | | -3. **Run Webview (Dev Mode)**: `npm run dev` (for Vite/React app with HMR) |
146 | | -4. **Debug Extension**: Press `F5` in VS Code (or **Run** → **Start Debugging**) to open a new Extension Development Host window with Roo Code loaded. |
147 | | - |
148 | | -Webview changes (in `webview-ui`) will appear immediately with Hot Module Replacement. Changes to the core extension (in `src`) will require a restart of the Extension Development Host. |
149 | | - |
150 | | -Alternatively, to build and install a `.vsix` package: |
151 | | - |
152 | | -```sh |
153 | | -npm run build |
154 | | -code --install-extension bin/roo-cline-<version>.vsix |
| 88 | +``` |
| 89 | +git clone https://github.com/YOUR_USERNAME/Roo-Code.git |
155 | 90 | ``` |
156 | 91 |
|
157 | | -(Replace `<version>` with the actual version number from the built file). |
158 | | - |
159 | | -### 2. Writing Code Guidelines |
160 | | - |
161 | | -- **Focused PRs**: One feature/bug fix per PR. |
162 | | -- **Code Quality**: |
163 | | - - Pass CI checks (linting, formatting). |
164 | | - - Address ESLint warnings or errors (`npm run lint`). |
165 | | - - Respond to feedback from automated code review tools (e.g., Ellipsis, if configured). |
166 | | - - Follow TypeScript best practices and maintain type safety. |
167 | | -- **Testing**: |
168 | | - - Add tests for new features. |
169 | | - - Run `npm test` to ensure all tests pass. |
170 | | - - Update existing tests if your changes affect them. |
171 | | -- **Commit Messages**: |
172 | | - - Write clear, descriptive commit messages. |
173 | | - - Reference relevant issues in commits using `#issue-number` (e.g., `Fixes #123`). |
174 | | -- **Pre-Submission Checklist (before creating a PR)**: |
175 | | - - Rebase your branch on the latest `main` from the upstream repository. |
176 | | - - Ensure your code builds successfully (`npm run build`). |
177 | | - - Double-check all tests are passing (`npm test`). |
178 | | - - Remove any debugging code or `console.log` statements. |
179 | | - |
180 | | -### 3. Submitting Code: Pull Request (PR) Process |
181 | | - |
182 | | -#### Draft Pull Requests |
183 | | - |
184 | | -Use Draft PRs for work that is not yet ready for full review but for which you'd like to: |
185 | | - |
186 | | -- Run automated checks (CI). |
187 | | -- Get early feedback from maintainers or other contributors. |
188 | | -- Signal that the work is in progress. |
189 | | - |
190 | | -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. |
191 | | - |
192 | | -#### Pull Request Description |
193 | | - |
194 | | -Your PR description must be comprehensive and follow the structure provided by our [Pull Request Template](.github/pull_request_template.md). Key elements include: |
195 | | - |
196 | | -- A link to the approved GitHub Issue it addresses. |
197 | | -- A clear description of the changes made and their purpose. |
198 | | -- Detailed steps to test the changes. |
199 | | -- A list of any breaking changes. |
200 | | -- **For UI changes, provide clear before-and-after screenshots or videos.** |
201 | | -- **Crucially, state whether your PR necessitates updates to user-facing documentation. If so, specify which documents or sections are affected.** |
202 | | - |
203 | | -#### Pull Request (PR) Policy |
204 | | - |
205 | | -##### Objective |
206 | | - |
207 | | -Maintain a clean, focused, and actionable PR backlog. |
| 92 | +2. **Install Dependencies:** |
208 | 93 |
|
209 | | -##### Issue-First Approach |
| 94 | +``` |
| 95 | +npm run install:all |
| 96 | +``` |
210 | 97 |
|
211 | | -- **Required**: Before starting work, ensure there is an existing, approved, and assigned GitHub Issue (either a "Bug Report" or a "Detailed Feature Proposal"). (See "Key Principle: Issue-First Approach" under "II. Finding & Planning Your Contribution" for full details). |
212 | | -- **Approval**: Issues, especially "Detailed Feature Proposals" or those involving significant changes, must be reviewed and approved by maintainers (particularly @hannesrudolph) _before_ coding begins. |
213 | | -- **Reference**: PRs must explicitly reference these pre-approved issues in their description. |
214 | | -- **Consequences**: Failure to follow this process may result in your PR being closed without a full review. |
| 98 | +3. **Debugging:** Open with VS Code (`F5`). |
215 | 99 |
|
216 | | -##### Conditions for Open PRs |
| 100 | +### Writing Code Guidelines |
217 | 101 |
|
218 | | -- **Ready for Merge**: Passes all CI tests, aligns with the project roadmap (if applicable), is linked to an approved and assigned issue, has clear documentation/comments, includes clear before-and-after images or videos for any UI changes. |
219 | | -- **To be Closed**: Unresolved CI test failures, significant merge conflicts, misalignment with project goals, or prolonged inactivity (e.g., >30 days without updates after feedback). |
| 102 | +- One focused PR per feature or fix. |
| 103 | +- Follow ESLint and TypeScript best practices. |
| 104 | +- Write clear, descriptive commits referencing issues (e.g., `Fixes #123`). |
| 105 | +- Provide thorough testing (`npm test`). |
| 106 | +- Rebase onto the latest `main` branch before submission. |
220 | 107 |
|
221 | | -##### Procedure |
| 108 | +### Submitting a Pull Request |
222 | 109 |
|
223 | | -1. **Issue Qualification & Assignment**: @hannesrudolph (or other maintainers) reviews new and existing issues to ensure they align with the project and follow the "Issue-First Approach." Issues ready for work are assigned. |
224 | | -2. **Initial PR Triage (Daily)**: Maintainers conduct a quick daily review of incoming PRs to filter for urgency or critical issues. |
225 | | -3. **Thorough PR Review (Weekly - Mondays, or as capacity allows)**: Maintainers perform a more in-depth review of PRs to assess readiness, alignment with an approved issue, and overall quality. |
226 | | -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. |
227 | | -5. **Decision Stage**: Approved PRs are merged. PRs with unresolvable issues or misalignment may be closed with a clear explanation. |
228 | | -6. **Follow-up**: Authors of closed PRs are encouraged to address feedback and open new ones if issues are resolved or project direction shifts. |
| 110 | +- Begin as a **Draft PR** if seeking early feedback. |
| 111 | +- Clearly describe your changes following the Pull Request Template. |
| 112 | +- Provide screenshots/videos for UI changes. |
| 113 | +- Indicate if documentation updates are necessary. |
229 | 114 |
|
230 | | -##### Responsibilities |
| 115 | +### Pull Request Policy |
231 | 116 |
|
232 | | -- **Issue Qualification & Process Adherence (@hannesrudolph & Maintainers)**: Ensure all contributions adhere to the "Issue-First Approach" by reviewing, qualifying, and assigning issues. Guide contributors on process. |
233 | | -- **Maintainers (Dev Team)**: Conduct initial and thorough PR reviews, provide technical feedback, make approval/rejection decisions, and merge PRs. |
234 | | -- **Contributors**: Ensure PRs are linked to an approved and assigned issue, meet quality guidelines, and respond promptly to feedback. |
| 117 | +- Must reference pre-approved, assigned issues. |
| 118 | +- PRs without adherence to the policy may be closed. |
| 119 | +- PRs should pass CI tests, align with the roadmap, and have clear documentation. |
235 | 120 |
|
236 | | -This policy ensures clarity and efficient integration. |
| 121 | +### Review Process |
237 | 122 |
|
238 | | -## IV. Legal |
| 123 | +- **Daily Triage:** Quick checks by maintainers. |
| 124 | +- **Weekly In-depth Review:** Comprehensive assessment. |
| 125 | +- **Iterate promptly** based on feedback. |
239 | 126 |
|
240 | | -### Contribution Agreement |
| 127 | +## Legal |
241 | 128 |
|
242 | | -By submitting a pull request, you agree that your contributions will be licensed under the [Apache 2.0 License](LICENSE) (or the project's current license, if different), the same as the project. |
| 129 | +By contributing, you agree your contributions will be licensed under the Apache 2.0 License, consistent with Roo Code's licensing. |
0 commit comments