Against 1.0
what if semantic versioning but the semantics were consistent
Something I’ve been holding in too long but that I want off my chest:
The notation 1.0
for a first public release doesn’t really make sense.
- At the
major
version level,0
means “pre-public” and “public” starts with1
. - At the
minor
version level,0
means “public” formajor
version>= 1
. - At the
minor
version level,0
is not used formajor
version0
.
So 1.0
uses 0
-based indexing for minor
versions and 1
-based for major
versions.
- Except when it doesn’t. Got it?
I suggest that 0
should always mean “pre-public” and “public” should always start from 1
.
- Full public releases should have
major
andminor
version numbers>= 1
. - So a project’s very first full public release could perfectly well be
1.1
. n.0
should be reserved for a public beta ofn.1
(a pretty normal thing to have).
From consistency we get an obvious way to semantically version a public beta.
- I don’t know about you, but I’ve found this otherwise impossible to do nicely.