Windows Phone 8: Exceptional tools, but where are the devs?
Microsoft's vast scary world of versions and APIs
Analysis The Windows Phone 8 SDK emerged at the Microsoft’s BUILD conference in Seattle last month. After so much hope, hype and promise, what’s new for developers?
A lot, as you would expect given that this version of Windows Phone is built on the same core as Windows 8, whereas the 7.x line is built on Windows CE. At the same time, Microsoft has yet to do the obvious thing: unify the Windows 8 “don’t-call-it-Metro” runtime with what is provided for Windows Phone 8, though it is closer than it was before.
The reason seems to be compatibility. There are about 120,000 Windows Phone 7.x apps in Windows Phone Store, according to Microsoft. It would be a disaster if Windows Phone 8 was incapable of running those existing apps. Microsoft also had to keep the Silverlight-based XAML - Microsoft’s XML-based language for defining a user interface – rather than replacing it with the native code XAML used by Windows 8, although the Silverlight name is no longer spoken.
Windows Phone 8 also still supports XNA, a means of developing games with .NET code, although this is no longer the recommended path for games development, and Visual Studio will not let you create an XNA project targeting Windows Phone 8. Developers like XNA, so why not? The reasons may be to do with Microsoft’s internal politics rather than technology. The Windows team is focussed on native code and DirectX more than .NET.
There is a fudge though. The new SDK fully supports creating an XNA project targeting Windows Phone 7.1, which will run fine on Windows Phone 8. There are even ways, through .NET Reflection, to get to Phone 8 specific APIs in such a project.
If Windows Phone is tied to Silverlight-style XAML, and Windows 8 to native XAML, how will convergence ever come to the two platforms? Microsoft will not say, but here is a clue. It would be good, I observed to Microsoft’s Larry Lieberman, who was running the Windows Phone track at BUILD, if you could run Windows Phone apps on Windows RT and devices like Surface RT. “We could not do everything at once. You are not the first person to make that suggestion,” Lieberman said.
It seems plausible, therefore, that at some future date the Phone 8 XAML stack might come to Windows 8 to run Phone apps. Perhaps the reverse may come as well, so that Windows Phone can support both stacks.
Native code project options include Windows Runtime extensions
Despite these issues, there is already some degree of convergence. The Phone 8 platform includes the Windows Phone Runtime that is accessed using .NET metadata as in the Windows Runtime. You can also create new Windows Phone Runtime components using Visual C++. This is significant, since this lets you extend .NET code with native code. COM interop and Platform Invoke, which you may use in desktop Windows, do not work on Windows Phone.
In Windows Phone 7.x, of course, you could not use native code at all unless you were Microsoft, or an operator or manufacturer. Now there is a range of native code application types, including Direct3D, Direct3D with XAML, and static or dynamically linked libraries.
Windows Phone 7 included a version of the Compact Framework for its .NET runtime. In Windows Phone 8, this is replaced by a new version of the CoreCLR, which was first developed for Silverlight on the desktop. This version includes the asynchronous programming model introduced in C# 5.0. Microsoft also claims that startup times are up to twice as fast for .NET apps.
XNA seems popular? Scrap it!
XAML is struggling to catch on? Embrace it!
.NET has a huge installed base? Go with C++ and HTML 5!
I can't wait for the internal wars at Microsoft to complete, so we know who the victor was.
It will never cease to amaze me
The infinite capabilities of MS to reinvent the wheel each time they release a new product.
MS simply doesn't get it...
The main problem, as I see it of course, is that times have changed. Dramatically. Back in the "old days" we had to cough up quite a few bucks before we could actually do some Windows based programming. And before everyone now starts to go "Yeah, MS sucked": this wasn't an sole MS endeavour. If I wanted to program stuff for Solaris (back in the good ole Sun days) I also had to cough up quite a few bucks to get my hands on a native compiler.
And then Linux and GNU happened. It has caused major changes in the way people approached the "old stuff". Buy a Solaris compiler? Why bother; some cool dudes have ported GCC over to Solaris, I'll just use that. Buy myself a Windows server to get some cool Windows based network going at home (yes guys; some people actually like Windows / Windows based computing)? Sounds cool enough; if only prices didn't start ticking at $ 700,- and up. I'll just get myself a Linux box and put Samba on it!
The way I see it Microsoft really has no clue - what so ever - how to deal with this. Sure; they came to their senses where servers are concerned and introduced low priced "home servers". That was a smart move. They also (as can be seen in the article) started providing free developers environments. It doesn't support everything, but you can do some serious stuff with it (I use the C#.NET Express version to program PowerShell extensions and that works quite well).
But the thing is; I don't think they did that because of market strategy. I think they did all that purely for "damage control". You know: If a $700,- sells only 2 times you could put a cheaper version on the market. Because if a $300,- solution manages to sell 5 times you're already close to achieving more than you did before.
WP8 (and WP7) development? Sure; the development tools are free. But the rest is not; its actually quite expensive. And yes: I know they have an introduction offer right now: "$8,- for 8". Thing is: you don't simply pay $8,- and be done with it. You pay them $99,- and can then hope to actually get your $91,- refund. Also very nice for people outside the US who will get even less discount due to currency changes.
Lets see.... WP7.5 / WP8: small marketshare, free development tools but you have to pay before you can do some serious development (even when using your own phone), and you're restricted to using Windows 8 (as of WP8).
Android... Free development tools, you can easily unlock your phone yourself so that you can get hands on experience without paying a dime extra, its the market leader right now AND you can basically do your development in any environment you'd like; from Windows to Linux.
Gee; I wonder why Windows Phone doesn't manage to attract the real geeks....