-
-
Notifications
You must be signed in to change notification settings - Fork 322
Add ADR for decoupling from IETF #1277
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
Merged
Relequestual
merged 11 commits into
json-schema-org:main
from
jdesrosiers:adr-decouple-from-ietf
Sep 27, 2022
Merged
Changes from 9 commits
Commits
Show all changes
11 commits
Select commit
Hold shift + click to select a range
f00f9ea
Add ADR for decoupling from IETF
jdesrosiers 6062b8f
Update adr/2022-08-decouple-from-ietf.md
jdesrosiers d5befa5
Update adr/2022-08-decouple-from-ietf.md
jdesrosiers 0064831
Update adr/2022-08-decouple-from-ietf.md
jdesrosiers 789ae60
ADR decouple from IETF draft 2
jdesrosiers dd3c640
ADR decouping from IETF draft 3
jdesrosiers f96af8a
ADR decouping from IETF draft 4
jdesrosiers 610a388
ADR decoupling from IETF draft 5
jdesrosiers 9bbde03
ADR decoupling from IETF draft 6
jdesrosiers 2eaf95a
Add comments about W3C being a pay to play standards org
Relequestual 9da7e23
Add Greg to IETF decouple ADR
Relequestual File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,159 @@ | ||
# Decoupling from IETF | ||
|
||
* Status: accepted | ||
* Deciders: @jdesrosiers @relequestual @awwright @handrews | ||
* Date: 2022-08-17 | ||
|
||
Related Issues: | ||
* https://github.com/orgs/json-schema-org/discussions/69 - This issue is about | ||
dropping the "draft" prefix from our releases. This ADR doesn't cover that, | ||
but much of the discussion about whether or not to decouple from IETF is in | ||
that discussion. | ||
* This topic has been discussed in many other places as well that are difficult | ||
to link to here including Slack, Twitter, OCWMs, and conference discussions. | ||
|
||
## Context and Problem Statement | ||
|
||
Currently JSON Schema loosely follows the IETF Internet-Draft (I-D) process for | ||
spec development and releases but isn't associated with any IETF working group. | ||
JSON Schema is an individual draft. That means it isn't on a standards track | ||
with IETF and IETF is not involved nor supports the spec in any way other than | ||
hosting the canonical version of our I-Ds. Our perceived involvement with IETF | ||
causes confusion and misunderstanding within our community in the cases were our | ||
practices and the realities of our situation deviate from a typical IETF I-D | ||
lifecycle. The thing that makes our situation different than a typical I-D is | ||
that our "drafts" are intended for use in production. | ||
|
||
## Decision Drivers | ||
|
||
* IETF's draft versioning system doesn't work for JSON Schema and we stopped | ||
using it to version our releases a while ago. We now use date based versioning | ||
and even have more than one draft submission per release (the initial release | ||
and the patch release). | ||
* The IETF process is optimized for working on a draft until it's done and then | ||
disbanding. In some cases, the RFC may be revisited and revised in the future, | ||
but this is rare and generally contains little more than clarifications and | ||
reference updates. JSON Schema is not like that. JSON Schema is more like a | ||
programming language. When it stops evolving, it will lose its relevance. | ||
When we finish a release of JSON Schema, we don't disband, we start work on | ||
the next release. | ||
* Since the project resumed activity after the gap following draft-04, every one | ||
of our releases is expected to be used in production and will be depended on | ||
for many years forward. This is not consistent with normal IETF drafts. Even | ||
if we don't publicly use the term "draft", we're still using the IETF I-D | ||
system in a way that's not intended. | ||
* Under IETF, JSON Schema fits under the category of "draft". The community has | ||
repeatedly told us that they perceive this to meant that JSON Schema | ||
"incomplete" and not "not ready for production use". This is the wrong message | ||
for us to be sending as all of our releases are intended to be used in | ||
production. This ADR doesn't decide whether or not to drop the "draft" from | ||
our releases, but decoupling from IETF gives us that option. | ||
* Several members of the JSON Schema team have interacted with JSON-related IETF | ||
working groups. Some of these interactions demonstrated an indifference or | ||
hostility to JSON Schema, and a preference for projects taking a different | ||
approach. Equally important was a lack of any active interest or constructive | ||
engagement. Finally, we were informed that any schema project for JSON would | ||
not necessarily start from JSON Schema as a base, indicating that a "JSON | ||
Schema" working group would quite likely not involve JSON Schema itself. This | ||
impression has been reinforced by observing the amount of change introduced to | ||
JSON Path as a consequence of its adoption by an IETF working group. While we | ||
have a good relationship with the relatively new HTTPAPIs working group, the | ||
combination of these other experiences with other mismatches between our | ||
project and the IETF process contributes to our reluctance to move forward | ||
through the iETF. | ||
|
||
## Considered Options | ||
|
||
1. Continue to submit I-Ds, while using our customized process with no intention | ||
of pursing standards track RFC status. | ||
2. Go all-in with IETF and pursue a standards track RFC with the IETF. The | ||
approach would be to describe the essential characteristics of evaluating a | ||
JSON Schema: the keywords that everybody is guaranteed to support, and any | ||
extension mechanisms. | ||
3. Join W3C and pursue a standards track with them using their process. | ||
4. Decouple completely from any standards organization and come up with our own | ||
specification development lifecycle (SDLC) model inspired by well established | ||
projects with an SDLC that more closely meets or needs. | ||
jdesrosiers marked this conversation as resolved.
Show resolved
Hide resolved
|
||
|
||
## Decision Outcome | ||
|
||
Our decision is to go with Option 4 and decouple from standards organizations | ||
that don't fit our needs. We don't currently have a plan for what to replace | ||
IETF with, but we are currently investigating how other established projects do | ||
their SDLC and will likely choose one to emulate and adapt to our needs. | ||
Although we don't have a replacement solution in place yet, we are confident | ||
that continuing to abuse the IETF I-D process or conforming to a standards | ||
organization process that doesn't fit our needs is not the way to go. | ||
|
||
However, we still plan to use the IETF process to register the media types | ||
defined by JSON Schema with IANA. This effort is currently in progress with the | ||
HTTPAPIs working group. | ||
|
||
The decision to not use IETF applies only to the main specification documents | ||
and not necessarily supporting components we have defined or will define in the | ||
future. Currently our only such component is Relative JSON Pointer, but there | ||
could be others in the future. These components will be examined on a case by | ||
case basis and we may choose an IETF standards path for those components if it | ||
makes sense. | ||
|
||
Option 2 and 3 are still on the table if we feel it makes sense when we get to a | ||
more stable place in the future. The main concern is the pain this process is | ||
causing while we are in this unusual phase of simultaneous unstable growth and | ||
production use. Standardization isn't out of the question, it's just not | ||
productive for us to be developing JSON Schema within the constraints of a | ||
standards organizations procedures. | ||
|
||
Option 1 was rejected because it ignores the problems we've been facing and | ||
provides no solution. No one wants this. | ||
|
||
Option 2 was rejected for several reasons. If we go all in with IETF, we would | ||
have to join a working group and treat JSON Schema like a normal I-D. That means | ||
we would have to start treating drafts as drafts, which means not recommending | ||
production use until we are ready for RFC and not releasing a new | ||
production-ready version of JSON Schema until we've reached RFC status. Most of | ||
the core contributors don't believe that we are close enough to an RFC-ready | ||
release that we want to commit to not being able to issue another release until | ||
that happens. | ||
|
||
There are other concerns including skepticism that even with an extension | ||
mechanism that the RFC wouldn't need regular updates, which is not normal | ||
practice for an RFC and would require significant effort to issue a replacing | ||
RFC. Without a concrete proposal on the scope of the RFC and the extension | ||
mechanisms, it's hard to commit to this path. | ||
|
||
Additionally, many of the core contributors have found working with the IETF | ||
unproductive and have concerns about JSON Schema getting deeper involved without | ||
compelling enough reason. Most agree that the reasons are not sufficiently | ||
compelling at this point. | ||
|
||
Option 3 was rejected because it has the same problems as Option 2 except that | ||
we don't have the same unpleasant history with W3C than we do with IETF. | ||
|
||
### Positive Consequences | ||
|
||
* Decoupling from IETF allows us to distance ourselves from the assumptions that | ||
people make about JSON Schema because they assume it works like a typical I-D. | ||
* Decoupling from IETF allows us to customize our SDLC model to what works best | ||
for JSON Schema. | ||
|
||
### Negative Consequences | ||
|
||
* If we don't go the standardization route with IETF or W3C, we lose access to | ||
their expert review process. | ||
* Not being associated with a recognized standards organization such as IETF, | ||
W3C, or IEEE reduces the credibility of JSON Schema in the eyes of some. | ||
However, we have received feedback that our membership with OpenJS/Linux | ||
Foundation provides the credibility that we need. | ||
* One of the benefits of an RFC is other standards can normatively reference it, | ||
and use JSON Schema to define their JSON-based syntaxes. However, we have | ||
received feedback from people involved in standards development that told us | ||
that they were comfortable referencing OpenAPI's self published specification | ||
in their standards and that OpenAPI's membership with the Linux Foundation was | ||
an important aspect of what makes them comfortable doing so. JSON Schema is a | ||
member of the OpenJS Foundation, which is a sub-group of the Linux Foundation, | ||
so we expect standards developers to be just as comfortable referencing JSON | ||
Schema as they are referencing OpenAPI. | ||
* Defining our own SLDC process will be a lot of work and none of us have | ||
Relequestual marked this conversation as resolved.
Show resolved
Hide resolved
|
||
expertise in defining such a process. However, we can take inspiration from | ||
existing well established projects and we would have the freedom to update our | ||
process as we learn what works and what doesn't. |
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.