We've called them Metro apps, then when a lawsuit meant that Microsoft couldn't use the name, we called them Modern or Windows Store apps. But now they've finally got a new official name, and it looks like it's one that's going to stick. Let's give a...
We've called them Metro apps, then when a lawsuit meant that Microsoft couldn't use the name, we called them Modern or Windows Store apps. But now they've finally got a new official name, and it looks like it's one that's going to stick. Let's give a big welcome, then, to the Universal app. They're going to be big. That's because, as Terry Myerson and Joe Belfiore made very clear at the Windows 10 unveiling, with the expansion of WinRT APIs and support for windowed WinRT apps on the desktop, Universal apps are the future of Windows development.
First revealed in April at Build 2014, the initial iteration of the Universal app allows developers to share code between Windows 8.1 and Windows Phone 8.1. The Universal app model builds on the common core that Microsoft has developed for its main operating systems, and is more flexible than its original code-sharing technology, Portable Class Libraries. It's proved popular with developers working across phones and tablets, but with the release of Windows 10 Universal apps are set to be the preferred way of windows apps development - from Internet of Things to phones to tablets to desktops to games consoles to wall displays.
The heart of the Universal app model is simple: write your core code once and then give it an appropriate user interface. It's been clear for years that the "write once, run everywhere" model just doesn't work. We may want to use the same app functionality on a PC as we would on a phone or on a tablet, but we want to use that app very differently on each device. That means a different user experience, and very different interaction models.
Where the Universal model gets interesting is in its cross-platform support. You're not limited to working with Microsoft operating systems thanks to Xamarin's support for Universal projects in its tools, particularly its Visual Studio plug-ins. Thanks to Xamarin you can use your Universal libraries and code in iOS, MacOS, and Android apps - letting you tune user experiences for a much wider range of end users.
Another aspect of Microsoft's Universal app story is its store, which gives developers one place to upload and sell apps. While there's some confusion around the difference between Universal and Linked apps, it really shouldn't make any difference to end users (if at all). Where Universal apps share code, and can be sold on either or both Windows and Windows Phone, Linked apps are treated as one for billing purposes, but don't have to have common code (though they can share back end services to pass information between devices).
So a game like Halo: Spartan Assault is a linked app, with different versions on Xbox, on Windows 8.1, and on Windows Phone, all sharing scores and achievements through Xbox Live. Linked apps are able to bundle pricing; so if you have the Windows Phone version of a linked app, there's the option of a special price for the Windows 8.1 version, or even of a single bundle that lets you download both versions for one price. It's all up to the developer; the end user won't know the difference between Universal and Linked apps.
I recently sat down with Microsoft's Kevin Gallo, Partner Director of Program Management, to talk about the first six months of Universal apps - and about where Microsoft is taking the technology, in light of its Windows 10 announcements.
There aren't many Universal apps in the various Windows Stores yet. That shouldn't be a surprise, as Gallo pointed out "People's code takes time to evolve." The technology is still relatively new, and many developers have yet to upgrade to the latest versions of Visual Studio - or have to support older operating system releases.
So how will Universal apps evolve in Windows 10? Galllo unsurprisingly remains close-lipped about details, noting that the approach Microsoft is taking is evolutionary, "Our goal will be to do better automatic and adaptive layout, making it a natural on-ramp." That's going to require more work on the tool side of the story, with support for what Gallo calls "Universal Projects", as well as tools that will allow user experiences to be tuned for different device form factors.
Getting UX right for different form factors is an interesting problem: a phone is used differently from a phablet, which isn't the same as an 8-inch tablet in portrait mode. Then there's the differences between different tablet screens, aspect ratios, and whether they're hybrid two-in-one devices. Developers building apps that cross all these scenarios are going to need all the help Microsoft can give them (and that's before they start working with Kinect voice-driven Xbox apps).
Gallo points out that much of making apps work across multiple form factors is about getting inputs right. Are you developing for touch, for mouse and keyboard, or for speech, or even pen? Windows 8.1 includes the option to support dual inputs, using the current interaction mode to define how apps respond to user input. That means user actions and app controls need to be closely linked, so you get the best support for multi-modal devices. There's no way to predict just how a user will interact with a universal app - or what type of computer they might be using. Apps will need to handle all possible input modes, so support will need to be built into the controls Microsoft (and its partners) ships.