Xamarin’s Miguel de Icaza (founder of the Mono project) has complained on Twitter about Microsoft’s Windows Division’s “contempt for developers” when it created the Windows Runtime and a “4th incompatible Xaml stack”, in a conversation prompted by the company’s spat with Google over the YouTube app for Windows Phone. Google wants this removed because it does not show YouTube ads, to which Microsoft counters that the API for showing these ads is not available.
I am more interested in his general reflections on the wisdom (or lack of it) shown by Microsoft in creating a new platform for touch-friendly apps in Windows 8, that lacks compatibility with previous Windows frameworks. “No developer wants to build apps twice for Windows: one for desktop, one for winstore” he also remarked.
The four XAML stacks are Windows Presentation Foundation, Silverlight (for which de Icaza created a version for Linux called Moonlight), Windows Phone (which runs a slightly different version of Silverlight), and now the Windows Runtime.
Could Microsoft have done this differently, without compromising the goal of creating a new tablet personality for Windows rather than continue with doomed attempts to make the desktop touch-friendly?
The obvious answer is that it could have used more of Silverlight, which had already been adapted to a touch environment for Windows Phone. On the other hand, the Windows division was keen to support native code and HTML/JavaScript as equally capable options for Windows Runtime development. In practice, I have heard developers remark that HTML/JavaScript is better than C#/XAML for the new platform.
It is worth noting that the Windows Runtime stack is by no means entirely incompatible with what has gone before. It still uses the Windows API, although parts are not available for security reasons, and for non-visual code much of the .NET Framework works as before.
“In practice, I have heard developers remark that HTML/JavaScript is better than C#/XAML for the new platform.”
I’ve actually heard quite the opposite. Of course I guess it depends what circles you run in.
“It is worth noting that the Windows Runtime stack is by no means entirely incompatible with what has gone before. It still uses the Windows API, although parts are not available for security reasons, and for non-visual code much of the .NET Framework works as before.”
In reality most of the XAML is the same as in Windows Phone too, although not 100%, so skills do transfer pretty well. The biggest difference is in how namespaces are declared and what namespaces visual elements belong to, so every single XAML file needs to be tweaked which means 2 versions of each, but the tweaks themselves are fairly easy.
You’ll generally be creating a different UI for Windows 8 versus Windows Phone anyway, so you’ll most likely have 2 separate XAML files already.
You miscounted, there are actually five XAML-based UI toolkits. The missing one is Silverlight Embedded, which combines XAML, native C++, and a somewhat terrifying code generator.