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:
123v1v2v3Projects may define further TAG values that indicate upgrade compatibility
e.g. lts-2012.
The following TAG values usually do not indicate upgrade compatibility:
0mastermainnextcanaryTAG 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.03.2.1 > 3.1.23.2.1 != v3.2.0v3.2.1 != 3.2.0v3.2.1 > v3.2.0v3.2.1 < v4.0.03.2.1 != master.2.1master.2.1 > master.2.03.2.1 > 0.2.1