Skip to content

Commit 8f861a0

Browse files
committed
Updating text to center it around extractive/non-extractive contributions
1 parent b9aaea9 commit 8f861a0

File tree

1 file changed

+58
-49
lines changed

1 file changed

+58
-49
lines changed

llvm/docs/DeveloperPolicy.rst

Lines changed: 58 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -294,49 +294,11 @@ Quality
294294
-------
295295

296296
Sending 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

453462
We prefer for this to be handled before submission but understand that it isn't
454463
possible 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
15021511
guided by two major concerns:
15031512

15041513
1. 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

15071516
Artificial intelligence systems raise many questions around copyright that have
15081517
yet 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
15191528
has increased the asymmetry between the work of producing a contribution, and
15201529
the work of reviewing the contribution. In order to protect the time and
15211530
attentional 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`_
15231532
bar. Contributors who repeatedly send low-quality contributions to our project
15241533
will be subject to escalating moderation actions and eventually a project ban.
15251534

0 commit comments

Comments
 (0)