Skip to content
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

The JSON Schema Charter #325

Open
wants to merge 83 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
83 commits
Select commit Hold shift + click to select a range
0b8d59b
Initial commit of charter template Copy from OpenJS Foundation CPC repo
Relequestual Feb 7, 2023
4666a22
Add comments to heading for people who might edit the file, and a lin…
Relequestual Feb 7, 2023
3cc72d2
Add content for Guiding Principles
Relequestual Feb 7, 2023
b7de5e1
Add content for Scope section
Relequestual Feb 7, 2023
a4bf147
Modified version of Scope
Relequestual Feb 7, 2023
327b09e
Add sections 1.1 and 1.2 re scope In-scope does not yet have any sugg…
Relequestual Feb 7, 2023
cdc7cf5
Add Relationship with OpenJS Foundation CPC section
Relequestual Feb 7, 2023
d60d388
Add Other Formal Project Relationships section Left blank
Relequestual Feb 7, 2023
ece5e53
Add Governing Body (TSC) section
Relequestual Feb 7, 2023
2d38695
Add Roles and Responsibilities section
Relequestual Feb 9, 2023
29ed1a5
Add Project Operations and Management section
Relequestual Feb 9, 2023
c9a6006
Add Decision-making and Voting section
Relequestual Feb 10, 2023
d0d58ba
Add Definitions section
Relequestual Feb 10, 2023
0c0f97c
Add footer with links to resources
Relequestual Feb 10, 2023
557c0a2
Fix typos
Relequestual Feb 20, 2023
5abe1bd
Add note about how testing for agreement is not the same as voting.
Relequestual Feb 21, 2023
9ba125a
Refine consensus model
Relequestual Feb 23, 2023
9301be9
Tidy up and break out section for ADRs
Relequestual Feb 23, 2023
e3ecb1e
Add definition of TSC
Relequestual Mar 3, 2023
f6ac84c
Recognize other project roles to be defined
Relequestual Mar 3, 2023
a2af3ba
Add detail about signal based voting at the Test for Agreement stage …
Relequestual Mar 8, 2023
3fc951e
Spacing
Relequestual Mar 8, 2023
df8930a
Amend decision making process in charter
Relequestual Mar 14, 2023
cfa2ae9
Fix inconsistent name for repos
Relequestual Mar 14, 2023
a6bc2a8
Add details for project scope in the charter
Relequestual Mar 14, 2023
d30322d
Add line about non-technical conflicts to the charter
Relequestual Mar 16, 2023
fea1163
Update CHARTER.md
Relequestual Mar 20, 2023
14d7ca2
Fix using upper case inside bracket
Relequestual Mar 24, 2023
90896a9
Remove specific mention of linting tooling.
Relequestual Mar 28, 2023
dc3785a
Add time limits to some stages of consensus process
Relequestual Mar 30, 2023
c35d423
Provide blocker fallback
Relequestual Apr 6, 2023
c1f0fa4
Add details to ADR for consensus based TSC
Relequestual Apr 11, 2023
42e1c54
Remove comments not intended for final document
Relequestual Apr 13, 2023
1b31445
Fix typo
Relequestual Apr 13, 2023
9634a60
Remove additional comment and mention governance document is to be cr…
Relequestual Apr 13, 2023
8f1df0f
Remove (optional) from headings in charter
Relequestual Apr 13, 2023
f5dd0f5
Add initial TSC members list
Relequestual Apr 13, 2023
d083f46
Fix grammar
Relequestual Apr 13, 2023
6653e46
Fix typo in charter
Relequestual Apr 13, 2023
c84610a
Apply grammar and typo fixes to charter from PR review
Relequestual Apr 13, 2023
a4943cd
Remove specific TSC member requirement about meetings
Relequestual Apr 17, 2023
94d1801
Fix double typo with thanks to @mwadams
Relequestual Apr 17, 2023
c9ab2dd
List names and links for the TSC members
Relequestual Apr 18, 2023
b5f0e85
Fix typo and quotes in charter
Relequestual Apr 18, 2023
b2efdce
Fix typos and quotes in charter
Relequestual Apr 18, 2023
d2f853c
Fix grammar in charter
Relequestual Apr 18, 2023
035ab9b
Remove 'section' from titles
Relequestual Apr 18, 2023
dc3e685
Fix language specific spellings in charter
Relequestual Apr 18, 2023
631db8c
Specifically mention specifications we use and that use us as out of …
Relequestual Apr 18, 2023
8eb9883
Do not reference 'JSON Schema Org'
Relequestual Apr 24, 2023
341ecef
Do not define what the OpenJS Foundation does, per feedback from the …
Relequestual Apr 25, 2023
f4e35ff
Remove mention of fund and budgeting, as the charter is about the fou…
Relequestual Apr 25, 2023
e94c0cb
Remove mention of finances as per last commit
Relequestual Apr 25, 2023
9e1ad26
Remove mention of special interest groups in favour of noting the com…
Relequestual Apr 25, 2023
52bedb3
Loosen TSC meeting expectations
Relequestual Apr 26, 2023
4a2ad4a
Intro section better reflects the JSON Schema projects relationship w…
Relequestual Apr 25, 2023
397a8d1
Don't use 'we' and use proper pronouns
Relequestual May 3, 2023
d79198e
Move the list of initial TSC members outside of the charter document
Relequestual May 3, 2023
59deddb
Use 'private' as opposed to 'non-public'
Relequestual May 3, 2023
f1974e2
Remove the explicit mention of ingesting tooling into the project
Relequestual Jun 15, 2023
c872a5f
Note what kinds of discussions and votes can and should be made private
Relequestual Jun 16, 2023
a974117
Move the paragraph about TSC period of leave to membership section
Relequestual Jun 16, 2023
86ff12e
Create governance document and move governance and process related co…
Relequestual Jun 23, 2023
55aa9b3
Refined definition of TSC in context
Relequestual Jun 23, 2023
75542a8
Move content about voting and additional project roles from charter t…
Relequestual Jun 26, 2023
aea0b80
Add interoperability to list of in scope concerns
Relequestual Jun 26, 2023
fbe8b54
Change 'JSON data' to 'JSON-compatible data' in charter
Relequestual Jun 27, 2023
63cf673
Use more inclusive phrasing
Relequestual Jul 10, 2023
a996e13
Remove content which is mostly a duplication of section 2
Relequestual Jul 10, 2023
2a92249
Simplify out of scope sction. Add engaging with upstream and downstre…
Relequestual Jul 11, 2023
58d942b
Move TSC policy elements to charter from governance document
Relequestual Jul 13, 2023
8b2ed66
Add that TSC meetings should have an agenda
Relequestual Jul 13, 2023
be38006
Move roles and responsibilities section back to charter document with…
Relequestual Jul 25, 2023
4c92fc6
Migrate some content regarding process out of the governance document…
Relequestual Jul 25, 2023
507246b
Remove governance document for the Charter PR
Relequestual Jul 25, 2023
26f9265
Improve phrasing for out of scope
Relequestual Aug 2, 2023
31d5f6e
Tighten phrasing
Relequestual Aug 2, 2023
47a0d79
Note that updates to the charter must be approved by the OpenJS Found…
Relequestual Aug 2, 2023
37eccb2
Include the CPC
Relequestual Aug 2, 2023
bea5924
Strive to be open, always!
Relequestual Aug 2, 2023
91d5133
Remove initial included license and add CC-BY 4.0
Relequestual Aug 3, 2023
cdce30b
Fix posession
Relequestual Aug 3, 2023
06240f9
Fix grammar
Relequestual Aug 9, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
108 changes: 108 additions & 0 deletions CHARTER.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,108 @@
# JSON Schema Charter
<!-- This document is managed in the json-schema-org/community GitHub repository. Please do NOT modify this file in another repository as changes may be overridden. -->

