Software Version: What do they really means?
4 min readKey points
According to Wikipedia, the software versioning "is the process of assigning either unique version names or unique version numbers to unique states of computer software. "
As software professionals, we all consider ourselves known pretty well what software versioning is about. But do we?
Let’s take WordPress as an example. This popular content management system has been constantly evolving with new features and updates. Each update is clearly marked with a unique version number. A notable update was WordPress 5.5
, which brought in automatic updates for plugins and themes—a real game-changer aimed at boosting both security and the overall user experience. This means that both everyday users and developers have the opportunity to update their websites and tools accordingly, ensuring everything works smoothly together and taking full advantage of the latest improvements.
If you look at how WordPress names their software versions, for instance from here. You’ll see that it follows a pretty standard way others been using as well - It’s called SemVer (Semantic versioning).
Semantic versioning
Actually, SemVer is particularly favored in the open-source community because it helps developers understand the impact of changes just by looking at the version number. The format is simple yet informative: MAJOR.MINOR.PATCH. Here’s how it breaks down:
MAJOR
versions indicate incompatible API changes,MINOR
versions add functionality in a backward-compatible manner,PATCH
versions are for backward-compatible bug fixes only.
Consider the release of 2.0.0
, from the version 1.2.0
, in the schema of SemVer, this would signal a significant change, potentially breaking older integrations, whereas an update from 2.0.1
to 2.1.0
simply adds features without disrupting existing functionality.
Calendar-based Versioning
Another interesting approach is the Date-based Versioning, or CalVer, that is also used by many organizations, including the Ubuntu Linux. The idea is, instead of sequential or incremental numbers, the versions are marked by the year and month of release, like Ubuntu 20.04
, released in April 2020. This scheme is particularly useful for conveying the age of the software and the lifecycle stage at a glance.
Besides the versioning pattern, some releases may have its intrinsic meaning. ex. according to Ubuntu:
LTS
or Long Term Support
releases are published every two years in April. LTS releases are the ‘enterprise grade’ releases of Ubuntu and are used the most. An estimated 95% of all Ubuntu installations are LTS releases.”
Sequential Versioning
Sequential versioning is a simpler approach where each release is incremented numerically: Version 1, Version 2, and so on. This method is straightforward but less informative compared to SemVer and CalVer, as it does not inherently convey information about the nature of the changes between releases.
Some examples of sequential versioning, including those from Microsoft and Adobe in the early days. Windows 1.0, 2.0, and 3.0 are the first three versions of Microsoft Windows, released in 1985, 1987, and 1990 respectively. These versions were all based on MS-DOS in the old days before Microsoft shifted towards more descriptive versioning that provided additional context about the updates, such as Windows 95, Windows ME, and later XP and Vista. Adobe Photoshop has similar naming from Photoshop 1.0, 2.0, 3.0 through 7.0, before introduced Photoshop Creative Suite.
Version numbers with code names
Apple has set a great example in this case. Check out how Apple versioned its Mac OS in the past decades, from here.
Each code name was like a cool storyteller for the Mac software product. First, it used fierce cats like Leopard
and Mountain Lion
to show how powerful these updates were. Then, in 2013, things got sunny! It switched to California places like Mavericks
and Yosemite
. These weren't just boring numbers (like 10.14
), they were cool spots, making each update feel like an adventure.
Here's the genius: these cool codenames didn't replace the version numbers. They worked together, like a secret handshake for Mac fans. The numbers kept things clear, while the codenames sparked conversations and made each update feel special. It wasn't just an upgrade, it was a trip to Yosemite, a chance to explore something grand.
This clever trick isn't just unique to Apple. Many companies use catchy names to make their software more memorable. It's like naming your car or a movie – the right name sticks and shapes how you feel about it. For Apple, these codenames make macOS feel less like a technical update and more like an exciting part of the Apple experience, a journey you take with your Mac.
Summary
The application of versioning can vary significantly in different contexts. Open source projects often adhere strictly to Semantic Versioning, as it provides clear guidelines that aid in managing contributions from various developers. In contrast, commercial software might use a versioning approach that aligns more closely with marketing and customer expectations. In agile development environments, versioning plays a pivotal role. Agile teams may release updates more frequently, which can necessitate a more dynamic versioning strategy to accommodate rapid iterations of the product without causing confusion about the project's state.