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.]