## 0: Guiding Principles
The JSON Schema project is part of the OpenJS Foundation. The JSON Schema project strives to be open and transparent as much as is possible, and wish to enable anyone to interact and engage with any area of our work.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We are not a part of OpenJSF. We are independent at the moment. All OpenJSF references should be removed.


Having no structure in place usually leads to one that is informal and undocumented, making it difficult to meet our own expectations of how the TSC wish to operate. As such, the JSON Schema project define the following charter which includes aspects of the governance model to which the TSC subscribe and by which the TSC operate.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
Having no structure in place usually leads to one that is informal and undocumented, making it difficult to meet our own expectations of how the TSC wish to operate. As such, the JSON Schema project define the following charter which includes aspects of the governance model to which the TSC subscribe and by which the TSC operate.
Having no structure in place usually leads to one that is informal and undocumented, making it difficult to meet our own expectations of how the TSC wish to operate. As such, the JSON Schema project defines the following charter which includes aspects of the governance model to which the TSC subscribe and by which the TSC operate.


## 1: Scope
JSON Schema aims to enable the confident and reliable use of the JSON data format. It does this primarily by providing specification documents which define a declarative language that allows annotation and validation of JSON documents.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

JSON Schema aims to enable the confident and reliable use of the JSON data format.

I would change this to "reliable use of data expressed in the JSON format, other formats compatible with the JSON document model". JSON Schema isn't about the JSON data format itself, but about describing data expressed with that format, as well as others.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

