Miguel de Icaza said that Xamarin won’t port Metro to other platforms, one of the reasons being Linux’ failure on the desktop. .NET developers interested in writing cross platform apps will be able to do so using Mono for the business code and rewriting the UI code for each platform.
To make sure there is no misunderstanding regarding Xamarin’s plans for Mono and Windows Runtime (WinRT) UI (Metro), Miguel de Icaza announced on his blog that they “are not working on a WinRT UI stack for Linux, and do not have plans to.” De Icaza mentioned the possibility to bring the Metro UI to Mono by using some of the Moonlight code, but he does not seem to consider it a worthy endeavor, expressing his doubts about Linux which might not be able to keep up with “the growth of other consumer environments”.
In a parallel post, Tim Anderson posted some remarks made by de Icaza during a private conversation at BUILD 2011, the Mono founder expressing his sadness on the current state of desktop Linux, with direct implications on Mono for Linux:
To be honest, with Linux on the desktop, the benefits of open source have really played against Linux on the desktop in that we keep breaking things. It is not only incompatibilities between Red Hat, Unbuntu, Suse, but even between the same distribution. Ubuntu from this week is incompatible with the one nine months ago. And then there are multiple editions, the KDE version, the Gnome edition, the one that is the new launching system.
When you count how many great desktop apps there are on Linux, you can probably name 10. You work really hard, you can probably name 20. We’ve managed to piss off developers every step of the way, breaking APIs all the time.
I’m heartbroken, that’s the bottom line. …
I think that Linux has a tough time on the desktop. And the desktop is starting to not matter any more.
So, it is clear that we won’t be seeing a cross-platform Metro UI. And that is consistent with Mono’s approach which did not attempt to port WPF to other platforms, since it required too much funding and effort. But what UIs are Mono applications going to use if they are going to be cross-platform? De Icaza suggests the following:
- Windows: WinRT, Winforms, WPF (fallbacks: Gtk#, Silverlight)
- MacOS: MonoMac (fallback: Gtk#, Silverlight)
- Linux: Gtk#
- Android: MonoDroid APIs
- iOS: MonoTouch
- Windows Phone 7: Silverlight
- XBox360: XNA-based UI
Having to use many separate UIs for all these different platforms in order to be able to write cross-platform applications makes one wonder if Mono is going to be an attractive choice any longer. De Icaza sees value in having a clear separation between the business code of the application and its UI, and the Mono business code will run on all those platforms, developers having to rewrite only the UI part. And that is actually better because having native UI code makes the application look better than one using a cross-platform UI.
But the rise of web development frameworks, such as jQuery/jQuery UI/jQuery Mobile, PhoneGap or Sencha, and the overall tendency towards HTML5 and web technologies, emphasized lately by the direction taken by Metro and Windows 8, makes one wonder how much room there will be left for Mono and how many developers will choose it for their cross-platform solutions. Mono is attractive for cross-platform developers with investments in .NET, but will that be enough?