Related topics

Will Microsoft devices sit happily on a single platform?

A development challenge

Microsoft campus

The world can be a confusing place. Often a one-size-fits-all solution looks to be just the thing but ultimately it turns out that it fits no one.

Microsoft is touting a single development environment for desktops, laptops, tablets, phablets, mobiles and the Xbox. Can this deliver?

The platform for PC, phone and tablet comes together under the jurisdiction of the Microsoft development group run by Joe Belfiore. Because device manufacturers work with Qualcomm and a Microsoft reference platform, there is reduced device fragmentation.

It is not as locked down as Apple – Microsoft lists a dozen Windows Phone manufacturers – but nor is it as “will it won’t it work?” as the myriad Android devices and operating system versions.

With the new generation of Windows all devices run on the same Windows core and share the same APIs, including Windows.ApplicationModel, Windows.Foundation, Windows.Storage and the like.

There are some differences: Windows does not support Xbox SmartGlass, challenges and achievements which I think is a huge shame. OneNote really should be able to pop up “Achievement unlocked 100G: key stakeholder brought on-board”.

Similarly Xbox doesn’t support lock screens or, more prosaically, printing. That will have to happen as Xbox becomes more of a home hub.

There is a difference of motivation too. The PC is largely used for creating information and the Xbox for consuming it; phones and tablets sit in between.

Blurred vision

This is reflected by the various input devices, with Xbox having a controller, Kinect and Voice, while tablets have pen and touch and PCs a keyboard and mouse.

But all this becomes a bit blurred with new user interfaces, not least Cortana. There is Kinect for Windows (and jolly good it is too) and it would be no surprise if there was a phone with Kinect waiting in the wings. The code for Kinect directly translates to mouse or touch input so building something cross-platform is easy.

A sensible way to do things cross-platform is to use HTML5 and JavaScript for the mark-up and logic and C++ for shared libraries and background services.

WinJS is available on all the platforms but is not required; you can use standard JavaScript. But for swift application development WinJS offers a mechanism by which code can be made to take advantage of the special features of each of the devices and is developed cross-platform.

You can get a lot of re-use by picking the right architecture pattern

Developing cross-platform is the ultimate objective. Code can’t just be written for one and then be expected to automatically convert, but you can get a lot of re-use by picking the right architecture pattern, abstracting any platform-specific stuff and using fragments and modular components.

That of course saves time as well as effort and leads to what you ultimately want to achieve: a consistent user interface across all three.

All the work can be done within Visual Studio, using the same files and file structures regardless of platform. It all becomes one project with flavours rather than separate developments efforts.

The upshot is that a much larger base of developers can be recruited to implement a corporate app. The learning curve is reduced for people used to producing software in Visual Studio for a PC. They can rapidly start developing for Windows Phone and Xbox.

Keep it in the family

In a company where there is a lot of internal development it is much more elegant than the traditional solution of contracting out the mobile part, with all the ensuing problems of specifying and managing the project. It is also better than hiring in mobile developers for a project.

And if the trend of business going towards mobile and cloud holds true and there is more need for tablet and phone development than desktop, mobile can be phased in over time. Existing developers transfer their skills and move with the requirements.

From a project management, staffing and implementation perspective the ability to use the same people to develop across all three platforms makes life much easier.

But that doesn’t answer the question posed at the beginning: will it end up as a one-size-fits-none? The answer to that is, it depends.

Designers and developers need to plan for the different implementations; it is an incremental effort but that is far easier than multiplying the effort.

Building code that can run, and run right, on everything from a 100+ inch projection screen to a 4.5-inch phone screen is an interesting challenge.

There are rumours that Microsoft, along with the whole world and its dog, is planning a smartwatch. Translating down from 4.5 inches to 1 inch might be a yet another interesting challenge. ®

Sponsored: 5 critical considerations for enterprise cloud backup