Which version was that? How to check which version you’re using

There’s been a lot of confusion lately over version numbers, notably for High Sierra and its installers. This article explains how they should work, and how to check version numbers.

Software is intangible. Even when you can look inside it, it’s very difficult to know whether one copy of an app is the same as another. You can compute their checksums or hashes to tell whether they are different, but that is tedious and can also result in misunderstandings.

When developing software, each product and all the files which are used to build that product are subject to version control. This can be managed automatically by the development environment being used, but is usually expressed in a series of version numbers.

Each time the product is built for testing, it is normally given a build number, which should be unique to that major version of the product. By the time that a product reaches the end of its maintenance life, and no further builds are made of it, there may well have been hundreds or even thousands of builds, so the build number is often expressed in hexadecimal or mixed alphanumerics to be more concise.

Each time that product is built for testing by those outside the development team, it should also be given a new version number. This enables testers and developers to know exactly which version they are testing or referring to. This could be done with build numbers, but once a product is being released to larger numbers of testers, for example in a formal beta release, it is much better that this is recognised with a new version number.

Version numbering is usually structured, to indicate the difference from previous versions. When Mac OS went from Classic Mac OS 9 to Mac OS X, this was clearly a very major change, so the first of the version numbers changed from 9 to 10. The last version of Classic Mac OS was 9.2.2, and the first release version of Mac OS X was 10.0, which had a build number of 4K78.

Within each major version there is a series of minor changes, which are tested using special beta-release version numbers such as 10.13.1b1, which is the first beta-test release of what will eventually be released as version 10.13.1. As these beta-test versions progress, only the last number within that is incremented, so the next beta will be 10.13.1b2, and so on.

Minor differences, perhaps only in a few components of the product, are normally reflected in the increment of the last number within the whole version. So the next release after macOS 10.13 – which is, in effect, 10.13.0 or 10.13.0.0 – could be 10.13.1 or 10.13.0.1. So when Apple released the final version of Sierra on 19 July 2017, it went from version 10.12.5 build 16F73 to version 10.12.6 build 16G29.

Software vendors have tried distinguishing different versions of their products purely on build numbers, but all experience shows that this leads to enormous confusion, and is thus bad practice when releasing software to the public. It is bad enough for beta-testers, and should never be inflicted more widely.

This is because of the way in which we can view version numbers.

For an app, the everyday method is to view the app in the Finder. This displays only what has been set as the Version in that app’s Info.plist file, under the key CFBundleShortVersionString. Unless the developer incorporates the build number into that string, it will not normally be shown in the Finder.

 

If you select the app and use Finder’s Get Info command, you will see the same version number shown in the General section, under Version. The build number, saved separately, is normally shown in the app’s About Box, which is only visible when you run the app, but should then provide complete details.

macOS installers have different version numbers which they can display. The first is the version number of the installer app itself. For the ‘fixed’ Install macOS High Sierra app, that is version 13.0.66. In addition to the required Info.plist file inside that installer app, it also has a version.plist file, which contains the same CFBundleShortVersionString as in its Info.plist. However, version.plist also contains additional version numbers which are not displayed by the Finder – in this case

  • BuildVersion, which is 24
  • CFBundleVersion, 1366
  • SourceVersion, 1054002000000000.

When you have installed that version of macOS, it too displays several version numbers.

highsierra24

The most accessible, and the one which everyone uses, is shown at the top of the About This Mac dialog, such as macOS Sierra Version 10.12.6, or macOS High Sierra Version 10.13. You can also view more specific details by clicking the System Report… button, and then selecting Software at the left. That should show the System Version, now giving the build number too, such as macOS 10.12.6 (16G29). Underneath that is the Kernel Version, such as Darwin 16.7.0.

Within macOS, each bundled app should have its own version number as for any other app. Versions of apps are not necessarily linked to the version number of macOS, so for example macOS 10.12.6 contains version 16.3 of Disk Utility.

At the best of times, version numbers are complex, but of great importance. Releasing two or more different builds of the same product to the public with the same version numbers can only cause great confusion. When that product also has a succession of different installers, it’s vital to follow best practice in using different version numbers.