Simon Bisson
Contributing Writer

Unpacking Microsoft’s universal apps strategy

analysis
Feb 18, 20154 mins

Write an app for one Microsoft platform and it will (more or less) run on all other Microsoft platforms, including Windows Phone -- thanks in large part to Windows 10

Windows 10

Application developers face more platform choices than ever these days. Even within the Microsoft world, the question persists: Should you target desktop or mobile?

That’s where Microsoft’s universal apps programming model comes in. The Windows 10 Technical Preview puts universal apps front and center, with the goal of running common code to all Microsoft platforms and stores: Windows phones, tablets, and PCs, as well as the Xbox One in the living room and the 80-inch Surface Hub on the office wall.

Universal apps are key to Microsoft’s reinvention of its Windows 8/WinRT programming model. Designed to move Windows application development away from the aging and overly complex Win32 APIs, WinRT introduced new, less complex APIs that owed more to Web programming models, along with a sandboxed runtime and a mix of XAML and HTML UI options.

As WinRT evolved with Windows 8 and as Windows Phone moved to the NT kernel, Microsoft began to add features to simplify the development of cross-platform applications. Portable Class Libraries allowed apps to share core business logic across platforms. Code needed to be built into libraries and was limited to the APIs it could call. Even so, it made it easier to share code between desktop and phone, as well as to Android, iOS, and Mac OS (thanks to support in Xamarin’s tools).

Windows 8.1 Update 1 brought the next stage in Microsoft’s cross-platform story: the first appearance of its universal apps model. Instead of being wrapped up as shareable libraries, universal apps could be built as Visual Studio projects – and delivered to both the Windows and Windows Phone stores. There was one drawback: While apps could share assets, they needed separate user experiences, and you had to build separate binaries for each Microsoft platform.

The Windows 8.1 model, according to Partner Director of Program Management Developer Platform Kevin Gallo, was “write once, tune everywhere,” similar to the Xamarin approach. Building apps using Xamarin’s tools meant creating core code that could be shared between platforms, then creating native user interfaces for each OS (and for phones and tablets). Similarly, universal apps could share some XAML code, but the real benefit for developers was a common API surface area for both phone and desktop.

As Gallo noted back in October 2014, “It’s up to the developer, for tuned experiences, for notifications, and for pricing. We’re giving flexibility, and the end user shouldn’t be able to tell the difference.” That meant that apps could be linked in the stores, so buying a copy in the Windows store let you download the phone version for free or for a discounted price. It’s certainly a popular approach for developers, with apps like the popular Windows Twitter client Tweetium adopting universal development to add Windows Phone versions.

The universal app strategy got a boost with the announcement of Windows 10. While it didn’t go into code-level details at either its September 2014 or January 2015 events, it was clear that universal apps would be the preferred application development model in the next Windows, and as analysis of the API in the Windows 10 Technical Previews showed, the underlying WinRT APIs were quickly catching up with Win32 – in some cases, offering more tools for working with new hardware and Windows features. More important, Windows 10 takes WinRT apps away from full screen and lets them run on the desktop, alongside familiar Win32 code.

Back in 2014, Gallo noted that Microsoft’s goals for universal apps in Windows 10 included “better automatic and adaptive layouts.” With new universal versions of Windows’ Mail, Contacts, and Calendar apps demonstrated at the company’s January Windows 10 event, it’s clear that Microsoft has gone a long way to delivering those goals, with common Windows and Windows Phone controls. That’s key to the next stage of the Windows Store evolution: a single store for all platforms and a single binary that can be delivered to all devices.

Microsoft has big ambitions for universal apps, intending to deliver a platform that scales from Internet of things devices like the Raspberry Pi to 80-inch wall screens. While it’s unlikely that any one app will scale across all platforms, it’s an approach that gives Microsoft a common programming model that will mean that developers won’t need to learn new tools and languages when switching from building apps for one class of device to another. If you’re building Windows applications, then it’s a good idea to start experimenting with universal apps and the latest WinRT APIs – so you’re ready for Windows 10 when it arrives later this year.

Simon Bisson

Author of InfoWorld's Enterprise Microsoft blog, Simon Bisson prefers to think of “career” as a verb rather than a noun, having worked in academic and telecoms research, as well as having been the CTO of a startup, running the technical side of UK Online (the first national ISP with content as well as connections), before moving into consultancy and technology strategy. He’s built plenty of large-scale web applications, designed architectures for multi-terabyte online image stores, implemented B2B information hubs, and come up with next generation mobile network architectures and knowledge management solutions. In between doing all that, he’s been a freelance journalist since the early days of the web and writes about everything from enterprise architecture down to gadgets. He is the author of Azure AI Services at Scale for Cloud, Mobile, and Edge: Building Intelligent Apps with Azure Cognitive Services and Machine Learning.

More from this author