Monday, November 16, 2015

Divisive Android support for Windows Mobile dropped, nobody knows why

Project Astoria, the Android compatibility layer for Windows Mobile, has been delayed, perhaps even indefinitely.

Seven months ago, Microsoft announced a quartet of "bridges" to open up the Windows Store to more developers and more apps. Two of these—Centennial, for wrapping existing Win32 software in a Store-friendly package, and Westminster, for publishing apps using Web tech—were relatively uncontroversial, but the other two—Islandwood, for porting iOS applications, and Astoria, for running Android apps—raised the hackles of existing Windows developers.

Astoria in particular was seen almost as invalidating the effort and investment that many Windows devs had made into Microsoft's Universal Windows Platform (UWP), the set of APIs that allow apps to target Windows on PCs, tablets, and smartphones and which next year will also be usable on the Xbox One and HoloLens.

Islandwood was open sourced earlier in the year (and I have portions of source code that have been incorporated into the project). It was also seen as less contentious. Apps using Islandwood still had to be ported to UWP; the Islandwood libraries enabled developers to use more of their existing iOS code on Windows, but the tools still require a non-negligible effort on the part of app developers. Islandwood apps and Islandwood developers are still UWP apps and UWP developers.

But Astoria didn't require this level of involvement. Some insider previews of Windows 10 Mobile have included the Android subsystem—though the most recent builds have omitted it—and it enabled the use of unmodified Android packages. Zero effort was needed to make the apps into "Windows" apps; Android programs could simply run directly on Windows 10 Mobile. Full details aren't known since Microsoft has released next to nothing public about Astoria, but a limited facility to customize the apps to take advantage of Windows features exists, so the Android apps can be modified to take a little advantage of the fact that they're running on Windows. But this is all strictly optional; with Astoria, Android developers could simply dump their apps onto Windows with no investment in or knowledge of UWP.

This made Astoria somewhat unpopular among Windows developers. Why bother learning UWP and having Windows as a primary target when you could just learn Android development and have a much bigger smartphone audience? With Astoria, there was simply no point.

The removal of Astoria in recent builds had been noted, but initially there was uncertainty about why. On Friday, Windows Central reported that Astoria's very future was in doubt and that it was delayed indefinitely. In a statement, Microsoft confirmed that Astoria is at least delayed:

We're committed to offering developers many options to bring their apps to the Windows Platform, including bridges available now for Web and iOS, and soon Win32. The Astoria bridge is not ready yet, but other tools offer great options for developers. For example, the iOS bridge enables developers to write a native Windows Universal app which calls UWP APIs directly from Objective-C, and to mix and match UWP and iOS concepts such as XAML and UIKit. Developers can write apps that run on all Windows 10 devices and take advantage of native Windows features easily. We're grateful to the feedback from the development community and look forward to supporting them as they develop apps for Windows 10.

It's still not exactly clear why Astoria has been derailed, though there are a few possible reasons. Arguably the most compelling (and most obvious) is that the existence of Astoria is simply too corrosive to UWP and the existing Windows development community. While Astoria does provide a very quick fix for the Windows Mobile "app gap"—simply stick the Android apps into the Windows Store—it does so in such a way as to end any hopes that developers will build true UWP apps.

Of course, one might question whether it's Windows developers that Microsoft really needs to be courting. The purpose of both Astoria and Islandwood is to make Windows more appealing to non-Windows developers. Thus far, Windows developers haven't been creating the kind of must-have big-name apps that both iOS and Android enjoy. While the damage that Astoria does to UWP is plain, a case could be made that the upside, in the form of a much better app ecosystem for Windows Mobile, makes it a price worth paying. Anecdotally, I've already seen a few people tweeting that the removal of Astoria has helped them make up their mind and that their next phone won't be a Windows phone. As bad as Astoria may be for UWP, it clearly appealed to at least some putative Windows phone customers.

Windows Central reports that there were some performance issues that came from Astoria, and that technical aspect may have been an issue. While this might account for a short delay—bugs take time to fix, after all—it seems little reason to delay Astoria indefinitely as has been done. The core Astoria technology is known to work; the previews have demonstrated that much.

Both Islandwood and Astoria also have something in common: their questionable legal status. If Oracle eventually prevails over Google and the US courts assert that APIs are copyrightable, Microsoft's wholesale lifting of both iOS and Android APIs for Islandwood and Astoria would be in legal hot water; Apple would be able to demand that Microsoft kill off Islandwood, and both Oracle and Google would have legal basis to oppose Astoria.

Resources may also play a part. Windows Central reports that some 60-80 people were working on Astoria, compared to five on Islandwood. That may be true, but it cuts both ways; Islandwood currently feels quite under-resourced, with progress being quite slow.

Ultimately, this may prove to be a temporary delay after all. If Windows 10's momentum doesn't translate into broader development and uptake of UWP applications, Microsoft may have nothing to lose by supporting Android apps on Windows.

The Astoria tech is also compelling for more than just Android support. Windows used to have a POSIX subsystem (variously called Interix, Services for UNIX, and Subsystem for UNIX-based Applications) that allowed the UNIX apps to be compiled and run on Windows. In the past, this subsystem has had support that can best be described as mediocre, and it was dropped in Windows 8.1. Resurrecting this, however, would have some appeal: many open source applications, especially in the server space, aren't developed for Windows. Giving Windows more direct compatibility with Linux (or perhaps even FreeBSD) would on some level fill a different, server room "app gap." Astoria, which supports many Linux APIs on Windows, could form a part of this.

Listing image by Sean Gallagher


Source: Divisive Android support for Windows Mobile dropped, nobody knows why

No comments:

Post a Comment