> Also an interesting take on how much Microsoft has had to unwind in a compatible way over the years.
It's very much self-inflicted technical debt. From a Spolsky on Software article from 2004:
> Raymond Chen is a developer on the Windows team at Microsoft. He's been there since 1992, and his weblog The Old New Thing is chock-full of detailed technical stories about why certain things are the way they are in Windows, even silly things, which turn out to have very good reasons.
> The most impressive things to read on Raymond's weblog are the stories of the incredible efforts the Windows team has made over the years to support backwards compatibility:
Look at the scenario from the customer's standpoint. You bought programs X,
Y and Z. You then upgraded to Windows XP. Your computer now crashes
randomly, and program Z doesn't work at all. You're going to tell your
friends, "Don't upgrade to Windows XP. It crashes randomly, and it's not
compatible with program Z." Are you going to debug your system to determine
that program X is causing the crashes, and that program Z doesn't work
because it is using undocumented window messages? Of course not. You're
going to return the Windows XP box for a refund. (You bought programs X, Y,
and Z some months ago. The 30-day return policy no longer applies to them.
The only thing you can return is Windows XP.)
>
I first heard about this from one of the developers of the hit game SimCity, who told me that there was a critical bug in his application: it used memory right after freeing it, a major no-no that happened to work OK on DOS but would not work under Windows where memory that is freed is likely to be snatched up by another running application right away. The testers on the Windows team were going through various popular applications, testing them to make sure they worked OK, but SimCity kept crashing. They reported this to the Windows developers, who disassembled SimCity, stepped through it in a debugger, found the bug, and added special code
that checked if SimCity was running, and if it did, ran the memory allocator in a special mode in which you could still use memory after freeing it.
> This was not an unusual case. The Windows testing team is huge and one of their most important responsibilities is guaranteeing that everyone can safely upgrade their operating system, no matter what applications they have installed, and those applications will continue to run, even if those applications do bad things or use undocumented functions or rely on buggy behavior that happens to be buggy in Windows n but is no longer buggy in Windows n+1.
http://www.joelonsoftware.com/articles/APIWar.html