| # Become a committer |
| |
| ## TL;DR |
| |
| - Committership gives write access to the dev/* branches of the repo and |
| Perfetto CI bots. |
| - You don't need to be a committer to contribute patches to Perfetto as you can |
| work from forked repos like in any other GitHub project. |
| - If you contribute frequently to the project, having committer access to dev/* |
| branches can make certain workflows easier (e.g., stacked patches). |
| - You can become a Perfetto committer if you have a track record of high quality |
| contributions to the project. |
| |
| ## What is a committer |
| |
| Technically, a committer is someone who can submit their own patches or patches |
| from others. A committer can also review patches from others, though all patches |
| need to either be authored by or reviewed by a CODEOWNER as well. |
| |
| This privilege is granted with some expectation of responsibility: committers |
| are people who care about the Perfetto project and want to help maintain it and |
| meet its goals. A committer is not just someone who can make changes, but |
| someone who has demonstrated their ability to collaborate with the team, get the |
| most knowledgeable people to review code, contribute high-quality code, and |
| follow through to fix issues (in code or tests). |
| |
| A committer is a contributor to the Perfetto project success and a citizen |
| helping the projects succeed. |
| |
| ## Becoming a committer |
| |
| To become a committer, you must get at least ten non-trivial patches merged into |
| Perfetto, and get an existing committer to nominate you. You will need at least |
| two committers, one of which a top-level owners, to support the nomination. |
| |
| We want to see sufficient evidence that you can follow Perfetto best practices |
| and in situations where you're uncertain, you ask for additional guidance |
| effectively. Perhaps the most important aspect of being a committer is that you |
| will be able to review and approve other people's changes, so we're looking for |
| whether we think you'll do a good job at that. |
| |
| So, in addition to actually making the code changes, you're basically |
| demonstrating your: |
| |
| - Commitment to the project (10+ good patches require a lot of valuable time) |
| - Ability to collaborate with the team and communicate well |
| - Understanding of how the team works (policies, processes for testing and code |
| review, etc) |
| - Understanding of the projects' code base and coding style |
| - Ability to judge when a patch might be ready for review and to submit (your |
| work should not generally have glaring flaws unless you're explicitly requesting |
| feedback on an incomplete patch) |
| - Ability to write good code (last but certainly not least) |
| |
| ## Non-trivial patches |
| |
| It is unfortunately not easy to define what a non-trivial patch is, because |
| a one-line change might be subtle, and changes that touch lots of files might |
| still be trivial. For example, changes that are more-or-less mechanical |
| (e.g., renaming functions) will probably be considered trivial. |
| |
| Even a small change is non-trivial if the rationale or benefit was non-trivial |
| to arrive at. |
| |
| If you aren't certain whether your work meets the bar, ask an existing |
| committer. |
| |
| ## Nomination process |
| |
| If you think you might be ready to be a committer, ask one of the reviewers of |
| your CLs or another committer familiar with your work to see if they will |
| nominate you. |
| |
| If they are, they nominate you by sending a pull request that edits the |
| Committers section of the /CONTRIBUTORS.txt. |
| |
| The CONTRIBUTORS.txt entry should have the following: |
| |
| - First and last name |
| - Email address. |
| - GitHub handle. |
| - A one line description of the area you work on / retain knowledge of. |
| |
| The pull request comment should have: |
| |
| - An explanation of why you should be a committer. |
| - A list of representative landed patches. |
| |
| Two other committers need to second your nomination by approving the PR. |
| |
| We will wait five working days (UK) after the nomination for votes and |
| discussion. If there is discussion, we'll wait an additional two working days |
| (UK) after the last message in the discussion, to ensure people have time to |
| review the nomination. |
| |
| If you get the votes and no one objects, at that point you become a committer. |
| If anyone objects or wants more information, the committers discuss and usually |
| come to a consensus. If issues can't be resolved, there's a vote among current |
| committers. |
| |
| ## Maintaining committer status |
| |
| A community of committers working together to move the project forward is |
| essential to creating successful projects that are rewarding to work on. If |
| there are problems or disagreements within the community, they can usually be |
| solved through open discussion and debate. |
| |
| In the unhappy event that a committer continues to disregard good citizenship |
| (or actively disrupts the project), we may need to revoke that person's status. |
| The process is the same as for nominating a new committer: someone suggests the |
| revocation with a good reason, two people second the motion, and a vote may be |
| called if consensus cannot be reached. |
| |
| In addition, as a security measure, if you are inactive on for more than |
| a year, we may revoke your committer privileges and remove your address(es) |
| from any OWNERS files. This is not meant as a punishment, so if you wish to |
| resume contributing after that, contact a maintainer to ask that it be restored, |
| and we will normally do so. |
| |
| [Props: Much of this was inspired by/copied from the committer policies of |
| Chromium, WebKit and Mozilla.] |