Closed sco1 closed 5 years ago
always been a fan of CalVer, and I am also a fan of your rationale.
How will CalVer work? Will a new year/mo version be release every time a breaking change is made otherwise just increment the micro?
Year/month doesn't imply breaking changes, it's just literally when the release is made. Micro would be incremented for releases within the month.
Then in the case errors were added or removed, there'd be no way to distinguish such release from a release for a minor fix? And it would be beneficial to distinguish because accepting small updates may be desirable but not major updates which will cause new linting errors to pop up until they're ignored. That's a downside of CalVer (i.e. you have to pin to an exact version to be safe) but then what upsides would it have to SemVer?
The SemVer alternative would be to either:
That's a downside of CalVer (i.e. you have to pin to an exact version to be safe)
Safety is relative. How often are these linting codes going to change? This is the only "breaking" change a user would have to deal with.
micro: bug fixes, refactoring, performance, etc. minor: add/remove linting errors, accommodating for breaking changes in the Flake8 plugin API? major: never or move the plugin API changes one here
How often are these linting codes going to change?
Sure, not often. However, the ability to deal with it is still nice. What is there to gain by sacrificing this and using CalVer? That no thought will need to be put in to how the version is incremented? That's the best I can think of.
We accomodate breaking changes in flake8's API by appropriately pinning our dependency on it. So that leaves us with only incrementing major versions based on error codes. Or never.
After some more discussion we'll go with SemVer. If we don't ever go beyond 1.0.x then it's not the end of the world.
What versioning scheme would make sense for this package?
I'm debating between the following two options:
MAJOR.MINOR.PATCH
YYYY.0M.Micro
I'm leaning towards CalVer. Because this is a utility plugin to flake8 with nothing externally facing or backwards incompatible (flake8 compatibility is handled by version pinning), I'm finding it hard to come up with a meaningful metric to use for incrementing major/minor versions of the package; major, in particular.
One caveat to this would be the addition of error codes that would require the user to adjust their ignore settings, but I think this would be an issue with SemVer as well. This seems pretty simply solved by suffixing the error codes table in the README with something like "introduced in ..."