December 16, 2019
And then there really were two, Microsoft have now officially shut down the Windows Mobile store after halting all development on the platform.
This follows a fundamental shift for Microsoft from owning the ecosystem to providing products and services for other ecosystems. Microsoft's reach is still massive, but a number of bungles along the way saw them miss out on mobile.
There are however some interesting developments that have occurred. Even though Microsoft is out of the mobile phone race, they are still firmly in the mobile computing race through the Surface brand. Surface providing touch-and-pen-centric PCs for everyone resulting in tablets being a three horse race between Samsung, Apple, and Microsoft.
However this presents a problem with Windows 10, it is all business having seemingly abandoned both the old in Win32, and the new in UWP. As a developer, both landscapes feel like they are in maintenance mode, and it is only in roadmaps and Github commits that we see a strategy forming. These two APIs posed a problem for Microsoft, Win32 is the bulk of the business world, and mobile first APIs were only made available in UWP, effectively denying billion dollar investments from accessing new features made to the UWP in Windows 10. And with UWP having incomplete API coverage, it provided a mediocre and at times inconsistent experience.
Parts of the Windows strategy have been implemented, however the full picture remains missing. Win32 apps like Spotify and iTunes are in the Windows store for a while now, however both of these are examples where Win32 and UWP fail to provide a connected modern experience.
This disconnectedness between Win32 and UWP is most apparent with LTE connected computers such as Surface Pro, Surface Go, and Surface Pro X. With the rise of LTE connected Windows 10 (not mobile) devices, this disconnect between Win32 and mobile becomes problematic against the rise of Android and iPadOS tablets. Going back to Spotify, with bluetooth headphones putting a Windows 10 computer into connected standby will cease music playback, where this was not the case with the UWP app Groove music.
On the other end of the spectrum is Instagram for Windows which is a poor excuse of an app, which is some kind of frankenstein of custom UI components with poor accessibility. Yes you can see the posts, but in a particularly public example of terrible development, you need a touchscreen laptop to interact with many of the core features. No matter how much you click with a mouse, the features are inaccessible without a touch gesture.
Electron is where new investment is.
Electron is a web wrapper similar to cordova for iOS/Android, developed by Github (now owned by Microsoft) that makes it easy to share code for the web with the desktop, and allowing that code to make use of desktop APIs such as filesystem access. As electron in a Win32 app, it does not directly provide access to modern UWP features (without XAML islands anyway). This is apparent with the above example of Spotify which migrated from web browser to the Windows desktop thanks to Electron. Even Microsoft seems to think that Electron makes sense for investment with VScode and Microsoft Teams being Electron apps. This signals how much easier it is to develop for web than to wrestle with Microsoft's disjointed vision for Windows development.
React native to the rescue?
Most new apps target two platforms, Web and mobile. Windows is not even a consideration, even for new line of business apps unless performance is critical. Microsoft are publicly renewing effort to build a supported first class react native experience for Windows. There are challenges however as the API is largely mobile-centric and fails to provide analogues for many desktop-centric features. There is good news in all this, as React Native makes it easy to hook in with platform specific code.
The only bet that's for sure right now is that Windows will be around for a long time yet, but what that will look like remains uncertain as legacy users (sys admins) pull it in all sorts of directions that fail to deliver on user expectations.