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.