Understanding Version Numbers

So we've all seen that some app or Operating System needs to update to the X.X.X version. But do we really understand what the version numbers mean? Well, don't worry, because we're here to break this down for you. The X.X.X version is what is called "Semantic" versioning. But first, let's talk about another one.

Build Numbers

So this is fundamentally different than version numbers, but not really. It's the go-to versioning method for my favorite piece of software, Ubuntu, and even used in Windows, and it's really simple. Right now, the latest version of Ubuntu is 18.04. That means that it was released in the 4th month of 2018. In October, another version will come out, which will be 18.10. This happens every 6 months, and every fourth version gets the "LTS" tag, which stands for "Long Term Support" and basically means that it will receive 5 years worth of updates and maintenance instead of the 6-9 month coverage that the intermediate releases get.

Similarly, back around March, Windows released the 1803 Build. This was because the version was built in March 2018. it's really that simple. The idea for build numbers is not so much to show which version you are on, but more so to let you know how 'old' your software is. Another good example here is the Jet Brains development suite. It's a collection of programming IDEs that us developers use to make our fancy pants software. Every time I open up PhpStorm or Pycharm, I'll see something like 2018.1 or 2018.2 So instead of seeing "7.2.14", which I would then have to look up how old that specific version is, I know right away that it was released in January/February of this year. It really is that simple, and that's by design. But don't be disappointingly underwhelmed yet, because now it's time to talk about the more common, and I'd say more interesting method.

Semantic Version Numbers

So here we are with the X.X.X (and sometimes other stuff) version numbers. Let's look at the First number and start there, but for all of these we'll be using the example of 7.2.14 so we have a consistent example to use as we go over each piece of the make-believe version number.

First Number - 7.2.14 (Major Updates)

So that first number is going to refer to which MAJOR version the software is on. If you're familiar with an online game like World of Warcraft, this number will typically change when an expansion pack is released. And sometime within the next year, WordPress will go from 4.x.x to 5.0 due to the introduction of Gutenberg, and a few other sizable changes to how WordPress works. This number only changes when there has been a huge, potentially project-breaking update. Maybe you're completely rebuilding an API in a way that it will no longer use the same methods for validation as the old version, which is definitely a significant change. But it doesn't always have to be a single huge game changer. Maybe you're just adding so many new features to the software that it merits being considered a new version entirely.

Second Number - 7.2.14 (Minor Updates)

So there will be times where you just want to add a new feature or three, and maybe they're not even all that groundbreaking. Maybe you're consolidating a few functions to make things more lightweight. Either way, this is a small change that isn't quite enough to merit a full version update. So instead, we just bump up the second number. It's a way to let people know that "Hey, this isn't a full-on overhaul, but there is some neat stuff being added that you may like". So even though it may not seem as important as a 'true' version update, it's still important to make sure you update your software.

The Last Number - 7.2.14 (Patch Updates)

This is the smallest, but some may argue the most important aspect of version numbers. The last number represents patches. This commonly means that some bugs have been fixed, which can be anything from a super-trivial issue to something as big as a security fix. I would say that these carry the most weight, at least from a certain point of view, and should definitely be updated as soon as possible. Out of date software is never a good thing.

But that's mostly it for the numbers, save for one other thing I want to point out. Notice the last number is a 14, having two digits instead of one. Just because one update is 7.2.9, doesn't mean the next one is going to be 7.3.0. As long as it's just patches being made, the bottom number will continue to increase until new features are added to merit an increase of the "Minor" version.

Additional Tags

For the most part, if you just see the X.X.X without anything after it, you can safely assume it's what we call a stable release. This means that to the best of our knowledge, the software should work as intended and won't cause any major crashes. But on occasion, you may see some extra characters (numbers OR letters) to let you know a little more about the version. It could be something super on-the-nose, like "beta" to let you know that it's the beta version. You may also see "rc1", which tells you a little more. The RC stands for "Release Candidate", and will have it's own 'mini' version number of sorts. So you may see something like this:

Stable Release: 7.2.14
Preview Release: 7.3 rc1

This is simply letting you know that 7.2.14 is fully safe to use, but there is another version available if you want to take the risk of working with a product that isn't fully fleshed out. And unless you're a developer who wants to contribute to open source software, or just get a sneak peek at what's coming in the near future, you're never going to touch this. Another neat thing to know is that Major and Minor versions will often get a nickname for development. You mac users see this a lot with how Mac OSX has just been "Sierra" or more recently "Mojave", despite that the only thing changing is the Minor version.