-
-
Notifications
You must be signed in to change notification settings - Fork 773
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
Switch to Calendar Versioning #1100
Comments
@dtkav WDYT? |
Hey @hjacobs @jmcs - I'm a big fan of SemVer personally.
In semantic versioning the convention would be to use minor version bumps as always backwards compatible feature additions, and then store up breaking changes up for the next major version bump. I think most users know that if they upgrade to a major version bump, it might require them to change their code (like python2 -> 3). There are some things in connexion right now that are too loosely defined, and cannot be fixed in a backwards compatible manner. For example:
I don't know how breaking changes work in calendar versioning in practice, but I imagine that either:
I think the ability to use breaking changes every major release is an important opportunity to tighten up interfaces, fix mistakes, and even drop support for things that aren't core to the product. Which approach would you take to introducing breaking changes in CalVer? Have you had to deal with mistakes in your other projects that are unfixable without a breaking change? It might be that I'm overly focused on these breaking changes at the moment (that's where my head has been at) - most of the time I agree it's best to be backwards compatible. I'll read up on CalVer conventions a bit more, and try to think through the implications for the backwards-incompatible fixes in the pipeline ( eg. #760 #1095 ). |
CalVer requires that we define our own backwards compatibility contract. Ubuntu:
Twisted:
If the goal is to be able to move quickly, then semver does not prevent that. We don't even have to branch to preserve a "stable" branch as I requested in #1096. If we want to move fast and break things, then lets add a note in the readme that says something along the lines of:
I do not like CalVer because it makes it very difficult for me to figure out when the backwards compatible change happened for whatever feature I'm interested in. So, let's just declare that v3 is the next version and start merging lots of awesome changes. |
hey @hjacobs - any further thoughts on this? |
There seems to be no support for Calendar Versioning, so I won't push for this right now. |
As we need to release a new version of Connexion, I propose to switch to Calendar Versioning ("CalVer") with a format of
YY.MM.MICRO
(example: "19.12.0")Rationale: the current semantic versioning has limited use and nobody knows when to switch from major version 2 to 3. We should limit breaking changes as much as possible and constantly "move forward" with versions.
I switched all my personal OSS projects to Calendar Versioning, e.g. https://github.com/hjacobs/kube-downscaler/releases or https://codeberg.org/hjacobs/kube-web-view/releases
There are a number of other Python projects also using CalVer, e.g. "pip".
The text was updated successfully, but these errors were encountered: