30 April 2015

SAN FRANCISCO—Microsoft announced a four-pronged effort to bring developers and their apps to Windows at its build conference today. One of these prongs—a way for Web developers to present their sites as apps—was alreadyannounced at Mobile World Congressearlier in the year.

The second prong is logical but not altogether surprising. In Windows 10, developers will be able to specially prepare existing Windows apps, whether Win32, .NET WinForms, .NET WPF, or any other Windows development technology, and sell them through the Windows Store. Unlike the "traditional" Windows application installation experience, these apps will be guaranteed to install, update, and uninstall cleanly—one of the important things that Store apps do to ensure that users feel confident trying apps out and removing them if they don't like them. Behind the scenes, virtualization technology will be used to provide this isolation and robustness.

Islandwood and Astoria

The next two prongs are the more surprising: Microsoft is going after Android and iOS developers. With Project Islandwood, iOS developers will be able to take their iOS apps and build them for Windows. Microsoft has developed an Objective C toolchain and middleware layer that provide the operating system APIs that iOS apps expect. A select group of third parties have been using the Islandwood tools already, with King's Candy Crush Saga for Windows Phone being one of the first apps built this way. King's developers had to change only a "few percent" of the code in order to fully port it to Windows Phone.

For Android, there is Project Astoria. Rumors of Android apps on Windows have been floating around for some time, and in Windows 10 Microsoft is delivering on those rumors. Astoria will allow Android apps to run in Windows. Specifically, Windows Mobile (and yes, that's now officially the name for Windows on phones and sub-8 inch tablets) will include an Android runtime layer that'll let them run existing Android apps (both Java and C++) unmodified. Unlike Islandwood, which will require developers themselves to recompile their software to bring it to Windows, Astoria will in principle work with any old APK, without requiring the developer to do anything but publish the app in the store—as long as the APK sticks to the APIs that Astoria will provide.

As we've written before, there are two aspects to Android: there is the Android Open Source Project (AOSP) that's a mix of GPL and BSD-licensed open source code that anyone can take and fork, and there's Google Mobile Services (GMS), an ever expanding closed-source set of applications and APIs that Google develops. Applications that need GMS, for example for its geolocation capabilities or its in-app purchasing, will not run on a plain AOSP platform. They'll need GMS.

When we spoke to Microsoft about Astoria, the company would not tell us what proportion of the AOSP and GMS APIs would be supported, but it did confirm that it wouldn't be 100 percent; there will be APIs that Astoria does not provide, and accordingly, APKs that use those APIs will not run.

On the flip side, Astoria will offer some integration points with Windows so that Android devs can, with minor alterations, support features like Cortana in their apps.

The broader theme of Microsoft's work is to make Windows 10 the platform for developers. It will give them one app platform that spans phone, tablet, PC, hybrid, and console, and thanks to the free upgrade for Windows 7 and 8 users, it should be much less fragmented than Windows in the past. The company has the incredibly ambitious goal of having 1 billion users on the Windows 10 family within 2-3 years of launch.

The underlying strategy behind the four bridges is to allow developers to use the code they already have. Microsoft's intent isn't to make a BlackBerry 10-style capitulation, where the answer to the app gap is "just use Android apps instead." Rather, the hope is that developers will still make Windows apps; they'll just be Windows apps that happen to share a ton of code with iOS or Android apps.