-
Notifications
You must be signed in to change notification settings - Fork 9.1k
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
Avoid minor releases or redefine minor release to relax SemVer restrictions #2019
Comments
Related to this, the 3.0.2 spec states:
However, the proposed 3.1.0 draft does not follow that promise. I understand the spec uses the term "SHOULD NOT", not "MUST NOT", so technically it is ok. As a result, it would be good to add a warning in 3.1 that it may break the 3.0 tooling (principle of least surprise). As an example, in 3.0.2, the "type" attribute must be a string:
In 3.1.0 the type can be an array:
Thus it's very likely that 3.0 tooling will fail or have problems processing a 3.1 OAS spec, at least in the cases when a 3.1 spec uses a type array. There may be other cases as well. |
@sebastien-rosset some of that has to do with the definition of "usable." A valid 3.1 spec that is also a valid 3.0 spec SHOULD be usable with a 3.0 implementation. That is the case with Basically, you can take a valid 3.0 document, change the OpenAPI version field to say 3.1, and it should still behave the same. The other direction is not expected to work. |
ok, thanks for the clarification. |
Here's the new language introduced to v3.0.3, the next planned patch release of the OpenAPI Specification:
|
Closing this for now. Though we now have a good definition of backward compatibility, there is still a question of whether we should do minor releases in the future. I still think we should avoid them, because there are so many minor changes we'd like to make that would, strictly speaking, break backward compatibility, and/or consume extra bandwidth trying to solve those without breaking changes. But we agreed on a TSC call that we'd revisit this question as and when we're considering the possibility of another minor release. |
Discussed on the TSC call, Sep. 26, 2019.
Here's a summary:
nullable
, because there was an apparent conflict between the need for a 3.1 release with this change vs. adhering strictly to Semantic Versioning.We discussed a few possible paths forward:
I'll add a fourth idea:
The text was updated successfully, but these errors were encountered: