Monday, April 22, 2024

Software Version: What do they really means?

4 min read

Key points

Software updates: Not just random numbers.
Decode the secret message: Explore different versioning systems.
Know what you're getting: Understand the updates, either is a new features, bug fixes, or breaking changes.
Dive deeper: Read the full post to become a software update master!

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.

"Ubuntu Release Versions"
"Ubuntu Release Versions"

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.

You might want to check these out ↘

How Your Database Stands Up to the Ultimate Reliability Check: ACID rules

How Your Database Stands Up to the Ultimate Reliability Check: ACID rules

For IT professionals in database management, grasping the core principles that protect our digital transactions is essential. Today, we're exploring the ACID model, a pivotal framework for ensuring transaction reliability and security. This goes beyond mere theoretical knowledge; it's vital for the smooth operation of diverse systems, from financial processes to social media platforms. We'll delve into the ACID principles and their critical role in real-world applications.
Convert String to Date: The Java Ways

Convert String to Date: The Java Ways

Converting strings to dates in programming is a common task that's more complex than it seems. This challenge is rooted in the wide range of date formats and the specifics of time zones. Converting a String to a Date in Java can be done in several ways, depending on the Java version you're using and whether you are incorporating external libraries. Below are the primary methods used in different versions of Java and through some commonly used external libraries.
Cookbook: How to Effectively Revert a Git Commit

Cookbook: How to Effectively Revert a Git Commit

As a software engineer, encountering situations where recent changes need to be undone is not uncommon. It may be due to errors, or in some cases just need a significant rework. When such scenarios arise while using Git as your version control system, there’s a few approaches that can help revert those changes effectively. Let’s take a closer look.
Technology
Trending
Contact Us

Stay ahead of the curve
on software insights and technology trends.