-
Notifications
You must be signed in to change notification settings - Fork 9.1k
Avoid minor releases or redefine minor release to relax SemVer restrictions #2019
New issue
Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? # to your account
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: