v0.0.3
Version V is a simple Semantic Versioning.
No tags, no build metadata, modified major version spec.
TAG.FEATURE.CHANGE
FEATURE
is always a number.
TAG.FEATURE
indicates if a feature exists in a version.
FEATURE
is incremented when 0 or more features are added.
Unchanged or higher FEATURE
versions (with unchanged TAG
) must not remove any previous features.
CHANGE
is always a number.
CHANGE
is incremented with every consumable version.
FEATURE
may be reset when TAG
is changed.
CHANGE
may be reset when TAG
is changed or when FEATURE
is incremented.
TAG
is a string containing arbitrary characters.
TAG
should not contain special characters that may cause confusion.
E.g. TAG
should not contain '.', '\n', '\t'.
The last digits of TAG
, if any, may be used to compare versions with a different TAG
.
Unchanged TAG
may indicate upgrade compatibility,
depending on the value of TAG
.
The following TAG
values indicate upgrade compatibility:
1
2
3
v1
v2
v3
Projects may define further TAG
values that indicate upgrade compatibility
e.g. lts-2012
.
The following TAG
values usually do not indicate upgrade compatibility:
0
master
main
next
canary
TAG
should be equal to the branch name.
Use similar concepts when not using Git.
TAG
must be created,
necessitating the creation of a new branch.
This process discourages breaking changes by implying
that multiple versions of the codebase must be supported.CHANGE
FEATURE
.
Much simpler than trying to preserve the previous CHANGE
and harms no one.FEATURE
and CHANGE
are compared numerically,
FEATURE
being more significant.
TAG
is the most significant.
If TAG
ends with digits, those are compared numerically,
if the rest of the tag matches.
3.2.1
> 3.2.0
3.2.1
> 3.1.2
3.2.1
!= v3.2.0
v3.2.1
!= 3.2.0
v3.2.1
> v3.2.0
v3.2.1
< v4.0.0
3.2.1
!= master.2.1
master.2.1
> master.2.0
3.2.1
> 0.2.1