A couple of weeks ago, Joe Belfiore confirmed that Microsoft is not “focusing” on Windows 10 Mobile anymore, essentially giving up the whole phone strategy of Microsoft. While Redmond is not officially retiring the platform, Belfiore told us that there will be no new features and no new devices, suggesting to switch to competing platforms. I almost instantly commented that it is a huge error made by Microsoft that had and has the resources to run a niche mobile platform while it waits for “the new generation of mobile devices”, as they call it.
The first casualty of that error could be the Universal Windows Platform (UWP) framework that promised to help developers to design applications for “any form factor” Windows 10 was running onto. However, with the retirement of Windows 10 Mobile and without any viable alternative for the smartphone-sized form factor, what would the word “any” mean ? While the UWP platform also includes Xboxes, IoT and holographic devices (Hololens and compatible devices), it is easy to understand that the big share of devices that could be interested in UWP apps were the desktop+mobile ones.
Xboxes, holographic and especially IoT devices for sure will feature a completely different class of apps and it will be not so common to have UWP software running the very same application on IoT devices AND desktop ones. Sure, Spotify could be useful on Xbox but since .NET is the common development framework for both Win32 and UWP there’s already a baseline of code that could be shared across the different versions of Windows-based applications and Win32 recently had access to the UWP-specific APIs too.
Xboxes, holographic and especially IoT devices for sure will feature a completely different class of apps and it will be not so common to have UWP software running the very same application on IoT devices AND desktop ones.
No-one was thinking that Win32 was going anywhere soon because Microsoft is sane and it will not cut the tie to hundreds of millions of applications just to turn itself into a new OS X but the fact that Win32 will come to ARM devices, in my opinion, makes even less important to dig into UWP ecosystem. The very fact that Microsoft not only ensured to move the Win32 ecosystem onto the boat of ARM devices but also ensured that such apps could be packaged for the store and also enabled its access to UWP APIs means that the adoption of that universal platform is not moving as fast as initially expected.
While there could be some technical reasons for that, the main point here is just that the mobile demise made less important to switch to a somewhat limited and entire new platform just to create apps that would run on desktops anyway. .NET standard 2.0 that has been recently released will help put UWP apps on par with .NET framework ones but it’s difficult to understand whom such apps are aimed to now that mobile is no more.
Don’t get me wrong: I think UWP is the best and most elegant framework available today on ANY device but a huge part of its beauty was related to the “any form factor” promise, one that – for example – Java was not able to fulfill. The key here was running on desktop and mobile devices and be able to also run on somewhat exotheric devices like Surface Hub, Xbox, Hololens and possibly even IoT. The very fact that Windows Cloud devices CAN run Win32, albeit only when installed from the store, is a proof the UWP ecosystem is not ready like Microsoft itself confirms by redesigning its Office apps around the METRO/fluent design concept but still as Win32 apps.
Windows 10 proved to be a good platform, incrementally moving Windows users into the inking, touch era and its user base, also thanks to the policy of allowing Windows 7/8 users to upgrade for free, is definitely huge. Those who thought that the future was moving to the mobile platforms like iOS and Android had to think twice and Microsoft proved that a well-designed set of new features could be integrated into Windows while mobile platforms are struggling to move into the productivity territory where Microsoft reigns, as confirmed by the need for Google to design a new operating system (Fuchsia/Magenta) to overcome those limitations that Microsoft had brilliantly solved with METRO and UWP.
However, just when Microsoft strategy (that, to be fair, had been planned by the Gates – Ballmer duo) seemed to get some substance and the platforms that dominated the mobile space started to struggle in both functionalities and sales, as confirmed by extreme attempt by Apple to enter the Microsoft territory with iPhone X, Microsoft gave up one of the two legs of its strategy. For sure Nadella is trying to turn Microsoft into a services-only company whose platform actually is Azure, not Windows, but in doing so he is burning many bridges that didn’t need to be burned.
Going back to the subject of this post, is UWP worth our efforts ? A few months ago I would have said yes in any case. Now things changed mostly because Microsoft killed Windows 10 Mobile without providing a solid strategy for its replacement. The fact that they didn’t announce any strategy other than a vague “we will make phones in the future ? yes” moves the horizon of such promises to the 2019 or 2020 or even further and even in my company we are wondering if it is wise to adopt now a platform that could become relevant again in a 3-4 years timeframe. Probably not, unless we are designing a very simple app or if we have solid reasons to believe that our app will run on Xboxes too. Given that any mobile development must happen on iOS and Android, maybe it would be wise to exploit the potential of the full Win32 framework while still being compatible with older versions of the platform. if needed. .NET Standard allows to encapsulate our core code into reusable components, if we really want that, and also share code with iOS / Android apps via Xamarin.
However, just when Microsoft strategy (that, to be fair, had been planned by the Gates – Ballmer duo) seemed to get some substance, Microsoft gave up one of the two legs of its strategy.
The only reason I can see to deal with UWP now is if you really need to use many new Windows 10 functionalities that could be tied to UWP and could be much more difficult to use in Win32 so if you’re basically designing an app that will mostly rely on new Windows 10 features and it will make much lesser use of traditional Windows features.
Meanwhile we are waiting for Microsoft to shed some light on its “new” mobile strategy to understand if they gave up or if they’re really planning something better.