WinRT and Cocoa – API evolution: MS vs. Apple
After digesting the above, I’m suddenly a bit apprehensive about whether Microsoft know what they’re doing or not. The fact that they keep changing their API surface suggests, in fact, that they don’t.
In here we read that “Microsoft says it ‘reimagined’ every aspect of Windows, this new runtime, or application model” which seems to be an accurate characterization of WinRT.
The distressing part comes in the fact that WinRT is intended to replace Win32. WinRT definitely sounds like it adopts similar goals of iOS – sandboxing, asynchronous APIs, etc… which I agree are appropriate and modern abstractions suited to a mobile OS.
However, the big question is just how appropriate are these goals for a desktop OS?? The sandboxing is going to boost security even further and the asynchronous APIs are arguably much better suited for mobile UI idioms. However, the unstated caveat is that these models make programming considerably more tedious in many ways compared to the “old way” of doing things.
My main beef here with the way Microsoft are approaching things is that they seem to be reactionary whereas Apple are going about things in a far more deliberate and methodical manner. Apple seem to recognize that desktop Cocoa needs to maintain its character separate from iOS Cocoa Touch while they slowly sort out the best way to eventually merge both (IF even possible). Microsoft, on the other hand, seem to be basically saying to its developers to completely abandon the traditional desktop programming model asap. This really seems to me to be jumping the gun.
Granted, the CLR, while introduced amidst a great deal of resistance and whining, eventually proved to be an amazing platform going forward (but remember this was only when Jim Hugunin discovered – accidentally, in essence! – that it was great for implementing dynamic languages on) and the same may eventually come to apply to WinRT’s paradigms, but the roughshod way Microsoft are introducing/positioning this new API is definitely going to incur backlash and resistance whereas Apple’s attempts at merging their desktop and mobile APIs seem to be going far more smoothly and naturally among its developer community.
Is this more a problem with how Microsoft are communicating with their developers or does this really point to a “platform evolution ethic” over at Microsoft that is not as well-honed as Apple’s?