It's been a big year for Microsoft, with the company reorganizing itself around a One Microsoft vision, first articulated by Steve Ballmer, and now being delivered with a focus on "mobile and the cloud" by its new CEO, Satya Nadella.
With its annual developer conference Build now under way in San Francisco, it's a good time for the company to show just what that vision means for its developer community, and for the massive ecosystem that's been built around its platforms: Windows, Windows Phone, and Xbox.
We spoke to Kevin Gallo, Microsoft's director of developer ecosystem, in advance of Build to understand just what that developer message was going to be. Gallo comes from a developer background, working on IE, on XAML and on Windows Phone, before running Windows Phone's developer platform.
"We've combined organisations for one developer and browser platform," he told us, describing how Microsoft is merging its Windows and Windows Phone development models. "We're bringing assets together to build apps and websites."
Merging development models is an important change for Microsoft, one that's critically important to the company's focus and Nadella's articulation of the company vision.
Gallo points out: "We have the resources to pull together great solutions, and developers need to use them to reach their users." That means bringing together mobile users and cloud services, and delivering something unique to those users.
Build 2014 is where Microsoft starts to bring that vision together, with a new universal app development model, "You'll be able to write apps that scale from phone to tablet to laptop to workstations to 80-inch screens, delivering across all of these." It's not quite that simple: "The UI won't be the same, but the programming model is the same." As Gallo notes: "You need to tune for a great experience."
That new programming model is linked to new releases of Windows and Windows Phone, with new features in Windows Phone 8.1 that will help developers take advantage of existing investments.
Gallo describes it as: "New technologies with an easier bridge that makes it easier to bring users along, letting apps that are great with touch be great with mouse and keyboard, while still leveraging things for iOS, Android and the web.
"Part of that is Microsoft's changed attitude to open source, which is letting it take and open up what would have been closed user experience HTML 5 libraries. It's all part of Microsoft's changing relationship with developers, one that Gallo says is, making it easier for developers to work across technologies, so they can work well in a cross-platform ecosystem."
That means changing the way Microsoft delivers tooling, turning it into a much more iterative process that's driven by developer needs and feedback.
The new unified application model builds on Windows 8.1 and Windows Phone 8's Portable Class Libraries. As the new Windows and Windows Phone releases go a long way to unifying the two platforms APIs, there's now no need for a lowest common denominator set of libraries.
Instead, developers can focus on delivering an appropriate UI for each form factor, tuning user experiences using XAML. Instead of PCLs, developers using the universal app model will be using shared projects with multiple UIs.
It's a model that's not only for Windows and for Windows Phone: Xbox will also be a target for universal apps at some point in the future. "We are melding touch and mouse and keyboard together in a way that hasn't been done before, working across multiple device types," Gallo says. It's a model that's also similar to that used by Xamarin, which uses common application code and separate UI code for C# apps running on iOS, MacOS and Android.
Test tools in a Visual Studio will allow apps to be profiled per device type, an approach that makes sense as apps will be slightly different, with different UI and design patterns, for different form factors. You'll be able to choose the build target, and the different emulator types for phones; and then run several diagnostic tools in parallel. Using these tools you'll be able to see XAML and CPU at the same time. Gallo suggests that developers start by profiling the lowest specification target, "It'll help you find bottlenecks."
Universal apps for Windows and Windows Phone mean changes in the Windows Store, with a shared app identity across platforms. It's a welcome change, Gallo notes, "There's one set of push notifications; and a developer can choose to share entitlements across devices." That means it'll be possible for a user to get the phone version of an app automatically when they install the PC version. "The end user sees one store, with indications for what their entitlements are," Gallo says.
But the process needs to be developer-friendly, and Microsoft is making it easy for a developer to choose, allowing them to find the right monetisation models, while letting apps update automatically across devices.
Users will see a store that's customised for their device's form factor, and developers can choose which form factors they deliver apps to; making sure that users don't try to run apps designed for 80-inch screens on a four-inch phone.
A universal app framework makes a lot of sense in the ubiquitous computing world Nadella described recently. It simplifies targeting multiple form factors, and lets developers build on the skills they've already honed on PCs, tablets and phones. So it's not surprising that Microsoft is committed to building its own apps using this new universal framework, including large apps like Office. It won't be the only one either, as Gallo told us, "Most of our apps will end up being universal windows apps."