Joel Spolsky is wrong. In his very well known article, known as How Microsoft Lost the API War, he claims that:
There are two opposing forces inside Microsoft, which I will refer to, somewhat tongue-in-cheek, as The Raymond Chen Camp and The MSDN Magazine Camp.
…
The MSDN Magazine Camp is always trying to convince you to use new and complicated external technology like COM+, MSMQ, MSDE, Microsoft Office, Internet Explorer and its components, MSXML, DirectX (the very latest version, please), Windows Media Player, and Sharepoint… Sharepoint! which nobody has; a veritable panoply of external dependencies each one of which is going to be a huge headache when you ship your application to a paying customer and it doesn’t work right. The technical name for this is DLL Hell.
…
The Raymond Chen camp is all about consolidation. Please, don’t make things any worse, let’s just keep making what we already have still work.
For those of you who haven’t heard of Raymond Chen, he’s a developer who has been with Microsoft for around 15 years or so, and is the author of a fairly popular blog called The Old New Thing. Raymond Chen happens to work on the same team that I do, Windows Shell, and I’ve nearly knocked him over in the hallways on more than one occaision (he’s really not a big dude… and I don’t really pay attention to where I’m walking all the time). One of the things that Raymond is known for is writing about the herculean task of ensuring backward compatibility in Windows. It’s one of the hardest things we have to do here, since we have to account for every possible way that a developer could misuse an API, or depend on some minor implementation detail of an API. When Joel Spolsky tells the world that the “Raymond Chen Camp” is dead, he’s dead wrong.
For starters, application compatibility, or AppCompat as it’s known here, is just much of a priority as it ever was before. When a company tells us that our latest beta of Vista breaks an application they’ve been using on XP, we work with the company to determine if there is a solution to their problem, or if we need to add special compatilibity code for their application. From the perspecitve of an idealist, this may seem distasteful. In the end, however, it has no effect on the performance of Windows, and the net effect for our customers is very positive. Joel is completely correct in stating that Apple has never cared about application compatibility in the same way that Microsoft has. The end result is that corporations tend to stay away from Apple products, since Apple makes no garuntees that the next version of OSX won’t break their multi-million dollar enterprise application. The tradeoff, of course, is that Apple can adopt new technologies very quickly, and is one of the reasons why OSX is technically superior to XP in several ways.
My second point is that Joel fails to comprehend the technologies he claims are destroying AppCompat. For one thing, he mentions COM+, DirectX, and DLL Hell all in the same breath. DLL Hell is completely unrelated to anything he mentions, and is a problem that was mostly solved by WFP (Windows File Protection) and SxS (Side by Side) component technology. In fact, DirectX and COM+ are both based on COM, which is yet another windows technology that helps ensure application compatibility between different versions of the same DLL. Any time someone writes a program that depends on some cool “MSDN Camp” component, the installation of said component will work on any new version of windows, since these components are included in AppCompat measures just like everyone else. There’s no difference between Microsoft releasing some cool speech recognition package and a third-party ISV releasing a cool speech recognition platform, both will always continue to be compatible with every new version of windows.
This is getting too long, so I have one final comment to make regarding Joel’s article:
Microsoft got big enough, with too many developers, and they were too addicted to upgrade revenues, so they suddenly decided that reinventing everything was not too big a project. Heck, we can do it twice. The old Microsoft, the Microsoft of Raymond Chen, might have implemented things like Avalon, the new graphics system, as a series of DLLs that can run on any version of Windows and which could be bundled with applications that need them.
What’s that you say Mr. Microsoft? Avalon is implemented as a series of DLLs that will be available on Windows XP? Oh I see, that’s very interesting. You can take your foot out of your mouth now, Mr. Spolsky.
-Tim