@@ -294,49 +294,11 @@ Quality
294294-------
295295
296296Sending patches, PRs, RFCs, comments, etc to LLVM, is not free -- it takes a lot
297- of maintainer time and energy to review those contributions. Our quality bar can
298- be summarized with the **golden rule ** that a contribution should be worth more
299- to the project than the time it takes to review it.
300-
301- However, this rule is held in balance with our goal to make the LLVM project
302- welcoming and open to aspiring compiler engineers who are willing to invest time
303- and effort to learn and grow, because growing our contributor base and
304- potentially recruiting new maintainers helps sustain the project over the long
305- term.
306-
307- Contributors who repeatedly make low-value contributions according to the
308- standards of our maintainers will be asked to increase the quality of their
309- contributions or cease contributing. As a community, we encourage maintainers to
310- invest effort in reviewing work from new contributors. We label PRs from
311- first-time contributors to set maintainer expectations on quality. However, we
312- expect to see a growth pattern in the quality of a contributor's work over time.
313- Maintainers can use their discretion and push back against burdensome
314- contributions and ask contributors to meet their quality bar. In addition to the
315- minimum guidelines outlined in thie section, maintainers can set their own
316- quality standards using their considerable domain expertise.
317-
318- The following is a checklist of some of the minimum quality standards that any
319- change must satisfy before being reviewed in detail or committed to the main
320- development branch:
321-
322- #. Bug fixes and new features should `include a testcase `_ so we know if the
323- fix/feature ever regresses in the future.
324-
325- #. The code should compile cleanly on all supported platforms.
326-
327- #. Code must pass the relevant regression test suites on all supported
328- plaftorms.
329-
330- #. Code must adhere to the `LLVM Coding Standards <CodingStandards.html >`_.
331-
332- #. Ensure that links in source code and test files point to publicly available
333- resources and are used primarily to add additional information rather than
334- to supply critical context. The surrounding comments should be sufficient
335- to provide the context behind such links.
336-
337- Our quality policy goals are captured by this quote from `Working in Public: The
338- Making and Maintenance of Open Source Software
339- <https://press.stripe.com/working-in-public> `_ by Nadia Eghbal:
297+ of maintainer time and energy to review those contributions! Our **golden rule **
298+ is that a contribution should be worth more to the project than the time it
299+ takes to review it. These ideas are captured by this quote from the book
300+ `Working in Public <https://press.stripe.com/working-in-public >`_ by Nadia
301+ Eghbal:
340302
341303 .. pull-quote ::
342304
@@ -350,6 +312,52 @@ Making and Maintenance of Open Source Software
350312 review, given the potential upside."
351313 -- Nadia Eghbal
352314
315+ We encourage non-extractive contributions that help sustain the project. We want
316+ the LLVM project to be welcoming and open to aspiring compiler engineers who are
317+ willing to invest time and effort to learn and grow, because growing our
318+ contributor base and recruiting new maintainers helps sustain the project over
319+ the long term. We therefore label pull requests from new contributors and
320+ encourage maintainers to spend their time to help new contributors learn.
321+
322+ However, we expect to see a growth pattern in the quality of a contributor's
323+ work over time. Maintainers are empowered to push back against *extractive *
324+ contributions and explain why they believe a contribution is overly burdensome
325+ or not aligned with the project goals.
326+
327+ Contribution size is an imperfect proxy of the burden of review, and the
328+ potential user base of the feature is another possible proxy for the value of
329+ the contribution. The best ways to make a change less extractive and more
330+ valuable are to reduce its size or complexity or to increase its usefulness to
331+ the community. These factors are impossible to weigh objectively, and our
332+ project policy leaves this determination up to the maintainers of the project,
333+ i.e. those who are doing the work of sustaining the project.
334+
335+ While our quality policy is subjective at its core, here are some guidelines
336+ that can be used to assess the quality of a contribution:
337+
338+ * Bug fixes and new features should `include a testcase `_ so we know if the
339+ fix/feature ever regresses in the future.
340+
341+ * Pull requests should build and pass premerge checks. For first-time
342+ contributors, this will require an initial cursory review to run the checks.
343+
344+ * Code must adhere to the `LLVM Coding Standards <CodingStandards.html >`_.
345+
346+ * Ensure that links in source code and test files point to publicly available
347+ resources and are used primarily to add additional information rather than to
348+ supply critical context. The surrounding comments should be sufficient to
349+ provide the context behind such links.
350+
351+ * Use relevant test suites and verification tools (e.g. `Alive2
352+ <https://github.com/AliveToolkit/alive2> `_) and provide evidence that they
353+ pass.
354+
355+ * RFCs and issues should be clear and concise.
356+
357+ * Issues with compact reproducers, especially those which can be replicated on
358+ `the godbolt compiler explorer <https://godbolt.org >`_, are considered high
359+ quality.
360+
353361
354362.. _commit messages :
355363
@@ -438,17 +446,18 @@ found in the future that the change is responsible for. For example:
438446
439447* The code should compile cleanly on all supported platforms.
440448
441- * The changes should not cause any correctness regressions in the ``llvm-test ``
442- suite and must not cause any major performance regressions.
449+ * The changes should not cause any correctness regressions in the
450+ `llvm-test-suite <https://github.com/llvm/llvm-test-suite >`_
451+ and must not cause any major performance regressions.
443452
444453* The change set should not cause performance or correctness regressions for the
445454 LLVM tools.
446455
447456* The changes should not cause performance or correctness regressions in code
448457 compiled by LLVM on all applicable targets.
449458
450- * You are expected to address any `GitHub Issues < https://github.com/llvm/llvm-project/issues >`_ that
451- result from your change.
459+ * You are expected to address any `GitHub Issues
460+ <https://github.com/llvm/llvm-project/issues> `_ that result from your change.
452461
453462We prefer for this to be handled before submission but understand that it isn't
454463possible to test all of this for every submission. Our build bots and nightly
@@ -1502,7 +1511,7 @@ enable contributors to use the latest and greatest tools available. Our policy
15021511guided by two major concerns:
15031512
150415131. Ensuring that contributions do not contain copyrighted content.
1505- 2. Ensuring that contributions are not burdensome and exceed our `quality `_ bar.
1514+ 2. Ensuring that contributions are not extractive and meet our `quality `_ bar.
15061515
15071516Artificial intelligence systems raise many questions around copyright that have
15081517yet to be answered. Our policy on AI tools is guided by our copyright policy:
@@ -1519,7 +1528,7 @@ volumes of code and text with little effort on the part of the contributor. This
15191528has increased the asymmetry between the work of producing a contribution, and
15201529the work of reviewing the contribution. In order to protect the time and
15211530attentional resources of LLVM project maintainers, the onus is on contributors
1522- to justify why their contributions are not burdensome and exceed our `quality `_
1531+ to justify why their contributions are not extractive and meet our `quality `_
15231532bar. Contributors who repeatedly send low-quality contributions to our project
15241533will be subject to escalating moderation actions and eventually a project ban.
15251534
0 commit comments