-
-
Notifications
You must be signed in to change notification settings - Fork 34
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
base: main
Are you sure you want to change the base?
Changes from all commits
0b8d59b
4666a22
3cc72d2
b7de5e1
a4bf147
327b09e
cdc7cf5
d60d388
ece5e53
2d38695
29ed1a5
c9a6006
d0d58ba
0c0f97c
557c0a2
5abe1bd
9ba125a
9301be9
e3ecb1e
f6ac84c
a2af3ba
3fc951e
df8930a
cfa2ae9
a6bc2a8
d30322d
fea1163
14d7ca2
90896a9
dc3785a
c35d423
c1f0fa4
42e1c54
1b31445
9634a60
8f1df0f
f5dd0f5
d083f46
6653e46
c84610a
a4943cd
94d1801
c9ab2dd
b5f0e85
b2efdce
d2f853c
035ab9b
dc3e685
631db8c
8eb9883
341ecef
f4e35ff
e94c0cb
9e1ad26
52bedb3
4a2ad4a
397a8d1
d79198e
59deddb
f1974e2
c872a5f
a974117
86ff12e
55aa9b3
75542a8
aea0b80
fbe8b54
63cf673
a996e13
2a92249
58d942b
8b2ed66
be38006
4c92fc6
507246b
26f9265
31d5f6e
47a0d79
37eccb2
bea5924
91d5133
cdce30b
06240f9
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,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. | ||||||
|
||||||
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. | ||||||
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.
Suggested change
|
||||||
|
||||||
## 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. | ||||||
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 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. 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. 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.
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? 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 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"? 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. "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 | ||||||
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. 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. 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 think the interoperability here is across systems, platforms, and languages. 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 think wanted to leave this pretty broad deliberately. @karenetheridge is there anything related to interoperability you think shoudln't be considered in scope specifically? 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 like Greg's wording -- "interoperability across systems, platforms and languages". That covers pretty much everything! |
||||||
- Extensibility | ||||||
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. 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? 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. 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 | ||||||
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. Perhaps "test suite to be used to verify implementation conformance to the specification" 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. 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"). | ||||||
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. 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. | ||||||
|
||||||
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. 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. 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. We looked at this before, I but I don't remember (or necessarily agree with) why it was removed. 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 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.)
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 =] 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 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. | ||||||
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. Are there any such requirements today that we should be making a note of? 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 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. 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. 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. | ||||||
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. Remove OpenJSF |
||||||
|
||||||
--- | ||||||
|
||||||
CC-BY 4.0 (c) The JSON Schema Project contributors |
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. |
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 | ||
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. 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. | ||
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. 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 |
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.
We are not a part of OpenJSF. We are independent at the moment. All OpenJSF references should be removed.