neuroanatomist said:
jd7 said:
So Apple makes software which is specifically intended as an operating system, ie software intended to be used as a base system on which other software will run, but Apple thinks it's fine to update its operating system in a way which breaks the software which other people have written to run on its operating system ...? If what you say is true, ie backwards compatibility isn't something which concerns Apple, I don't know why users or developers should bother with Apple's products.
Yeah, Apple just releases new OS versions by surprise, never telling anyone in advance or making early versions available to developers. That's why all the good software is only for Windows, because Microsoft never does that.
We now return you to your regularly scheduled reality.
I remember reading the book "Joel on Software" (mostly a collection of his blog) back in 2005 and recall an interesting piece on how Microsoft went out of their way, even modifying windows behavior for other's program bugs to maintain backwards compatibility. The Simcity story is just one pretty amazing example.
[quote author=Joel Spolsky]
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:
[quote author=Raymond Chen]
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.)
[/quote]
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. In fact if you poke around in the AppCompatibility section of your registry you'll see a whole list of applications that Windows treats specially, emulating various old bugs and quirky behaviors so they'll continue to work. Raymond Chen writes, "I get particularly furious when people accuse Microsoft of maliciously breaking applications during OS upgrades. If any application failed to run on Windows 95, I took it as a personal failure. I spent many sleepless nights fixing bugs in third-party programs just so they could keep running on Windows 95."
[/quote]