The Sorry State of WinRT Apps on Windows Phone 8

Windows Phone 8 has all sorts of great new capabilities, including the ability to run WinRT programs -- just like the Metro-style WinRT applications in Windows 8, right? Well, no. Not at all.

I just read this press release from Gartner and nearly spit out my coffee: "[Windows 8] provides a common interface and programming API set from phones to servers. It is also the beginning of the end of Win32 applications on the desktop. ... Microsoft will continue to support Win32, but it will encourage developers to write more manageable and engaging applications using WinRT."

The same Gartner "analysis" goes on to say, "By 2020, analysts believe enterprise end users will spend less than 10 percent of their time in Win32 applications. Most applications (including OS-neutral ones) and the browser will be run from Metro." At that point the coffee was on the floor, and breakfast wasn't far behind.

Maybe your crystal ball extends to 2020, but mine has a hard time looking to the end of this year. And I wouldn't dare tell a real, working programmer that WinRT "provides a common ... programming API set from phones to servers." That may be a long-term goal. Right now, it's nothing but a cruel joke.

The WinRT in Windows 8 is only vaguely similar to the "WinRT" in Windows Phone 8. I don't know how Microsoft dares to call the Windows Phone 8 API "WinRT." It's a bit like calling the operating system in a server "Windows 8" and the operating system in a telephone "Windows 8" as well -- and implying that the two are somehow scalable or even comparable. You'd have to enter a reality distortion field to believe a whopper like that.

Here's how things stand. Windows Phone 8, according to Windows Phone 8 honcho Joe Belfiore, supports C and C++, which have good access to DirectX and game developer middleware such as Havok Vision Engine, Autodesk Scaleform, Audiokinetic Wwise, and Firelight FMOD. There's also good support for C#/XAML, and HTML running inside a browser control. (Windows Phone 7 also had a browser control and also ran C#/XAML and HTML inside the control.) C++/DirectX is great if you're writing a game, or at least some games, but it isn't WinRT.

According to Mark Chamberlain at Microsoft, Windows Phone 8 will support the Windows 8 Metro user interface, via the WinRT API -- assuming you stay within the tiny Windows Phone 8 screen size restrictions -- C++/DirectX; and HTML5 running inside an IE10 browser control. That's a very small sliver of WinRT. Not even close to the whole thing.

Nobody seems to know at this point what's going to happen with XNA. Microsoft says it will use "cloud compilation" to convert Windows Phone 7 apps so they work with Windows Phone 8 (presumably bringing XNA along for the ride), but it isn't clear if Windows Phone 8 programmers will be able to use XNA directly.

Bottom line: if you have a game written in C++/DirectX or an app that works inside an IE control, it should be easy to port to Windows Phone 8. For everybody else going from Windows 8 to Windows Phone 8, you've got a whole lotta re-imagining and re-coding to do.

I've seen plenty of claims that it'll be easy to port an app from Windows RT to Windows Phone 8. Granted, games running with C++/DirectX or the supported game middleware should be easy to port, as should stuff inside a browser control. As for anything else, I'll believe it when I see it.

To be fair, Microsoft never promised us that Metro-style Windows 8 apps would run on Windows Phone 8, or vice-versa. Clearly, that's a long-term goal. Just don't fall for the "common core" argument -- that Windows 8 (either the RT flavor or the "whole" Windows 8) shares common code with Windows Phone 8, thus they provide a similar operating environment. They don't.

Looking for a career change? If you can tell the difference between WinRT in Windows 8 and "WinRT" in Windows Phone 8, you can probably make better predictions for 2020 than some industry pundits.