just playing with tangled

meta: add initial `GOVERNANCE.md`

This is the result of a lot of back and forth, the weekly efforts of the
governance working group, consisting of:

- Martin von Zweigbergk (martinvonz)
- Waleed Khan (arxanas)
- Emily Shaffer (nasamuffin)
- Austin Seipp (thoughtpolice; yours truly)

Many thanks as well to emeritus member Khionu Sybiern, who helped kickstart this
whole process.

Signed-off-by: Austin Seipp <aseipp@pobox.com>

Changed files
+146
docs
governance
+144
GOVERNANCE.md
··· 1 + # Jujutsu Governance 2 + 3 + ## Overview 4 + 5 + Jujutsu is an open source project, led, maintained and designed for a worldwide 6 + community. Anyone who is interested can join, contribute, and participate in the 7 + decision-making process. This document is intended to help you understand how 8 + you can do that. 9 + 10 + ## Project roles 11 + 12 + We greatly appreciate everyone's contributions, and Jujutsu has benefited 13 + greatly from people who shared a single idea, change, or a suggestion, without 14 + ever becoming a regular contributor. We also want everybody to feel welcome to 15 + share their suggestions for the project (as long as you follow the Community 16 + Guidelines). 17 + 18 + There are two special roles for participants in the Jujutsu projects: 19 + Maintainers and Contributors. 20 + 21 + The role of the Maintainer is formally defined. These are the people empowered 22 + to collectively make final decisions about most aspects of the project. They are 23 + expected to take community's input seriously and to aim for the benefit of the 24 + entire community. 25 + 26 + The role of a Contributor is less formal. In situations where opinions become 27 + numerous or contentious, it is acceptable for the maintainers to assign more 28 + weight to the voices of the more established Contributors. 29 + 30 + ### Maintainers 31 + 32 + **Maintainers** are the people who contribute, review, guide, and collectively 33 + make decisions about the direction and scope of the project (see: 34 + [Decision Making](#decision-making)). Maintainers are elected by a 35 + [voting process](#adding-and-removing-maintainers). 36 + 37 + A typical Maintainer is not only someone who has made "large" contributions, but 38 + someone who has shown they are continuously committed to the project and its 39 + community. Some expected responsibilities of maintainers include (but are not 40 + exclusively limited to): 41 + 42 + - Displaying a high level of commitment to the project and its community, and 43 + being a role model for others. 44 + - Writing patches &mdash; a lot of patches, especially "glue code" or "grunt 45 + work" or general "housekeeping"; fixing bugs, ensuring documentation is always 46 + high quality, consistent UX design, improving processes, making judgments on 47 + dependencies, handling security vulnerabilities, and so on and so forth. 48 + - Reviewing code submitted by others &mdash; with an eye to maintainability, 49 + performance, code quality, and "style" (fitting in with the project). 50 + - Participating in design discussions, especially with regards to architecture 51 + or long-term vision. 52 + - Ensuring the community remains a warm and welcoming place, to new and veteran 53 + members alike. 54 + 55 + This is not an exhaustive list, nor is it intended that every Maintainer does 56 + each and every one of these individual tasks to equal amounts. Rather this is 57 + only a guideline for what Maintainers are expected to conceptually do. 58 + 59 + In short, Maintainers are the outwardly visible stewards of the project. 60 + 61 + #### Current list of Maintainers 62 + 63 + The current list of Maintainers: 64 + 65 + - Austin Seipp (@thoughtpolice) 66 + - Ilya Grigoriev (@ilyagr) 67 + - Martin von Zweigbergk (@martinvonz) 68 + - Waleed Khan (@arxanas) 69 + - Yuya Nishihara (@yuja) 70 + 71 + ### Contributors 72 + 73 + We consider contributors to be active participants in the project and community 74 + who are _not_ maintainers. These are people who might: 75 + 76 + - Help users by answering questions 77 + - Participating in lively and respectful discussions across various channels 78 + - Submit high-quality bug reports, reproduce reported bugs, and verifying fixes 79 + - Submit patches or pull requests 80 + - Provide reviews and input on others' pull requests 81 + - Help with testing and quality assurance 82 + - Submit feedback about planned features, use cases, or bugs 83 + 84 + We essentially define them as **people who actively participate in the 85 + project**. Examples of things that would _not_ make you a contributor are: 86 + 87 + - Submitting a single bug report and never returning 88 + - Writing blog posts or other evangelism 89 + - Using the software in production 90 + - Forking the project and maintaining your own version 91 + - Writing a third-party tool or add-on 92 + 93 + While these are all generally quite valuable, we don't consider these ongoing 94 + contributions to the codebase or project itself, and on their own do not 95 + constitute "active participation". 96 + 97 + ## Processes 98 + 99 + For the purposes of making decisions across the project, the following processes 100 + are defined. 101 + 102 + ### Decision-Making 103 + 104 + The person proposing a decision to be made (i.e. technical, project direction, 105 + etc.) can offer a proposal, along with a 2-to-4 week deadline for discussion. 106 + During this time, Maintainers may participate with a vote of: 107 + 108 + A) Support B) Reject C) Abstain 109 + 110 + Each Maintainer gets one vote. The total number of "participating votes" is the 111 + number of Maintainer votes which are not Abstain. The proposal is accepted when 112 + more than half of the participating votes are Support. 113 + 114 + In the event that a decision is reached before the proposed timeline, said 115 + proposal can move on and be accepted immediately. In the event no consensus is 116 + reached, a proposal may be re-submitted later on. 117 + 118 + This document itself is subject to the Decision-Making process by the existing 119 + set of Maintainers. 120 + 121 + ### Adding and Removing Maintainers 122 + 123 + An active Contributor may, at any given time, nominate themselves or another 124 + Contributor to become a Maintainer. This process is purely optional and no 125 + Contributor is expected to do so; however, self-nomination is encouraged for 126 + active participants. A vote and discussion by the existing Maintainers will be 127 + used to decide the outcome. 128 + 129 + Note that Contributors should demonstrate a high standard of continuous 130 + participation to become a Maintainer; the upper limit on the number of 131 + Maintainers is practically bounded, and so rejection should be considered as a 132 + real possibility. As the scope of the project changes, this limit may increase, 133 + but it is fundamentally fluid. (If you are unsure, you are free to privately ask 134 + existing Maintainers before self-nominating if there is room.) 135 + 136 + A Maintainer may, at any time, cede their responsibility and step down without a 137 + vote. 138 + 139 + A Maintainer can be removed by other Maintainers, subject to a vote of at-least 140 + a 2/3rds majority from the existing Maintainer group (excluding the vote of the 141 + Maintainer in question). This can be due to lack of participation or conduct 142 + violations, among other things. Note that Maintainers are subject to a higher 143 + set of behavioral and communicative standards than average contributor or 144 + participant.
+1
docs/governance/GOVERNANCE.md
··· 1 + ../../GOVERNANCE.md
+1
mkdocs.yml
··· 137 137 - 'Design Doc Blueprint': 'design_doc_blueprint.md' 138 138 - 'Releasing': 'releasing.md' 139 139 - 'Temporary Voting for Governance': 'governance/temporary-voting.md' 140 + - 'Governance': 'governance/GOVERNANCE.md' 140 141 141 142 - 'Design docs': 142 143 - 'git-submodules': 'design/git-submodules.md'