In 1996 Microsoft licensed Java from Sun. Think about that for a moment before continuing on with this blog post. At what seemed the height of its PC market dominance, when it “owned” the developers, when Visual Basic and Visual C++ dominated the application development landscape, and it was embarking on its own effort to create what would become .NET, Microsoft licensed and brought to market its own Java Virtual Machine (MSJVM). If in those days of “monopoly” strength Microsoft was willing to bring a way to run non-Windows apps to Windows, and in the process risk furthering a development platform explicitly designed to take away the Windows’ app advantage, why is it such a shock that they would consider a similar strategy today? With a struggling library of modern mobile-centric apps, why is looking for a way to bring Android apps to Windows and Windows Phone any different from what Microsoft attempted to do with Java?
Of course Microsoft, having gained rights to offer its own JVM, then proceeded to enhance that JVM with access to its own APIs and services rather than newer ones that Sun was adding. Microsoft thought their contract allowed this, Sun thought otherwise and sued Microsoft in 1997. Five years later Sun had prevailed and Microsoft removed MSJVM from Windows XP SP1 by issuing a SP1a. The nice thing about Android, at least AOSP, is that Microsoft doesn’t need a specific contract with Google to offer an AOSP compatibility layer. They just need to abide by the Open Source licenses that cover various parts of it.
One of the big questions everyone has is, if Microsoft offers Android app compatibility why will anyone ever write a “native” Windows/Windows Phone app. I’ve thought about this and I believe there are multiple answers. Here are two:
The first answer is, maybe they won’t! Maybe instead Microsoft will start to treat the Android “compatibility layer” the way they’ve nativized HTML5/JS in the Windows app model and the way they attempted to nativize Java. They’ll add APIs to access both local Windows/Windows Phone capabilities and Microsoft cloud services to AOSP. Oh, under GPL they’ll have to make that source code available to others. And if others pick it up and make those APIs available in Google’s own Android code base, or on Samsung’s market dominant Android devices, how will that do anything other than help Microsoft?
The second answer is that maybe they won’t have to, customers will pressure developers to do it for them. Once Windows 8+/Windows Phone volumes reach a certain point developers will have interest in, and justification for, targeting Microsoft’s platform. Customers will demand apps that fully make use of the platform. Customers will demand a reasonable amount of user experience consistency. And while the ability to run Android apps will delay a developer’s need to create a “native” app, it won’t eliminate the pressure.
In fact, with three strong platforms to support the path of least resistance for a developer is going to be to move to a tool like Xamarin for future versions of their app. In that sense, no one has a fully native app, but they all share a common code base with tweaks to have native experiences on each device. That puts Microsoft in as good a position as any for running most apps. It is then up to Microsoft to make available unique capabilities that are interesting enough for developers to want to put in the extra effort to exploit.
My take on what Microsoft should do, which I have no information to support other than it’s the option with the most potential return for the least potential risk, is to use Android as a development tool for Windows/Windows Phone apps. If they do that then I can envision a number of paths in which they turn it to an advantage for their devices, their services, and the Windows OS. Yes it is a tricky game, but what is the alternative?
Microsoft faces a critical mass problem in mobile apps. If they don’t get to critical mass then they are irrelevant in this space and the rest of the discussion is moot. If they do get to critical mass and achieve very significant market share (e.g., 25%) but the apps are mostly pure Android apps then they have a potential problem, but it will be a good problem to have. And if they get to critical mass with a bunch of Android apps that have been tweaked to use their platform and cloud services? Then who cares that the apps started out as Android apps!
Microsoft can make a huge move here, completely change the app market dynamics for their platform, and eliminate this huge hurdle in their efforts to rival Google and Apple in the mobile space. They could execute a strategy with near perfection and turn the current market on its ear. Or they could make both strategic and execution mistakes and increase the odds that they never achieve true relevance in mobile. But it’s not the concept I propose, it’s the details that are the issue. And we don’t know what concept or details Microsoft has in mind.