|
| 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. |
0 commit comments