-
Notifications
You must be signed in to change notification settings - Fork 356
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
meta: add initial GOVERNANCE.md
#5040
base: main
Are you sure you want to change the base?
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,132 @@ | ||
# Jujutsu Governance | ||
|
||
## Overview | ||
|
||
Jujutsu is an open source project, lead, maintained and designed for a worldwide | ||
community. Anyone who is interested can join, contribute, and participate in the | ||
decision making process. This document is intended to help you understand how | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. nit: hyphenate "decision-making" (maybe just my personal preference, but i noticed that wikipedia does it) |
||
you can do that. | ||
|
||
## Project roles | ||
|
||
There are two broadly defined roles in the Jujutsu project: **Maintainers** and | ||
**Contributors**. | ||
|
||
### Maintainers | ||
|
||
At the top of the hierarchy are the **Maintainers**. We consider maintainers to | ||
be the people who contribute, review, guide, and collectively make decisions | ||
about the direction and scope of the project. | ||
|
||
A typical maintainer is not only someone who has made "large" contributions, but | ||
someone who has shown they are continuously committed to the project and its | ||
community. Some expected responsibilities of maintainers include (but are not | ||
exclusively limited to): | ||
|
||
- Displaying a high level of commitment to the project and its community, and | ||
being a role model for others. | ||
- Writing code — a lot of code, especially "glue code" or "grunt work"; | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Do we want to say anything about documentation? Is it expected that a documentation-focused maintainer can never write a line of executed code in their time with the project, but still be an expert and guide the usability aspects of the project? Although I'd be quite happy to see that apply to first-party documentation. It doesn't make sense to me, for example, that someone who spills a lot of digital ink about jj on their own personal blog should automagically get to be a maintainer - that doesn't check the "commitment to the health of the project" box for me. |
||
fixing bugs, improving processes, making judgments on dependencies, handling | ||
security vulnerabilities, and so on and so forth. | ||
- Reviewing code submitted by others — with an eye to maintainability, | ||
performance, code quality, and "style" (fitting in with the project). | ||
- Participating in design discussions, especially with regards to architecture | ||
or long-term vision. | ||
- When necessary, participate in a collective voting process to resolve | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I worry that this one doesn't quite fit with the others. Voting on conflicts and decisionmaking is a privilege and a duty of a maintainer, not just a thing that someone typically does before being considered for maintainership, right? It might make more sense to call out the duty of the maintainer in a separate list than the "typical behavior of the maintainer" list here. |
||
conflicts and make decisions for which there is no clear answer. | ||
|
||
This is not an exhaustive list, nor is it intended that every maintainer does | ||
each and every one of these individual tasks to equal amounts. Rather this is | ||
only a guideline for what maintainers are expected to conceptually do. | ||
|
||
In short, Maintainers are the outwardly visible stewards of the project. | ||
|
||
#### Current list of maintainers | ||
|
||
The current list of maintainers: | ||
|
||
- Yuya Nishihara | ||
- Martin von Zweigbergk | ||
- TBD | ||
|
||
TODO: Pending on the initial process of open nominations, decided by Yuya and | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. nit: drop the "on", i think |
||
Martin, more names will be added. | ||
|
||
### Contributors | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. The Contributor role has no authority associated with it, and I don't think we plan to have a record anywhere of who is considered a Contributor and who is not. So I think this section is mostly about saying that we appreciate people more if they are more active in the project. Should we clarify that here (i.e. that it's not a formal role)? Do people find it useful to have this definition of the informal role? (Unlike the other nits on this doc, please leave this one open so people can comment, @thoughtpolice) There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
It is useful for a Rust thanks like website and to distinguish some longtime contributors from passerby's.
I think this will work for a few years until the project has a few large components (server, web-frontend, etc), where knowing who to contact for a design or for knowledge behind previous decisions will be useful.
IMO, it is useful to have if the project wants to do something with it long-term. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Also this doesn't distinguish between social moderation roles yet (the current maintainer role in Discord and on GitHub [#2227]), which is something I think should also be defined here. |
||
|
||
We consider contributors to be active participants in the project and community | ||
who are *not* maintainers. These are people who might: | ||
|
||
- Help users by answering questions | ||
- Participating in lively and respectful discussions across various channels | ||
- Submit high quality bug reports | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. nit: hyphenate "high-quality" |
||
- Submit patches or pull requests | ||
- Help with testing and quality assurance | ||
- Submit feedback about planned features, use cases, or bugs | ||
|
||
Note that we consider Contributors to all be valuable, but we *do* define them | ||
as people **who actively participate in the project**. Examples of things that | ||
Comment on lines
+67
to
+68
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. This seems to be saying that we consider non-Contributors valuable. Is that what you meant? Because the "but" doesn't currently seem to indicate any contradiction, so it's a bit confusing. I'm not sure how to say it in a better way. We could just drop the part saying that we consider them valuable.
Comment on lines
+67
to
+68
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. nit: move "people" inside the |
||
would *not* make you a contributor are: | ||
|
||
- Submitting a single bug report and never returning | ||
- Writing blog posts or other evangelism | ||
- Using the software in production | ||
- Forking the project and maintaining your own version | ||
|
||
While these are all generally quite valuable, they don't directly contribute to | ||
the existing community of users where they are at, and on their own do not | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Finding this part pretty hard to understand: "contribute to the existing community of users where they are at" Maybe can you say in comments in way more words what you meant, and we can try to find a concise way to say it more clearly than this together? |
||
constitute "active participation". | ||
|
||
Contributors and their input is valued and their input is expected to be taken | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. nit: "Contributors and their input are valued" |
||
and respected by Maintainers; not every discussion will result in a change, but | ||
it is intended that every voice will be heard. | ||
|
||
## Processes | ||
|
||
For the purposes of making decisions across the project, the following processes | ||
are defined. | ||
|
||
### Decision Making | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. nit: hyphenate |
||
|
||
The person proposing a decision to be made (i.e. technical, project direction, | ||
etc) can offer a proposal, along with a discussion timeline from 2-to-4 weeks. | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. nit: "from" and the hyphenated "2-to-4" seem inconsistent. Drop the hyphens? Or maybe "along with a 2-to-4-week timeline" There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. +1 to the latter suggestion |
||
During this time, Maintainers may participate with a vote of: | ||
|
||
A) Support | ||
B) Rejection | ||
C) Abstinence | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. "Abstention"? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Could also try to put them all into the same ...mood? tense? whatever. "Support", "Reject", "Abstain", so they're all verbs |
||
|
||
A final decision can be reached upon consensus being achieved, which is defined | ||
as more than half of the participating votes (i.e. excluding abstaining votes.) | ||
Comment on lines
+99
to
+100
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Slightly simpler: "A final decision requires more than half of the participating votes (i.e. excluding abstaining votes.)". I mostly wanted to avoid "consensus" and the risk of the reader trying to guess if that means >=50%. We do say that we mean >50%, but the word "consensus" doesn't seem to add anything. I think the line below can also be dropped because it's just the inverse implication from this sentence (i.e. |
||
In the event that a split vote occurs, this would qualify as non-consensus. | ||
|
||
In the event that a decision is reached before the proposed timeline, said | ||
proposal can move on and be accepted immediately. In the event no consensus is | ||
reached, a proposal may be re-submitted later on. | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Do we also want to make provision for a proposal that was rejected (not just non-consensus) but where new information comes up later on that makes it worth reevaluating? |
||
|
||
This document itself is subject to the Decision Making process by the existing | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. nit: hyphenate "Decision-Making" here too |
||
set of Maintainers. | ||
|
||
### Adding and Removing Maintainers | ||
|
||
An active Contributor may, at any given time, nominate themselves or another | ||
Contributor to become a Maintainer. This process is purely optional and no | ||
Contributor is expected to do so; however, self-nomination is encouraged for | ||
active participants. A vote and discussion by the existing Maintainers will be | ||
used to decide the outcome. | ||
Comment on lines
+115
to
+116
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Does this require >50% or >=2/3 of the Maintainers' votes? |
||
|
||
Note that Contributors should demonstrate a high standard of continuous | ||
participation to become a Maintainer; the upper limit on the number of | ||
Maintainers is practically bounded, and so rejection should be considered as a | ||
real possibility. As the scope of the project changes, this limit may increase, | ||
but it is fundamentally fluid. (If you are unsure, you are free to privately ask | ||
existing Maintainers before self-nominating if there is room.) | ||
|
||
A Maintainer may, at any time, cede their responsibility and step down without a | ||
vote. | ||
|
||
A Maintainer can be removed by other Maintainers, subject to a vote of at-least | ||
a 2/3rds majority from the existing Maintainer group (including the vote of the | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. What's the reason to include the vote of the person nominated for removal? Usually projects explicitly exclude that person's vote (like in Sociocracy) - I'm curious about the rationale for including it, which seems unusual. |
||
Maintainer in question.) This can be due to lack of participation, conduct | ||
violations, et cetera. Note that Maintainers are subject to a higher set of | ||
behavioral and communicative standards than average contributor or participant. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
nit: s/lead/led/