While initially thinking about this, I thought I agreed, however on reflection, I'm not sure I do. It's not in scope of JSON Schema to care about other languages which "compile" to JSON, such as YAML.

JSON Schema isn't about the JSON data format itself, but about describing data expressed with that format, as well as others.

I think this is only partially true. JSON Schema can only cater to a subset of YAML for example. It's possible to roundtrip from JSON to YAML to JSON, but not always possible to roundtrip from YAML to JSON to YAML.

The use of "JSON data format" was used in effort to convey the "in memory" materilization of the data, as opposed to just a JSON file.

I agree that "eliable use of data expressed in the JSON format" may make this clearer, however I'm not convinced about "other formats compatible with the JSON document model". "compatible" in what way?

Do you have any additional thoughts on this?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I feel like the existing wording focuses on the JSON format itself, suggesting that we're doing syntax checking of JSON files. But actually, we're starting with a presumption of valid JSON, and working with data presented in that format instead.

How about "data presented in the JSON format"?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

"data that can be expressed in the JSON format"? We're built on the data model, and I think this opens it up to other formats that are translatable to JSON.

While JSON Schema's primary target is constraint-based data validation, it continues to be used across the whole stack, in different stages of a given project, and for purposes beyond its original design. The JSON Schema project aims to enable these additional and emergent use cases.

### 1.1: In-scope
Relequestual marked this conversation as resolved.
Show resolved Hide resolved
The scope of the JSON Schema project is split into two sections: primary and secondary concerns.
Primary concerns are areas the JSON Schema project wish to give focus to. Secondary concerns, while remaining in scope, aren't areas of focus, and would require dedicated championing by community members to come to fruition.

Primary Concerns
- Publication of the JSON Schema standard
- Validation of JSON-compatible data
- Semantic annotation of JSON-compatible data
- Interoperability
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Interoperability of what? I think this means "expressing things about the data in an interoperable way"? so some extra words could be used here to be more clear.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think the interoperability here is across systems, platforms, and languages.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think wanted to leave this pretty broad deliberately. @karenetheridge is there anything related to interoperability you think shoudln't be considered in scope specifically?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I like Greg's wording -- "interoperability across systems, platforms and languages". That covers pretty much everything!

- Extensibility
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Likewise.. extensibility of what? Perhaps the use of a json schema document to fulfill other usecases that are not predicted by the specification or their authors?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In terms of "interoperability" and "extensibility", as with the other items found under "in scope", I didn't feel it needed to specify "in relation to JSON Schema" as the context.

"Documentation" as an item in the list for example, shouldn't need to say "... of JSON Schema". Same for "Critical tooling".

These are vague on purpose to avoid us having to broaden them later if we were too limiting, as we then have to go through a charter change process and get multiple approvals.

- Critical tooling
- Documentation
- Test suite
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Perhaps "test suite to be used to verify implementation conformance to the specification"

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There is a lot detail that could be added to all of these items. This is supposed to be really high level. What do you feel we would gain from being more specific here?

