Thursday, May 28, 2015

What's the point of (where is the value in) Project Astoria and Project Islandwood?

Projects "Astoria" and "Islandwood" are "Universal Windows Platform Bridges" that allow you to reuse the code used to build Android and iOS apps to make apps for Windows 10.
They each work a bit differently but are typically talked about together as their very existence shows that the "new Microsoft" and Windows 10 are very different from the Microsoft and Windows of the past.

There are a couple of key differences.
Astoria allows you to take an existing APK and submit it to the Windows Store and comes with the ability to replace the use of Google specific services with their Microsoft/Windows equivalents. It also only works on "Windows 10 Mobile" - what used to be known as "Windows Phone" but now also includes small tablets (phablets).
Islandwood allows the creation of Universal Windows app, that runs on more than just the mobile SKU of Windows 10, but using Objective-C. It also includes shims and mappings for the use of the more common iOS functionality and services.

Who would use them and why would they care?
Consider someone who already has a mobile app or game. They want to reach as many potential customers as possible and so their app/game is almost certainly available on Android or iOS. It's possible that they have created both versions with a cross platform tool* but it's more common that they will have created the iOS version in objective-C and the Android version in Java.
When they now come to consider supporting Windows 10 there are considerations to make:
1. Will there be enough potential users to make the effort worth while?
2. How much effort will be involved in creating the new version?
3. Do they really want to write the app/game for a third time?

Let's look at each in turn.

1. At the moment Windows/Windows Phone has a very small market share but Windows 10 has the opportunity to help increase the number of devices running a single version of Windows dramatically. Microsoft have even said they're aiming to get Windows 10 on a billion devices in two to three years. A billion potential users could be very appealing but until it shows some traction both the market share percentage and absolute numbers remain low.

2. Ideally any business would like the amount of effort required to build an app to be as low as possible. It takes a special kind of person to want things to be harder, take longer and cost more than is necessary.

3. You should need a very good reason to have to do the same thing three times in three different ways. It doesn't just duplicate the initial effort and costs but the ongoing ones too.

So, considering the above, if there was a way to take the assets, resources and investment in existing code bases and use that to create an app that runs on Windows 10 then it should be very appealing. Enter projects Astoria and Islandwood.

But which should a company use?
As ever with technology, it depends. Obviously if someone only has an Android/Java code base then they should look at project Astoria. Or if only on iOS/Obj-C they should go with Islandwood.
But what if both? I'd suggest the following. If only interested in running on phones then look to use Astoria. Otherwise look to Islandwood.


The use of either (or both?) of these projects should be seen as a stepping stone if it gets a business to a position where they still have more than one code base for their app/game.
Surely, as far as possible, it's in the interest of the company behind an app/game to only need one version of their code. I therefore expect the popularity of cross platform solutions* to grow in the next few years. There are various options for this but, personally, I'd look at either PhoneGap or Xamarin based solutions depending on the specific project.


I assume that Microsoft hope that those people who use the above tools will be exposed to how powerful the tools and languages Microsoft have created are and then consider switching to them in future. Either in addition to building natively for Android & iOS or exclusively by use of a solution such as Xamarin.


Yes, they both allow you to reuse resources across platforms but are they cross platform solutions?

*Related question: How do you define a "Cross platform" tool/solution?
Does it have to produce the output for different platforms?
Does it need to support a specific number of platforms? (Presumably more than two.)
Does it count if it is based on conversion from one native format?

I don't know if there is a clear definition. Do you have one?


Post a Comment

I get a lot of comment spam :( - moderation may take a while.