@@ -166,38 +166,88 @@ awareness of. For such changes, the following should be done:
166
166
Discourse, and add the label to one of the watch categories under
167
167
``Notifications->Tags ``.
168
168
169
- .. _ code owners :
169
+ .. _ maintainers :
170
170
171
- Code Owners
171
+ Maintainers
172
172
-----------
173
173
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.
201
251
202
252
.. _include a testcase :
203
253
@@ -849,9 +899,10 @@ The differences between both classes are:
849
899
850
900
The basic rules for a back-end to be upstreamed in **experimental ** mode are:
851
901
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.
855
906
856
907
* There must be an active community behind the target. This community
857
908
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:
926
977
actual patches (but they can be prepared before, to support the RFC). Create
927
978
a sequence of N patches, numbered '1/N' to 'N/N' (make sure N is an actual
928
979
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
930
981
clang and LLVM. The following patches add TableGen infrastructure to describe
931
982
the target and lower instructions to assembly. The final patch must show that
932
983
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:
938
989
start working asynchronously on the target to complete support. They should
939
990
still seek review from those who helped them in the initial phase, to make
940
991
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
942
993
should request the target to be enabled by default by sending another RFC to
943
994
the `LLVM Discourse forums `_.
944
995
@@ -963,7 +1014,7 @@ components to a high bar similar to "official targets", they:
963
1014
* Must conform to all of the policies laid out in this developer policy
964
1015
document, including license, patent, coding standards, and code of conduct.
965
1016
* Must have an active community that maintains the code, including established
966
- code owners .
1017
+ maintainers .
967
1018
* Should have reasonable documentation about how it works, including a high
968
1019
quality README file.
969
1020
* Should have CI to catch breakage within the project itself or due to
0 commit comments