- Community
- Enabling schema authors
- Enabling implementers
- Engaging with industry
- Engaging with upstream and downstream standards and projects
- Communicating value
- Ensuring the sustainability of the project

Secondary Concerns
- Hypermedia
- Generating JSON Schema
- Using JSON Schema to generate
- Code (including types or classes)
- UI (including forms)
- Databases
- Relational validation
- Vocabularies registry

karenetheridge marked this conversation as resolved.
Show resolved Hide resolved
### 1.2: Out-of-Scope
Neither standards that the JSON Schema project uses (such as JSON and IRI) nor standards or projects that use JSON Schema (such as OpenAPI or AsyncAPI) are in scope, nor does the JSON Schema project have any control over them.
Relequestual marked this conversation as resolved.
Show resolved Hide resolved

## 2: Relationship with OpenJS Foundation CPC.
Most large, complex open source communities have both a business and a technical governance model. Technical leadership for the projects within the OpenJS Foundation is delegated to the projects through their project charters by the OpenJS Cross Project Council (CPC). In the case of the JSON Schema project, it is delegated to the JSON Schema Technical Steering Committee ("TSC").
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remove OpenJSF


### 2.1 Other Formal Project Relationships
Section Intentionally Left Blank

## 3: JSON Schema Governing Body (TSC)
The JSON Schema Technical Steering Committee (TSC) is initially established from the observed major contributors who are currently active and in good standing.

The TSC must have a minimum of four members. There is no maximum TSC membership size.

TSC memberships are not time-limited.

The TSC follows the decision-making process defined in this charter unless otherwise documented.

The TSC aims to work asynchronously. TSC meetings are pre-announced, public, and recorded. Minutes are taken and the recordings made available. If there is a reasonable reason (such as security or privacy), any portion of a meeting, its minutes, and recording, may be kept private.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Any restrictions on the maximum percentage of Governing Body members that can be employed by the same company? The risk of one company exerting undue influence over the direction of the project is real.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We looked at this before, I but I don't remember (or necessarily agree with) why it was removed.

Copy link
Member Author

@Relequestual Relequestual Aug 18, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This clause was seen more as a governance concern than a charter related concern, and was moved out to #456, specifically this line. (This also allows us to update it without having to go back to the OpenJS Foundation for their approval.)

The risk of one company exerting undue influence over the direction of the project is real.

I hear you. Regardless of what anyone in such a position reports, such as no to little influence, that doesn't mean things can't change, or it shouldn't be a concern.

We are trying to start addressing this by engaging more with implementers: #412 - Comments and suggestions welcome.

Additionally, we are looking to encourage users to self report: #441

Further, there are plans to create a stakeholders group: https://github.com/orgs/json-schema-org/projects/12/views/5 (Although these are a little vague currently).

Open to thoughts, suggestions, comments, on all of this and anything else that comes to mind as to how we can expand our TSC. @karenetheridge your voice carries weight here =]

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't think this presents an immediate problem anymore, but I do think it's still a good idea to have such a limitation.

## 4: Roles & Responsibilities

The JSON Schema project is governed by a Technical Steering Committee (TSC) which is responsible for high-level guidance of the project.

The TSC has final authority over this project including:

- Technical direction
- Project governance and process (including this policy, though changes to this policy must be approved by the CPC)
- Contribution policy
- GitHub repository hosting and administration
- Establishment of and delegation to working groups or teams
- Mediating technical conflicts

It is also responsible for establishing a Code of Conduct Committee suitable for mediating non-technical conflicts.
In any period where such a committee is not yet formed, the TSC must assume temporary responsibility of mediating such conflicts in addition to responsibilities enumerated above.

In joining the TSC, members commit to communicate on a regular basis and respond to issues raised by the TSC in a timely manner. If they are no longer able or willing to make such a commitment, they should discuss this with the TSC or a TSC Chair.

### 4.1 Project Operations & Management
The TSC and entire technical community will follow any processes as may be specified by the OpenJS Foundation Board or the CPC relating to the intake and license compliance review of contributions, including the OpenJS Foundation IP Policy.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Are there any such requirements today that we should be making a note of?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is in reference to the requirement to use a CLA or DCO, and the IP policy: https://ip-policy.openjsf.org

