3 ms·
I like that there's a standard page for this for reference, but I disagree with some of the use cases. I think it makes sense in a few cases: * Umbrella-type
by gregmac 7y ago
I like that there's a standard page for this for reference, but I disagree with some of the use cases.
I think it makes sense in a few cases:
* Umbrella-type projects, such as an Operating System, with Ubuntu being a great example.
* Time-dependent projects (where it's more about data), such as tzdata, certificates, tax rates, etc.
* Constantly-changing APIs
I disagree with some of the projects listed, such as Unity and boltons (more on that below).
----
I think the trick to this working well is that at least one of the following must be true:
* You never break backwards compatibility. For example: tzdata, certificates
* There has to be another way to check dependencies. For example: the individual package versions used within Ubuntu
* Release notes (and upgrade notes) need to be really good. For example: include an "upgrade guide" that explicitly calls out breaking changes and how to fix them; summarize the major changes over time; make sure they're digestible by someone who is updating from a few major versions from a couple years ago (without having to read through each incremental guide).
----
Unity is actually a good counter-example to CalVer as it doesn't follow any of these rules. A quick search comes up with breaking changes in at least 2019.2.5, 2019.1.0 and 2018.3.0 [1]. To make things worse, they release frequently -- if I'm updating from say, 2018.2.0, there have been 85 (!) releases since then. The release notes are very detailed and on individual pages so it would be a multi-hour effort to read through to even figure out how complex it'll be to upgrade. This is especially annoying if I'm updating in a hurry to get an important security fix. At least with SemVer I could focus on the major releases.
[1] https://unity3d.com/unity/whats-new/2019.2.5 https://unity3d.com/unity/whats-new/2019.2.5, https://unity3d.com/unity/whats-new/2019.1.0 https://unity3d.com/unity/whats-new/2019.1.0, https://unity3d.com/unity/whats-new/unity-2018.3.0 https://unity3d.com/unity/whats-new/unity-2018.3.0