They are the poster boy for a corporation despite having screwed up incredibly so many times over the years, nearly fallen off a cliff and treating their customers like crap ("you're holding it wrong" for example) and still only maintaining a minority market share on the desktop and handset market. Also they have several system architectures and complete API rewrites over the years that mean their client-base rewriting the entire universe every time they move the goalposts.
For comparison:
MSDOS is 32 years old. Stuff still runs from day one.
Windows is actually 28 years old. Stuff still compiles from day one (windows' original API isn't much different to today's windows). Stuff still runs from circa 1995 on current machines.
Unix is 45 years old. Stuff still compiles and runs from circa 1974.
Windows is incredibly hampered by the desire to maintain backwards compatibility. There's a ton of ugly stuff that could have been jettisoned by now if it wasn't for the need to support some program written in 1990 for the windows 2.0 API.
I agree there are many benefits to backwards compatibility, and in some cases it is warranted (though these days you can use virtual machines to achieve much the same goals). Apple made a different choice, and their platform is all the better for it. I like that they deprecate things and don't keep us held back by ancient technology.
The most extreme I can think of was one reported by Raymond Chen on his "The Old New Thing" blog which I can't find the specific link for, but is discussed in an article by Joel Spolsky:
"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."
You picked a particularly poor example. The application compatibility layer does not incredibly hamper the OS whatsoever. First of all the ACL is only active when known executables that have problems with the newer versions are running. As an educated guess it would not take more than a millisecond to ID the .exe. Secondly what the ACL does is fairly benign - what it amounts to in simple terms is that it simply uses a different code path for a very narrow set of functions. The cost associated with loading an 'extra library' is so marginal that you would find it hard to measure.
> Also they have several system architectures and complete API rewrites over the years that mean their client-base rewriting the entire universe every time they move the goalposts.
There have only been two instances of that: 68k to PPC and then Mac Toolbox to Cocoa. Carbon held the gap for a number of years by porting Mac Toolbox APIs to use modern things like protected memory. Both of those events were necessary and welcomed changes.
PPC to Intel was not a major rewrite for anyone except people who already knew what they were doing.
What's the problem here? Providing new APIs that reflect the advancements in software technology made in the last 45 years is a _good thing_.
They are the poster boy for a corporation despite having screwed up incredibly so many times over the years, nearly fallen off a cliff and treating their customers like crap ("you're holding it wrong" for example) and still only maintaining a minority market share on the desktop and handset market. Also they have several system architectures and complete API rewrites over the years that mean their client-base rewriting the entire universe every time they move the goalposts.
For comparison:
MSDOS is 32 years old. Stuff still runs from day one.
Windows is actually 28 years old. Stuff still compiles from day one (windows' original API isn't much different to today's windows). Stuff still runs from circa 1995 on current machines.
Unix is 45 years old. Stuff still compiles and runs from circa 1974.