Microsoft’s biggest problem today is they are overwhelmed with the complexity of their software and hampered by their ancient code and old tools.

This is a quote from Keith Curtis, a former developer at Microsoft. And it matches my own perceptions.

I was asked, semi-jokingly, by a co-worker why I hated Microsoft. I told him I didn’t, that I found them increasingly irrelevant. That Microsoft was shackled by backwards compatibility. It’s truly amazing that they are making the progress they are while dragging around all of the crap and cruft at the same time.

Don’t know what I’m talking about? Linux kernel developers push for drivers to be open source not just because it’s a philosophical point but because the driver model changes unpredictably between minor point releases. Drivers that are open source and maintained in the kernel tree (which is 99.9% of them) get updated. Drivers that are external and closed source stop working. Linux has stable interfaces but only at the application level.

The kernel developers decided that dragging old code around was a waste of their time. Windows developers have had to stay bug compatible with old versions of Windows. It’s been with extreme pain and angst that they have dropped or changed any old interfaces. Apple regularly breaks apps between operating system releases. Let me state that again, they regularly break apps. Not small ones. The bread and butter ones, like Photoshop. Their viewpoint, don’t upgrade until your apps are ready for the new OS.

Why would Apple and the Linux devs take this approach? Because keeping the old code decreases stability, increases the maintenance load and decreases performance. When will Microsoft become relevant to the future of the desktop? When they cut ties with the past.