After much discussion, I see three basic categories of approach:

A) distinguish releases using unstable release suffixes only
B) distinguish releases using some version number modification
C) distinguish releases using some version number modification AND unstable 
release suffixes to indicate these builds are unsupported

These can be further subdivided to:

A1.   4.1.0-PRE{1,2,3,4} -> 4.1.0-alpha1
A2.   4.1.0-alpha{1,2,3,4} -> 4.1.0-alpha5
B1. 4.1.{0,1,2,3} -> 4.1.4-alpha1
B2. 4.{1,2,3,4} -> 4.5.0-alpha1
B3. 4.{1,2,3,4} -> 5.0.0-alpha1
C1. 4.1.{0,1,2,3}-pre -> 4.1.4-alpha1
C2. 4.{1,2,3,4}.0-pre -> 4.5.0-alpha1
C3. 4.{1,2,3,4}.0-pre -> 5.0.0-alpha1

I vote, in order of preference, for A{1,2},C{1,2,3},B{1,2,3}


From: Mick Semb Wever <m...@apache.org>
Date: Tuesday, 21 December 2021 at 15:48
To:
Cc: dev@cassandra.apache.org <dev@cassandra.apache.org>
Subject: Re: [DISCUSS] Periodic snapshot publishing with minor version bumps
> My preference is to get our versioning as standard Semantic Versioning as 
> possible, to avoid any precedence that depends on finely reading through the 
> spec that isn't otherwise popular.  Requiring the ordering of the pre-release 
> tag to be case-sensitive alphanumeric is an example of this, but only one.


I am not comfortable relying upon the pre-release tag being
case-sensitive alphanumerically ordered.

Standardising on lower-case pre-release labels and build metadata can
be beneficial, especially when
cross-platform scenarios are considered.  (One of SemVer author's own words.)

One example implementation exists here (in a library that we do already use)
https://github.com/vdurmont/semver4j/blob/master/src/main/java/com/vdurmont/semver4j/Semver.java#L235

And when it comes to cognitive load, I would question the load of
knowing what the difference between PRE1 and SNAPSHOT is (when there
is none), and why we use a custom pre-release tag on builds that are
not releases.

Reply via email to