I may be looking to seek an exemption for CLA/DCO, but that remains to be seen.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remove OpenJSF


#### Decision-making

The TSC follows a consensus-seeking decision making model in which joint decisions are agreed upon by all members whenever possible.
In some situations, a vote may be preferable, however a formal vote is expected to be an infrequent occurrence invoked only when consensus cannot be reached after multiple attempts to reach TSC consensus.
TSC discussions and decisions are to be assumed public by default, unless otherwise decided upon on a case-by-case basis by the TSC.
Precise criteria for which decisions are to be left private are left to the TSC's discretion and assumed to include security-related reports or discussions with a third-party who wishes their interactions to remain private, such as when they concern yet unpublished case studies or partnerships which are not yet ready for announcement.

The TSC is expected to agree upon and maintain specific process and procedure which facilitate labelling or communicating which decisions have been formally decided upon by the TSC.
This process should include a mechanism for identifying ongoing TSC discussions and decision-making.
When concluded, decisions should include reasoning and/or justification of the TSC, as well as indication of the consensus of the committee, or lack thereof in the case of a voted decision as indicated above.
Private decisions should also be documented in a private location accessible to parties expected to have access to them. In the spirit of transparency, the TSC will strive to make anonymized or redacted versions of these decisions publicly available.

## Code of Conduct Findings & Violations

Code of Conduct incidents must be reported to the TSC by the Code of Conduct committee.
Reports must remain anonymous, as per the Code of Conduct, but should be documented in a manner similar to private TSC decisions as mentioned.

## 5: Definitions

TSC: The JSON Schema Technical Steering Committee, delegated technical leadership for the JSON Schema project by the OpenJS Foundation.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remove OpenJSF


---

CC-BY 4.0 (c) The JSON Schema Project contributors
3 changes: 3 additions & 0 deletions TSC.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
This file lists the members of the JSON Schema Technical Steering Committee (TSC).

