"It's no longer possible to write a single app that takes advantage of the full range of Mac OS X features. Some APIs only work inside the Mac App Store. Others only work outside it. Presumably, this gap will widen as more new features are App Store-exclusive, while sandboxing places greater restrictions on what App Store apps are allowed to do." Anybody surprised by this, here's the clue stick. Please proceed to hit yourself with it.

Microsoft's difficulty is that their APIs are 20 years old and they can't clean up their act.

I like the idea to keep the APIs used to only the newer ones. That means that apps are written better and the OS is legacy free.

Microsoft is cleaning up their act with the new WinRT APIs in Win8. Metro apps will only have limited access to legacy APIs, only the safe ones. No matter how Metro apps are written - native, .NET, Silverlight, HTML/JS - they will all use the same WinRT code, perhaps with idiomatic wrapper APIs but the same code.

I haven't heard one way or the other whether Win8 desktop apps can use WinRT yet, as the non-UI APIs should apply to desktop apps too. That would be nice to see, and a desktop-usable subset of WinRT might be portable to Win7 as well.