Not-Enterprise-Ready Linux
Raymond Chen writes often about the great lengths to which Microsoft go to ensure backwards compatability with old versions of Windows. He describes how they preserved a bug in the ValidateRect function that invalidates all Windows on the screen when a NULL is passed. This was unitentional behaviour, but because Windows is so widely used, some company somewhere probably depends on it. Maybe it’s a mission-critical app that may crash or break if they fix the API bug, so they preserve the wrong behaviour, but document it.
However, instead of preserving and documenting the unexpected behaviour, the OSS community regularly fixes the bug, ie corrects the behaviour of the function to what is expected. If you had to write mission critical software, which OS would you use? Probably Windows. Even though it is widely considered to be less secure, at least your software won’t behave differently depending on which version of the platform it is installed on.
You can argue that when writing new public functions, OSS makes such mistakes less often. Comparing KDElibs and the Win32 API, I’m tempted to agree because Win32 is a really nasty API that no developer could really evolve without introducing such bugs. But otherwise I disagree, I’ve noticed plenty of mistakes in KDElibs that I’ve reported and have been fixed which are of a similar nature to the above.
So perhaps you could convince your client to not upgrade. Which is perhaps a reasonable request, since you could maintain an entire custom distribution of Linux for them. But since security patches are usually only back-ported to the previous point release, is that ok? At least in an open source world, you can backport such fixes yourself.
Frankly I wouldn’t have it any other way. Linux is nice to write software for because mistakes in API design and behaviour are corrected. Also the open nature means I spend hours looking for workarounds with Win32 issues, but much less time with Qt/KDE issues.