The initial TSC members are [Ben Hutton](https://github.com/relequestual), [Austin Wright](https://github.com/awwright), [Greg Dennis](https://github.com/gregsdennis), [Julian Berman](https://github.com/Julian), [Jason Desrosiers](https://github.com/jdesrosiers), and [Karen Etheridge](https://github.com/karenetheridge), with Ben Hutton being the initial chair.
123 changes: 123 additions & 0 deletions docs/adr/2023-03-30-establish-consensus-based-tsc.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,123 @@
# Project has formal governance through consensus based Technical Steering Committee

* Status: proposed
* Deciders: @relequestual, @awwright, @gregsdennis, @Julian, @jdesrosiers, @karenetheridge
* Date: 2023-03-30

Story: In order to fully onboard with the OpenJS Foundation, and in order to have proper governance, we should have a charter: https://github.com/json-schema-org/community/issues/274
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remove OpenJSF


## Context and Problem Statement

It's essential that both the maintainers and community can see a clear and coherent statement about the JSON Schema project and its intentions. Currently it is not clear, and may be hard to determine.

Lack of clear and documented governance makes it very difficult in some situations to move some issues forward. The current "process" is mostly undocumented and ad-hoc, with loose collective will.
As the number of people who can work on this full or part time grows, the organizational needs will evolve, requiring governance for long term sustainability.
Having a clear and documented governance model will allow us to make clear progress with an unambiguous process defined.

When we joined the OpenJS Foundation, we committed to creating a charter. They provide a template for use, which several projects have used. We should use it as our basis, but we may also want to consider additional elements or sections.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remove OpenJSF


## Decision Drivers <!-- optional -->

- JSON Schema committed to forming a governance model as part of a charter when we joined the OpenJS Foundation
- It has sometimes been difficult to reach decisions on tricky topics, with no clear way to resolve divisive issues
- Undocumented process can lead to an imbalance of power which is undesirable
- Defining a process can help make sure everyone has space to be heard
- Defining expectations up front can help everyone know what the next steps are and avoid decision stagnation
- Gives internal and external confidence of long term viability

## Considered Options

- Voting
- Unanimous Consensus
- General/rough consensus
- Lazy consensus / Do-ocracy
- Benevolent Dictator (for life)

## Decision Outcome

We settled on Consensus and Voting, with a preference for consensus. Ideally we would like to have unanimous consensus, however reflecting on how requiring that might [not always be a good thing](https://www.ic.org/busting-the-myth-that-consensus-with-unanimity-is-good-for-communities/), we landed on a variation of what's known as the N Street Consensus Method. This wasn't originally one of the consensus models proposed, but was discovered during the process and found in favour over general or nondescript "consensus".

In consensus based decision making, any individual can signal "block", which works like a veto when voting. It is a signal that the consensus process has failed, or the conditions for forming consensus are not as good as they could be. Given any member may signal a "block", this may give individual members disproportional power, and blocks may be used inappropriately, such as for personal reasons.

Ideally, major or critical reservations should have been worked out as part of the consensus building process. However, it is possible that a presented solution may have had something untenable added in error. We also define using aspects of the N Street based consensus method for resolving blocks, requiring that a blocker commit to trying to find a new or amended solution. There is a fallback of voting should resolving a block not be possible.

It's recognised that some decision making may not be suitable for using the consensus approach, or voting may be preferable, and voting is provided as a rare fall-back solution.

### Positive Consequences <!-- optional -->

- Everyone has the opportunity to be heard and understood
- Shares power between all members fairly
- More likely to find a solution that is acceptable to all involved in resolving a given issue
- Make sure that decisions aren't made against the will of anyone involved
- Members are likely to assist or help in enacting the resolution
- Builds a stronger sense of trust
- Voting as a fall-back helps avoid eternal blocking

### Negative Consequences <!-- optional -->

- Consensus can be slower than voting
- Still provides some additional powers to the facilitating Chair/s
- May make some types of decisions harder
- Potential for "Groupthink"
- Requires continual active engagement
- May make bad decisions
- Blocking can be abused against individuals

## Pros and Cons of the Options <!-- optional -->

### Voting

Voting with a majority rule.

- Good, because it enables decisions to be made clearly and quickly
- Good, because it gives everyone equal power
- Bad, because it may not allow individuals to be fully heard
- Bad, because decisions can be divisive

### Unanimous Consensus

Consensus where everyone must be in agreement

- Good, because everyone consents to the solution
- Bad, because it can create a fear of proposing ideas

See https://www.ic.org/busting-the-myth-that-consensus-with-unanimity-is-good-for-communities/

### General/rough consensus

As used by the IETF

- Good, because it allows progress without requiring all to agree
- Good, because it can be faster than other consensus based methods
- Good, because the chairperson can make judgement calls
- Good, because it allows anonymity, encouraging people to vocalise concerns without fear of retribution or judgement
- Bad, because it's hard to do not in-person / requires regular in-person meetings to be effective
- Bad, because it can be subjective
- Bad, because it puts a lot of power in the chairperson

### Lazy consensus / Do-ocracy

- Good, because it allows progress without requiring everyone to be involved
- Good, because it enables faster progress
- Good, because it can foster a sense of trust and community
- Good, because it empowers do-ers
- Bad, because it is possible for people to miss things
- Bad, because it assumes silence is consent, which can result in people less likely to want to raise concerns
- Bad, because it creates a power imbalance where people who have more time or who are more influential can push decisions through

### Benevolent Dictator (for life)

- Good, because it enables very fast progress
- Good, because it can help to have a clear and consistent vision
- Good, because there's clear accountability, which might encourage a BDFL to act in the best interests of the project
- Bad, because it prevents diverse opinions or ideas
- Bad, because concentrated power can be abused
Relequestual marked this conversation as resolved.
Show resolved Hide resolved
- Bad, because it discourages participation from the community

## Links <!-- optional -->

Useful resources in helping make this decision

- https://seedsforchange.org.uk/consensus
- https://www.ic.org/busting-the-myth-that-consensus-with-unanimity-is-good-for-communities
- https://copim.pubpub.org/towards-better-practices-for-the-community-governance-of-open-infrastructures