Following our effort to establish and update maintainer lists, and multiple discussions in the Project Council, we would like to ask the community for feedback on the perception of the maintainer and lead maintainer roles as well as whether and how they may be complemented or clarified.
This is not a policy change proposal but a request for comments, contributions and community brainstorming.
- Do we understand “maintainer” as a mostly organizational/managerial role (triage, mediation, information forwarding) or as a technical leadership role (keep consistent technical direction, influence design)?
Our developer policy states that
[…] the project needs volunteers willing to do the less glamorous work to ensure we produce robust, high-quality products.
Maintainers are those volunteers; they are regular contributors who volunteer to take on additional community responsibilities beyond code contributions. […]
suggesting that maintainers have the same rights as any other contributors but more responsibilities (* interpreting the semantics of “regular” as “normal” rather than as “more than occasional”). This is reinforced by further wording:
All contributors with commit access to the LLVM Project are eligible to be a maintainer.
This is reflective of our open, community-driven governance approach but less common than the stance many other open projects adopt, Linux and Pytorch come to mind as example, where maintainers play a more significant role in driving the technical direction of the project and deciding which contributions will be accepted.
There is currently no intention to change towards such a contribution model.
However, this creates a confusion, not always limited to occasional contributors or folks contributing to multiple open projects, as to whether LLVM maintainers have more rights (up to a veto right on contributions) or otherwise carry heavier weight in community decisions. This is reinforced by the listed responsibilities of a maintainer:
ensure that commits receive high-quality review, either by the maintainer or by someone else,
help to confirm and comment on issues,
mediate code review disagreements through collaboration with other maintainers (and other reviewers) to come to a consensus on how best to proceed with disputed changes,
actively engage with relevant RFCs,
aid release managers with backporting and other release-related activities,
be a point of contact for contributors who need help (answering questions on Discord/Discourse or holding office hours).
that effectively require a maintainer to be a proven expert in a field, which implicitly gives them a stronger voice.
- Do we understand “lead maintainer” as covering “everything not covered by somebody else” in the project (historic description of Chris L. in the maintainers document) or as covering everything in the project, potentially having more authority than regular maintainers of the same project?
The policy is rather terse on this:
This role is like any other maintainer role, except the responsibilities span the project rather than a limited area within the project. If you cannot reach a maintainer or don’t know which maintainer to reach out to, a lead maintainer is always a good choice to reach out to.
This is somewhat different from point 1. We have two major, actively maintained projects – LLD and MLIR – that are currently lacking lead maintainers despite having “regular” maintainers in each area: different targets for LLD, explicit categories for MLIR. It has proven challenging or contentious to find lead maintainers for those given the breadth.
- Should we have a separate, purely organizational role in addition to or instead of lead maintainers?
One of the plausible ideas is to introduce a separate role, tentatively called “point of contact” for the project, that would focus specifically on the communication aspects of the current maintainer role: add the right people to review, ping them to comment on RFCs, tell contributors who they should contact further for a specific question. This is more of an organizational role that requires less technical depth and more breadth.
- Do we need lead maintainers if all of the code in a project is already covered by someone?
Another plausible idea is to relax the requirement for lead maintainers as long as all subdirectories of a top-level project are covered by some maintainers. This would “resolve” the situation with LLD and MLIR, but is more difficult to keep track of in the longer run, and potentially harder for contributors to navigate.
You can also find record of the Project Council discussions in the document:
we several sessions last year where the topic was discussed.
All sorts of suggestions and comments are highly appreciated. cc @project-council