Analysis “Whether it’s building a game, or a line of business application, there’ll be one way to write a universal application that targets the entire product family,” said Microsoft Executive VP Terry Myerson, announcing Windows 10 yesterday.
One Windows: Windows 10 will be delivered on multiple device types
More ReadingUntangling .NET Core: Open source for Windows, Mac, LinuxHuawei: 'Nobody made any money in Windows Phone'Right, suits off: Windows 10 preview Internet Explorer is hereWindows 10 feedback: 'Microsoft, please do a deal with Google to use its browser'No tiles, no NAP – next Windows for data centre looks promising
Windows 10, Myerson said, will embrace devices of every type, from tiny embedded systems to PCs with 80-inch screens.
Developers will rightly be sceptical. Microsoft is notorious for introducing new APIs and frameworks (the building blocks of applications) and deprecating old ones, including numerous database APIs and game development with XNA.
Silverlight, an app platform that worked in web pages and on the desktop, was for a time frenetically developed by Microsoft and adopted for Windows Phone 7, but abandoned in favour of a platform introduced with Windows 8, called the Windows Runtime. That's also known as Metro or as the runtime for Windows Store apps.
Windows 10 everywhere does not mean that the operating system will have the same features and user interface on every kind of device.
“We’re not talking about one UI to rule them all,” said Myerson. The core of the OS may be the same, but there will be different APIs and features according to the device type. Microsoft’s idea though is that the Windows Runtime will be included on all them, to unify its platforms, and that developers will be able to write universal apps that run everywhere.
But what is a universal app? The term describes a project type in Visual Studio, Microsoft’s primary development tool and is documented here.
A universal app has multiple targets, each with its own code. There is also a shared code area. When you build the app, Visual Studio combines the shared code with the target-specific code, creating an executable for each target.
Creating a Universal App in Visual Studio
One app, many targets... what could go wrong?
The universal app concept is a good one, but unfortunately it still takes effort to support multiple targets. The idea is to move as much code as possible into the shared area, but with platforms as different as Windows Phone versus a full size Windows tablet, there will be both user interface code and device-specific code that cannot be shared.
Another issue is that universal apps only support Windows Runtime (Windows Store app) targets. Standard Windows desktop apps are not included. This means that Microsoft’s One Windows strategy only makes sense if Windows Store apps become popular. Currently that is not the case.
If you are developing an app for, say, Windows Phone, then a universal app makes sense if it can easily be adapted to run on PCs. Those developing line-of-business apps for Windows PCs face a different decision. Is it better to create a universal app that can easily also run on Windows Phone, a small platform, or to create a desktop app that can also run on Windows 7, a large platform? That sounds like an easy decision, but one which loses the benefit of One Windows.
Hang on, though, are there not other platforms out there? What if the Windows Phone app developer decides also to target the huge iOS and Android markets? Now a universal app will not do. Developers will turn to a cross-platform tool like Apache Cordova (also used by Adobe PhoneGap), which uses web technology to compile apps for multiple platforms, or perhaps Xamarin, based on a cross-platform implementation of Microsoft’s .NET Framework, which targets iOS, Android and Mac OS X.
The bottom line is that even if Microsoft delivers the Windows 10 kernel across all kinds of devices, and improves the commonality between the versions of the Windows Runtime included on those devices, universal apps remain a hard sell.
Other types of development offer a larger market for the same effort. The single Windows platform idea only makes sense if developers and their customers are sold on the specific advantages of Store apps, such as easy deployment and safe execution.
One Windows? One app platform? It is not that simple, and hinges on the difficult task of persuading developers and users to adopt Windows Store apps.
Finally, there is also the question of trust. Is Microsoft now serious about maintaining a consistent development platform for more than a few years? Developers who have been stung in the past will take some persuading. ®