So in that regard, I have one question and one comment. The question is about the reason for the degradation. You mention the possibility of poor initial design. I really wonder about that. OSX on the whole is a fine operating system, but Apple has been putting a tremendous effort into continued evolution and updating to take advantage of new technologies, enhanced technologies and most importantly system security. Would you rule out the possibility that the changes they are making are in response to these factors rather than poor initial design?
Apples development of a 32 bit, protected mode operating system was an unbelievable circus. They had several go's at it themselves (Pink, Taligent, Copeland), before buying someone else's (NeXTSTEP), all the while ignoring established OS alternatives (UNIX). Microsoft's development of WindowsNT makes a sobering comparison, and Dave Cutler's work has really stood the test of time. That Apple ended up with something of a dogs breakfast of API's that don't seem to have anticipate future requirements very well, would seem to be one result of the convoluted development history.
And a supplementary, is it not the case that Apple sends developers the new development materials well ahead of the changes being implemented to give other application developers time to adapt (and yes, I hear you about the time and cost involved)?
If one has the time and resources to look into this as an application developer, that's great. But providing such doesn't compensate for having to re-write a bunch of code that achieves exactly the same outcome, just because the API's have been changed.
[ For a really outrageous historical example, Apple and Adobe come up once again, when Apple reneged on it's commitment to Carbon, and Adobe had to completely re-write the GUI of application like Photoshop using Cocoa. ]
i.e. as an application developer, you would want to thoroughly pretest an update before issuing it, especially knowing what you do about how changes to the system environment under the hood could affect your product in unexpected ways.
That's an ideal situation, but once again, time and resourcse impose limitations. If one has a comprehensive automated testing environment, then that helps a lot - but automated testing suit's for GUI based applications are hard, and they themselves need a lot of maintanence as an application and OS evolve. So expecting an application vendor, even one as well heeled as Adobe to test every possible combination of OS, hardware platform, application, and application feature is a tall order. The combinatorial explosion is hard to tame, and one mechanism for taming it is to try and divide things into independent layers - say that the OS provides a stable and dependable API, so that different OS versions are not a variable!