Release and Stability Versioning Explained
Software versions can sometimes be difficult to understand. And, in my experience, it’s even harder to find a clear explanation on how to version your own product releases. So, after searching for clarification, I found some reasonable guidelines to follow. Let me know if they’re helpfull in your projects.
The standard version schema will be as follows: X.Y.Z.P-Stability Status#
- X - Major version number - Major version changes, which include adding and removing features and functionality. These releases will provide an upgrade path to allow users to upgrade, and will have minimum backwards compatibility to previous major versions.
- Y - Minor version number - Minor version changes, which include the adding of new features and bug fixes. Upgrades should be straight forward. The release should have maximum backwards compatibility to previous minor versions.
- Z - Revision version number - Bug fixes and minimal new features. Upgrades should be straight forward. The release should be fully backwards compatible to current minor version.
- P - Patch version number - Urgent bug and/or security fixes. Upgrades should be straight forward. The release should be fully backwards compatible to current minor version.
- Stability Status# – How stable the release is (e.g. rc, beta, alpha), where # is the stability status number. The higher the number the more mature the release
Stability Status explanation:
- Alpha - A suffix of ‘alpha’ means that this is a preview release of the upcoming version. It is not recommended in any way to be used in a production environment and does not guarantee that any of the features, functionality, API or code will be available in the stable release of this version. Business decisions should NOT be made based on this release. It is released as a first look into the upcoming version and might include major bugs and issues. It is intended for the use of developers and testers that want to have insight into the core development.
- Beta - A suffix of ‘beta’ means that this is a more mature release than the alpha releases for this version. It is not recommended in any way to be used in a production environment. Since it is a more mature release there is a better chance that features, functionality, API and code will not change in the stable release of this version, but this is not guaranteed and no business decision should be made based on this release. Developers, testers and users are encouraged to test this release in a non-production environment and provide feedback on any issues they might find. Extension maintainers and developers are encouraged to test their extensions for compatibility with this release.
- Release Candidate (rc) – A ‘rc’ suffix means that the release is getting closer to being stable. It is not recommended to be used in a production environment but all features and functionality are locked in for this version. Code and API might change slightly to accommodate for bugs or issues that are found in this release. Developers, testers and users are highly encouraged to test this release and provide feedback on any issues they might find. Extension maintainers and developers are highly encouraged to test and update their extensions as needed for compatibility with this release.
- No stability level specified – If a release version number is not followed by any suffix from the above this means that this release is production ready and stable. We still highly recommend testing your site on a non-production environment before upgrading your live installation directly. All extensions should be updated to be fully compatible with this release.
