Read a great article on Ars Technica the other day, which talked about Microsoft's plans to fix the app drought on Windows by becoming a universal platfrom. The article is well worth a look (along with the comments!), but the gist of it is that Redmond is going to attack the problem from two sides:
Windows for Phones will allow a subset of Android applications to run inside a sandboxed container. What they mean by a 'subset' is anyone's guess right now, but I imagine stuff that needs to run close to the metal will be a non-starter. Microsoft will also be intercepting calls to Google services and replacing them with their own. (Cheeky!)
Microsoft will be releasing tools to make it easier for developers to port iOS apps to Windows for Phones. Again, we'll have to wait and see what real-world results look like. I'm not a fan of ported apps myself, but if the code was engineered with proper separation of the UI from the engine underneath then Microsoft's tools should make the job easier without impacting too badly on the user experience. Time will tell.
When I first read about this, my initial thought was: How the hell has it come to this?
On the surface (no pun intended) this looks like an admission of defeat: No one is writing apps for our platform so we've no choice but to entice developers from Android and iOS. It's quite a fall for the mighty Microsoft, but it is what it is. I remember a similar feeling when Steve Jobs went on stage and announced that Redmond was Apple's new best friend. The difference back then was that the Apple faithful were up in arms over the deal; this time round, the mood of Microsoft fans is something closer to a grumbling acceptance.
What was, was. This is the reality we're dealing with now, and for tackling that head-on I think Satya Nadella deserves a round of applause.
Still, the new development strategy isn't without risks, and the elephant-in-the-breakout-area was succintly exposed in the Ars Technica article: Didn't IBM try this with OS/2?1
Running Windows software on OS/2 was supposed to provide an incentive to IBM's customers. (It runs Windows software, so where's the risk?). What it actually did was discourage native development. (It runs Windows software, why waste effort writing native software for it?)
I'm sure that Nadella is well aware of OS/2's history, and so I'm sure he is aware of the risks involved in running Android apps in much the same way. Still, needs must – and there is a possible hidden benefit: If successful, would this scheme slow development on iOS? If you could target two successful platforms with your Android app, then why not develop there first? It's a thought for a possible future; Windows on the Phone would need to come close to matching the iOS installed base for that to happen.
However, Microsoft's first prong – tools to port from iOS – is not your mother's OS/2 strategy. Windows Phone will not be running iOS apps in a subsystem because that would be a disaster for the platform as a whole. The idea is that if iOS developers can port their apps easily then why wouldn’t they? Well, supporting a platform is more than just writing code for it. You need to understand its underpinnings to get the best out of it; you need to understand how it interacts with its user and the other applications installed on the phone. You need to understand what could be causing it to crash when the unported code runs fine elsewhere.It'll need a high level of skill to make sure that your ported application doesn't look like a ported application.
In short, nothing's changed: You'll still need to a damn good understanding of every platform your app is running on.
So lots of little things, but it's a start.
I do wonder, however, if there was an alternative.
Instead of trying to bring developers to your platform, why not cast your API out to all developers? Microsoft has decades of cross-platform experience which they must be using internally. Why not build the frameworks to run on iOS and Android? For one thing it would be a reward for their own developer community who have waited (not always patiently) for Microsoft to get their mobile act together.