The Trouble with Software Versioning
In my early career I worked in Technical Support. One of the most important pieces of information you need to answer a customer question is what version of the software they are using.
Software version information is also critical important if you’re managing an IT estate (large or small). When patches are released, do you need to install them? If you do, what systems and services will be affected? Over time, as new services are deployed on new infrastructures, many different versions of the same products co-exist within the IT estate.
So, finding version information is very important. The trouble is, its not easy.
Microsoft has done a good job in pushing vendors to adopt MSI, because they have such a dominate position and their user community expects MSI based installers. You would think that all this standardization would make finding version information simple on Windows machines, right? Wrong …
A Windows Administrator (or a system like Tideway Foundation) has a number of ways to find out what’s installed on a machine and what version it is. A common way is using WMI – just query the Win32_Product array for a list of installed software and look at the Version property. Sadly, this fails in numerous ways:
- Win32_Product doesn’t actually return a complete list of installed software! If you manually look in the Control Panel or search the Registry, you will find other software that the system knows about that Win32_Product doesn’t report – why is that?
- The Version property is a string so vendors (including Microsoft) are free to put whatever information the like. I’ve seen products with a blank Version property (helpful), a Version number (hurrah!), a Version and a patch level, the Product Name and it’s Version and even cheeky messages from the developers! None of that helps the poor Windows Administrator
- The final problem with Win32_Product is that as of Server 2003, the MSI WMI support is an optional OS component which you must explicitly install. I just can’t understand why Microsoft made that decision because all it does is make Server 2003 harder to remotely administer with WMI!?
On UNIX, the situation is much worse. The main problem for vendors is that all these platforms have different installation mechanisms, requiring vendors to maintain different installers for each supported platform. Typically, independent vendors don’t use the platform installation mechanisms and roll their own installers using tar archives, shell scripts and/or graphical installers.
This gives the UNIX Administrator a similar problem to the Windows guy: even if we asks the OS for all the installed software, its only part of picture. He needs to search the file system for other packages that have been installed. Just finding software means he needs to know what the installed packages look like (this is why organisations typically install software known locations like /apps). Once packages have been found, he still needs to know how to exact the version information:
- There like be a clue in the path like /apps/someproduct/1.3 but even that can’t always be trusted (a patch might be directly applied meaning the version is actually 1.3.1 which might be a critically important piece of information!)
- There might be files to look in for version information
- The administrator may have to run commands to extract the version information. That might require specific permissions (and might have unexpected side effects if he’s not careful
- Or one of a number of other weird and wonderful techniques …
All this is a lot of work for something as conceptually simple as a version number! So, if you’re a software developer building that latest and greatest software solution, I make one simple plea: PLEASE make is simple and straightforward to get a version number!! That little bit of work up front will enable you to support your customers more easily and enable them to know what they are running and if that need that latest patch …
If you’re running an IT estate, you need to know that your vendors are trying to help you: ask them how easy it is to get the version number (down to the patch level) for their products, then make them show you. If its not easy and accessible automatically (i.e. from your favorite scripting language), how much effort is it going to be to get support when something goes wrong?

Comments have been disabled for this post. 