| --- |
| title: "Committers" |
| --- |
| |
| Committers are individuals with repository write access. |
| While everyone can and is encouraged to contribute by reviewing code, committers are responsible for final approval and merge. |
| Committers must ensure that any code merged meets a high quality bar, has been properly discussed, and the design rationale adequately explained and documented. |
| Making a judgement on when these requirements have been met is fundamental to the role. |
| |
| Committers are proposed by and voted on by the TC. |
| Committers should: |
| * Be active contributors to the project, with a history of high quality contributions, including code reviews. |
| * Be familiar with the project processes and rules, and be able to apply them fairly. |
| * Be responsive to feedback from TC members on their review approach and interpretation of project policy. |
| * Work to ensure that stakeholders are properly consulted on any code or design changes. |
| |
| If you meet the above criteria and are interested in becoming a committer, then approach a TC member to see if they would be willing to propose you. |
| TC members may also reach out to you to ask if you would be interested in becoming a committer. |
| |
| Under certain exceptional circumstances, the Steering Committee may vote to revoke a committer's status. |
| This may happen in cases such as a committer failing to act as a good citizen within the project and the issue cannot be resolved through discussion. |
| It may also be a natural function of "pruning the tree" as an individual's involvement in the project changes over time. |
| |
| The list of committers is maintained within the project's Git repository and is available in the [COMMITTERS file](https://github.com/lowRISC/opentitan/blob/master/COMMITTERS) in the repository root. |
| |
| ## Commit Escalation Guidelines |
| |
| When reviewing a pull request, there are a range of options in giving feedback. |
| Although committers have the final say on patch approval or requiring changes, the task of reviewing is shared by all contributors, who may make similar requests. |
| Options for reviewing a pull request include: |
| * Approval, with no further conditions. |
| * This is appropriate when you are confident the changes are correct, sufficiently explained, in line with the project coding styles, and don't need further review by others or a companion [RFC]({{< relref "rfc_process" >}}) to be written. |
| You should only use this for cases where you have sufficient expertise in the areas being modified. |
| * Note that if the PR came from someone without commit rights, you will need to rebase and merge for them. |
| * Approval, but with a request to get an additional approval from other named reviewers. |
| * This is appropriate when you believe the changes are correct, but would either like a second opinion or to ensure that another contributor is aware of and approves of the changes. |
| * Request for changes. |
| * This is appropriate when problems or potential improvements are spotted that can be addressed by the original submitter updating the pull request. |
| * Request that further design rationale be written up and shared (but a full [RFC]({{< relref "rfc_process" >}}) isn't necessary). |
| * This is appropriate when the rationale for a change is not clear, or a lack of accompanying documentation makes reviewing the code challenging. |
| This can commonly occur when further explanation would be valuable for people working in that area but no project-wide consensus is needed. |
| * Request that an RFC be written up and submitted. |
| * This is appropriate when adding a major new piece of code (e.g. an IP block) or when a change is cross-cutting and likely to require input from many stakeholders. |
| The expectation is that in many cases, project contributors will recognize when an RFC is needed before getting to the point of submitting a pull request. |
| |
| In all cases, clarity in your feedback will be valued. |
| For instance, if you are giving code style feedback but not reviewing higher level design decisions (perhaps because you are expecting another committer/contributor to do so), it is useful to say so. |
| |
| Where Committers disagree on the path forwards for a given PR and are unable to reach an agreement, the review moves to the TC. |