Today Joseph mentioned to me that some of our users got the impression from my previous post on WinRT that we would be implementing WinRT for Linux. We are not working on a WinRT UI stack for Linux, and do not have plans to.
WinRT is a fabulous opportunity for Mono, because Microsoft is sending a strong message: if you want your code to run in multiple scenarios (server, desktops, sandboxed environments), you want to split your UI code from your backend code.
This is great because it encourages developers to think in terms of having multiple facades for the same code base and the direction that we have been taking Mono on in the last few years.
Use the native toolkit on each platform to produce an immersive user experience, and one that leverages the native platform in the best possible way.
These are the APIs that we envision .NET developers using on each platform:
- 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
Even if a lot of code could be reused from Moonlight, WinRT is a moving target. It is not clear that the Linux desktop, as we know it today, is keeping up with the growth of other consumer environments. I talked to Tim about this at Build.
There are some GUI-less components of WinRT that *do* make sense to bring to Mono platforms. There is already an implementation of some bits of the headless WinRT components being done by Eric.
The above effort will enable more code sharing to take place between regular .NET 4 apps, WP7 apps, Mono apps and WinRT apps.