@@ -166,38 +166,88 @@ awareness of. For such changes, the following should be done:
166166 Discourse, and add the label to one of the watch categories under
167167 ``Notifications->Tags ``.
168168
169- .. _ code owners :
169+ .. _ maintainers :
170170
171- Code Owners
171+ Maintainers
172172-----------
173173
174- The LLVM Project relies on two features of its process to maintain rapid
175- development in addition to the high quality of its source base: the combination
176- of code review plus post-commit review for trusted maintainers. Having both is
177- a great way for the project to take advantage of the fact that most people do
178- the right thing most of the time, and only commit patches without pre-commit
179- review when they are confident they are right.
180-
181- The trick to this is that the project has to guarantee that all patches that are
182- committed are reviewed after they go in: you don't want everyone to assume
183- someone else will review it, allowing the patch to go unreviewed. To solve this
184- problem, we have a notion of an 'owner' for a piece of the code. The sole
185- responsibility of a code owner is to ensure that a commit to their area of the
186- code is appropriately reviewed, either by themself or by someone else. The list
187- of current code owners can be found in the file `CODE_OWNERS.TXT
188- <https://github.com/llvm/llvm-project/blob/main/llvm/CODE_OWNERS.TXT> `_ in the
189- root of the LLVM source tree.
190-
191- Note that code ownership is completely different than reviewers: anyone can
192- review a piece of code, and we welcome code review from anyone who is
193- interested. Code owners are the "last line of defense" to guarantee that all
194- patches that are committed are actually reviewed.
195-
196- Being a code owner is a somewhat unglamorous position, but it is incredibly
197- important for the ongoing success of the project. Because people get busy,
198- interests change, and unexpected things happen, code ownership is purely opt-in,
199- and anyone can choose to resign their "title" at any time. For now, we do not
200- have an official policy on how one gets elected to be a code owner.
174+ The LLVM Project aims to evolve features quickly while continually being in a
175+ release-ready state. In order to accomplish this, the project needs volunteers
176+ willing to do the less glamorous work to ensure we produce robust, high-quality
177+ products.
178+
179+ Maintainers are those volunteers; they are regular contributors who volunteer
180+ to take on additional community responsibilities beyond code contributions.
181+ Community members can find active and inactive maintainers for a project in the
182+ ``Maintainers.rst `` file at the root directory of the individual project.
183+
184+ Maintainers are volunteering to take on the following shared responsibilities
185+ within an area of a project:
186+
187+ * ensure that commits receive high-quality review, either by the maintainer
188+ or by someone else,
189+ * help to confirm and comment on issues,
190+ * mediate code review disagreements through collaboration with other
191+ maintainers (and other reviewers) to come to a consensus on how best to
192+ proceed with disputed changes,
193+ * actively engage with relevant RFCs,
194+ * aid release managers with backporting and other release-related
195+ activities,
196+ * be a point of contact for contributors who need help (answering questions
197+ on Discord/Discourse/IRC or holding office hours).
198+
199+ Each top-level project in the monorepo will specify one or more
200+ lead maintainers who are responsible for ensuring community needs are
201+ met for that project. This role is like any other maintainer role,
202+ except the responsibilities span the project rather than a limited area
203+ within the project. If you cannot reach a maintainer or don't know which
204+ maintainer to reach out to, a lead maintainer is always a good choice
205+ to reach out to. If a project has no active lead maintainers, it may be a
206+ reasonable candidate for removal from the monorepo. A discussion should be
207+ started on Discourse to find a new, active lead maintainer or whether the
208+ project should be discontinued.
209+
210+ All contributors with commit access to the LLVM Project are eligible to be a
211+ maintainer. However, we are looking for people who can commit to:
212+
213+ * engaging in their responsibilities the majority of the days in a month,
214+ * ensuring that they, and the community members they interact with, abide by
215+ the LLVM Community Code of Conduct, and
216+ * performing these duties for at least three months.
217+
218+ We recognize that priorities shift, job changes happen, burnout is real,
219+ extended vacations are a blessing, and people's lives are generally complex.
220+ Therefore, we want as little friction as possible for someone to become a
221+ maintainer or to step down as a maintainer.
222+
223+ *To become a new maintainer *, you can volunteer yourself by posting a PR which
224+ adds yourself to the area(s) you are volunteering for. Alternatively, an
225+ existing maintainer can nominate you by posting a PR, but the nominee must
226+ explicitly accept the PR so that it's clear they agree to volunteer within the
227+ proposed area(s). The PR will be accepted so long as at least one maintainer in
228+ the same project vouches for their ability to perform the responsibilities and
229+ there are no explicit objections raised by the community.
230+
231+ *To step down as a maintainer *, you can move your name to the "inactive
232+ maintainers" section of the ``Maintainers.rst `` file for the project, or remove
233+ your name entirely; no PR review is necessary. Additionally, any maintainer who
234+ has not been actively performing their responsibilities over an extended period
235+ of time can be moved to the "inactive maintainers" section by another active
236+ maintainer within that project with agreement from one other active maintainer
237+ within that project. If there is only one active maintainer for a project,
238+ please post on Discourse to solicit wider community feedback about the removal
239+ and future direction for the project. However, please discuss the situation
240+ with the inactive maintainer before such removal to avoid accidental
241+ miscommunications. If the inactive maintainer is unreachable, no discussion
242+ with them is required. Stepping down or being removed as a maintainer is normal
243+ and does not prevent someone from resuming their activities as a maintainer in
244+ the future.
245+
246+ *To resume activities as a maintainer *, you can post a PR moving your name from
247+ the "inactive maintainers" section of the ``Maintainers.rst `` file to the
248+ active maintainers list. Because the volunteer was already previously accepted,
249+ they will be re-accepted so long as at least one maintainer in the same project
250+ approves the PR and there are no explicit objections raised by the community.
201251
202252.. _include a testcase :
203253
@@ -849,9 +899,10 @@ The differences between both classes are:
849899
850900The basic rules for a back-end to be upstreamed in **experimental ** mode are:
851901
852- * Every target must have a :ref: `code owner<code owners> `. The `CODE_OWNERS.TXT `
853- file has to be updated as part of the first merge. The code owner makes sure
854- that changes to the target get reviewed and steers the overall effort.
902+ * Every target must have at least one :ref: `maintainer<maintainers> `. The
903+ `Maintainers.rst ` file has to be updated as part of the first merge. These
904+ maintainers make sure that changes to the target get reviewed and steers the
905+ overall effort.
855906
856907* There must be an active community behind the target. This community
857908 will help maintain the target by providing buildbots, fixing
@@ -926,7 +977,7 @@ Those wishing to add a new target to LLVM must follow the procedure below:
926977 actual patches (but they can be prepared before, to support the RFC). Create
927978 a sequence of N patches, numbered '1/N' to 'N/N' (make sure N is an actual
928979 number, not the letter 'N'), that completes the basic structure of the target.
929- 4. The initial patch should add documentation, code owners and triple support in
980+ 4. The initial patch should add documentation, maintainers, and triple support in
930981 clang and LLVM. The following patches add TableGen infrastructure to describe
931982 the target and lower instructions to assembly. The final patch must show that
932983 the target can lower correctly with extensive LIT tests (IR to MIR, MIR to
@@ -938,7 +989,7 @@ Those wishing to add a new target to LLVM must follow the procedure below:
938989 start working asynchronously on the target to complete support. They should
939990 still seek review from those who helped them in the initial phase, to make
940991 sure the progress is still consistent.
941- 7. Once all official requirements have been fulfilled (as above), the code owner
992+ 7. Once all official requirements have been fulfilled (as above), the maintainers
942993 should request the target to be enabled by default by sending another RFC to
943994 the `LLVM Discourse forums `_.
944995
@@ -963,7 +1014,7 @@ components to a high bar similar to "official targets", they:
9631014 * Must conform to all of the policies laid out in this developer policy
9641015 document, including license, patent, coding standards, and code of conduct.
9651016 * Must have an active community that maintains the code, including established
966- code owners .
1017+ maintainers .
9671018 * Should have reasonable documentation about how it works, including a high
9681019 quality README file.
9691020 * Should have CI to catch breakage within the project itself or due to
0 commit comments