It's important to communicate the extent of changes in a new release of code, because sometimes updates to one set of code can break another set of code (called dependencies). Semantic versioning (semver) is a standard that was designed to solve this problem.


OpenJAUS switched to a semantic versioning scheme starting with SDK v5.0.0, such that changes to our products are versioned as follows:


Code Status
Stage
Rule

Example #

Bug Fixes, or other minor changes
Patch Release
The 3rd digit is incremented

5.0.1

New features that don’t break existing features
Minor Release
The 2nd digit is incremented

5.1.0

Changes that could break backward compatibility
Major Release
The 1st digit is incremented

6.0.0

First Release
New Product
Start with 1.0.0

1.0.0


The use of semantic versioning helps you understand what versions of the libraries will work together so you don’t end up in dependency hell, or leave you stuck on an old version because you’re afraid to upgrade to the latest version and breaking everything.


See www.semver.org for more information about Semantic Versioning.