Skip to content

Commit 8bf1120

Browse files
Pierre-Sassoulascdce8pjacobtylerwalls
authored
Document the governance model and the path to maintainership (#8329)
Co-authored-by: Marc Mueller <[email protected]> Co-authored-by: Jacob Walls <[email protected]>
1 parent c4f059b commit 8bf1120

File tree

3 files changed

+116
-0
lines changed

3 files changed

+116
-0
lines changed
Lines changed: 110 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,110 @@
1+
============
2+
Governance
3+
============
4+
5+
How to become part of the project ?
6+
-----------------------------------
7+
8+
How to become a contributor ?
9+
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
10+
11+
- Follow the code of conduct
12+
- Search by yourself before asking for help
13+
- Open an issue
14+
- Investigate an issue and report your finding
15+
- Open a merge request directly if you feel it's a consensual change
16+
17+
Reporting a bug is being a contributor already.
18+
19+
How to become a triager ?
20+
^^^^^^^^^^^^^^^^^^^^^^^^^
21+
22+
- Contribute for more than 3 releases consistently.
23+
- Do not be too opinionated, follow the code of conduct without requiring emotional
24+
works from the maintainers. It does not mean that disagreements are impossible,
25+
only that arguments should stay technical and reasonable so the conversation
26+
is civil and productive.
27+
- Have a maintainer suggest that you become triager, without you asking
28+
- Get unanimous approval or neutral agreement from current maintainers.
29+
30+
How to become a maintainer ?
31+
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
32+
33+
- Contribute two big code merge requests over multiple releases (for example
34+
one checker in 2.13 and the following bug after release and one complicated
35+
bug fixes in 2.14). Otherwise contributing for more than 3 releases consistently
36+
with great technical and interpersonal skills.
37+
- Take ownership of a part of the code that is not maintained well at the moment
38+
or that you contributed personally (if we feel we can't merge something without
39+
your review, you're going to be able to merge those yourself soon).
40+
- Triage for multiple months (close duplicate, clean up issues, answer questions...)
41+
- Have an admin suggest that you become maintainer, without you asking
42+
- Get unanimous approval or neutral agreement from current maintainers.
43+
44+
45+
How to become an admin ?
46+
^^^^^^^^^^^^^^^^^^^^^^^^
47+
48+
- Contribute for several hundreds of commits over a long period of time
49+
with excellent interpersonal skills and code quality.
50+
- Maintain pylint for multiple years (code review, triaging and maintenance tasks).
51+
- At this point probably have another admin leave the project or
52+
become inactive for years.
53+
- Have an admin suggest that you become an admin, without you asking.
54+
- Get unanimous approval or neutral agreement from current admins.
55+
56+
57+
How are decisions made ?
58+
------------------------
59+
60+
Everyone is expected to follow the code of conduct. pylint is a do-ocracy / democracy.
61+
You're not allowed to behave poorly because you contributed a lot. But if
62+
you're not going to do the future maintenance work, your valid opinions might not be
63+
taken into account by those that will be affected by it.
64+
65+
What are the fundamental tenets of pylint development?
66+
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
67+
68+
General:
69+
70+
- We favor correctness over performance, because pylint is not used primarily
71+
for its performance. Performance is still important and needs to be taken into
72+
account from the get go.
73+
74+
- We then favor false negatives over false positives if correctness is
75+
impossible to achieve.
76+
77+
- We try to keep the configuration sane, but if there's a hard decision to take we
78+
add an option so that pylint is multiple sizes fit all (after configuration)
79+
80+
Where to add a new checker or message:
81+
82+
- Error messages (things that will result in an error if run) should be builtin
83+
checks, activated by default
84+
85+
- Messages that are opinionated, even slightly, should be opt-in (added as :ref:`an extension<plugins>`)
86+
87+
- We don't shy away from opinionated checks (like the while checker), but there's such a
88+
thing as too opinionated, if something is too opinionated it should be an external
89+
:ref:`pylint plugin<plugins>`.
90+
91+
How are disagreements handled ?
92+
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
93+
94+
When something is not consensual users, maintainers, and admins discuss until an
95+
agreement is reached.
96+
97+
Depending on the difficulty of the discussion and the importance of a fast resolution,
98+
a decision can be taken:
99+
100+
- Unanimously between discussion participants, contributors and maintainers (preferably)
101+
102+
- By asking discussion participants for their opinions with an emoji survey in the
103+
issue and then using the majority if no maintainers feel strongly about the issue.
104+
105+
- By majority of admins if no admins feel strongly about the issue.
106+
107+
- By asking all users for their opinions in a new issue that will be pinned for
108+
multiple months before taking the decision if two admins feel strongly on an
109+
opposite side of the issue. Once the result is obvious the majority decision
110+
is not up for discussion anymore.

doc/development_guide/contributor_guide/index.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,3 +13,4 @@ The contributor guide will help you if you want to contribute to pylint itself.
1313
tests/index
1414
profiling
1515
release
16+
governance

doc/whatsnew/fragments/8329.other

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
The governance model and the path to become a maintainer have been documented as
2+
part of our effort to guarantee that the software supply chain in which pylint is
3+
included is secure.
4+
5+
Refs #8329

0 commit comments

Comments
 (0)