I've seen some questions and complaints about contribution versioning.

So I'm posting the versioning guidelines that I use, and if anyone want to use them in their works as well, they are free to.

I use versioning that is based on the NumVersion Struct and has the following revision indicators:

[major revision].[minor revision].[bug revision]-[stage]

Major revision increments indicate significant changes and/or jumps in functionality and/or programming.

Minor revision increments indicate minor feature changes and/or significant bug fixes. The minor revision number is limited to a single digit, 0 — 9. The minor revision number may jump or skip revisions if there are significant changes, but not significant enough to warrant a major revision increment. As a general guide, the jumping should be done in increments of 5 revisions, thus allowing only one jump per major revision before the major revision must be incremented. Minor revision releases may be referred to as “point releases.”

Bug revision increments indicate minor bug fixes. The bug revision number is limited to a single digit, 0 — 9. The bug revision number may not jump or skip any revisions. If there are significant enough fixes to warrant such a revision jump, the minor revision should be incremented instead.

The stage indicator consists of a string belonging to one of dev, alpha, beta, or final followed by the stage number, beginning with “1”. In the case of final releases, the stage indicator is omitted. Only the final release stage may increment the other revisions.

When a revision indicator’s number increments, all lower revision indicators automatically roll back to zero.

Examples of correct versioning
  • 3.2.0-beta1 to 3.2.0-beta2
  • 3.1.0 to 3.1.1
  • 3.2.5 to 3.3.0
  • 3.2.5 to 3.7.0
  • 3.7.4 to 4.0.0-beta1
  • 3.7.4 to 4.0.0
  • 4.0.0-beta1 to 4.0.0

Examples of incorrect versioning
  • 3.2.0-beta1 to 3.2.1-beta1
  • 3.1.0 to 3.1.2
  • 3.2.5 to 3.3.1
  • 3.2.5 to 3.5.0
  • 3.7.4 to 4.1.0-beta1
  • 3.7.4 to 4.1.0
  • 4.0.0-beta1 to 4.0.1
  • 4.0.0-beta1 to 4.1.0