Semantic versioning #11744
-
It was announced that starting with version 4, Craft would switch to an annual release cycle:
I assumed this would mean a switch to semantic versioning as well, following the generally accepted standard:
However, now the latest releases of Craft were Based on the changelog, it looks like the difference is that releases with a bump in the patch number include changes in the My suggestion would be to follow semver more closely and use a minor version increase for every release that adds any features. This way, patch versions (3rd digit) can be reserved for bugfix releases and there's no need for a fourth digit. As a developer, those three levels of granularity are all I need to make a decision on when and how to update, and the occasional fourth digit just makes things more confusing. If there is indeed a reason for the fourth digit I would be interested in hearing it. In this case, I think it would also be a good idea to provide some documentation on the versioning scheme that is used, as I can't find this information anywhere. |
Beta Was this translation helpful? Give feedback.
Replies: 2 comments 3 replies
-
You're right that the fourth version digit is kind of ambiguous. FWIW, I've mostly seen it as a signal for quick regression bug fixes on the tail-end of a bigger release (major, minor or patch). The thing is that with an application like Craft, the line between a bug fix and a change in behaviour can often be extremely thin, or even impossible to completely separate, due to the fact that Craft is such a complex and extensible piece of software. If Craft followed semver to the letter (i.e. by ditching the fourth digit and only allowing completely unambiguous bug fixes in its third digit patch releases) what would likely happen is that its current use of second and third digit versions would become conflated. In other words, most releases would probably become 2nd digit, "minor" releases, which means that developers would lose the very useful distinction between intentional changes and new features – which are supposed to be backwards compatible, but still on a scope where a glance at the changelog is warranted – and the "more minor" patch releases, which are typically quite safe to install. Personally, I appreciate the new release schedule (particularly, the fact that the minor releases are actually minor, i.e. most likely without breaking changes, and the long-term support for previous major versions). I also think it's great that the team seems to strive for a closer adherence to the semver spec. But, I don't think that following semver religiously would necessarily be more helpful to Craft developers than how the versioning is currently being handled, since 4.0. |
Beta Was this translation helpful? Give feedback.
-
We are following semver as closely as possible without being impractical. (Even the most innocent-seeming changes sometime lead to unintended breaks, e.g. we add a new property and it turns out someone was extending the same class and had already added that same property, but with a slightly different signature.) In general we’re going with:
You could say hotfixes are the |
Beta Was this translation helpful? Give feedback.
We are following semver as closely as possible without being impractical. (Even the most innocent-seeming changes sometime lead to unintended breaks, e.g. we add a new property and it turns out someone was extending the same class and had already added that same property, but with a slightly different signature.)
In general we’re going with: