Versioning Web Applications Products.
Versioning is the process of assigning either unique version names or unique version numbers to unique states of computer software.
Within a given version number category (major, minor), these numbers are generally assigned in increasing order and correspond to new developments in the software.
Types of Versioning
- Internal version number for software development purposes. Generally, a VCS (or SCM) provides a unique commit version number after each commit and a version number can be tagged after each production release cycle to easily retrieve the state of a particular version.
- A released version that typically changes after each release of software to production. This version number may or may not be known to the customer or user.
Displaying version number to customers:
The usual purpose of version numbers is to tell the user if their application is up-to-date or not. When this is not within their control, it can at least be useful for support personnel to verify that they received the latest version.
But when you have a software-as-a-service where all users share the same deployment, there is little reason to communicate the version number to them.
A Version number should be communicated for downloadable or standalone software which is installed in users computer or self-hosted.
Facebook, Google doesn’t display version number; but WordPress, Magento, Laravel, for example, release log of each Major/Minor/Patch release.
Advantages of versioning
- Debugging: Like said above, it is easy for support personnel to verify error if the version is known.
- Updating: Having a version number helps an end user know if the software installed is latest or not. And update accordingly.
- Dependency management: If the software depends on any other packages or software, getting version information of the dependent package helps to know if the dependencies are meet or not. Composer, a PHP based Dependency Manager uses the version number of dependent package to install & update it.
Assigning version numbers
Every software/company follow a different way of assigning version numbers. These numbers are always meaningful and convey something important about the version.
One of the most commonly & widely used versioning system is SemVer
Semantic Versioning (SemVer)
SemVer provides a meaning way for versioning software application. It is one of the most widely used versioning system.
According to SemVer a version number has 3 main components:
Given a version number MAJOR.MINOR.PATCH, increment the:
- MAJOR version when you make incompatible API changes
- MINOR version when you add functionality in a backwards-compatible manner, and
- PATCH version when you make backwards-compatible bug fixes.
Additional labels for pre-release and build metadata are available as extensions to the MAJOR.MINOR.PATCH format.
You can read complete details about it here.
PHP package for SemVer:
While updating a web application it needs to check and compare the old & new version and update the codebase/database accordingly. Using PHP comparator doesn’t work as it needs to follow certain rules as per SemVer. As composer uses Semver for dependency management they have a standalone package which can help us compare easily between different version.