Wednesday, August 6, 2008

WPF, Mono and WINE

The number one reason for people to be hesitant in switching to Linux for their desktop environment is application compatibility. More specifically compatibility with their favorite windows application.

I'm a dot net developer, and for me that killer windows application is Visual Studio 2008. No IDE (integrated development environment) even comes close to providing the features, usability and coding efficiency provided by Visual Studio. And yes I have tried eclipse.

Their are two open source projects of note which are trying to address this problem. The first is WINE (Wine Is Not an Emulator), which aims to provide a free implementation of Windows API on Unix. A honorable goal to be sure. So how does it go on my killer windows App Visual Studio 2008?
Well it doesn't, it can't even run its predecessor Visual Studio 2005.

What about Mono I here you say. Well I was coming to that. Mono is the second of the two open source projects I was planning to mention. Mono aims to provide a open source implementation of .net. Allowing .net applications to run on Linux and Mac. Ausome!!! Ausome that means that any application developed for .net should just run in linix. However when you look closer your rose tinted glasses start to crack. .net has become the development platform of choice for application programmers. It offers huge productivity, maintainability and reliability advantages over native code. Novell the company which sponsors the mono project has just announced the release of mono 2.0 which has full support for .net 2.0 plus c# 3.0 features like linq and linq to xml.

Unfortunate .net has moved on a long way since it released those features and now has a new and much improved GUI framework called WPF (Windows Presentation Foundation). This is quickly becoming the GUI framework of choice for new windows applications.

And this is the real tie breaker. The Mono project has no plans to implement WPF. And with that little bit of information mono's ability to solve our problem of running .net apps on linux dies.

Of course just because Novell does not have the resources to implement WPF does not mean the community can not step in and add this functionality, I mean thats what the whole idea of open source is. Unfortunately this is where the whole things fulls apart. Linux users, ie the ones who most want Linux to become the desktop environment of choice and the ones with the programing skills to make WPF on mono happen hate microsoft. For them hating microsoft has become like a religion. And that hating of microsoft includes microsoft technologies. Even if that technology is being implemented as an open source project by an independent organization. Microsoft haters have gone as far as trying to make sure mono is not included in popular linux distributions. Some going so far as to call in inclusion of mono dependent applications infestations. In doing so shotting themselves and their desire to see linux become the technology of choice in the foot.

What about MonoDevelop you say, a IDE for creating .net apps on linux. Unfortunity again Mono Develop is years behind Visual Studio. As I type this I have Mono Develop running on my machine. It does not let me target anything more recient then .net 2.0 (so no LINQ) and it doesn't even come with a visual debugger. (its still a work in progress you have check it out and compile it from SVN)

So what is required for linux to become the desktop of choice?
Windows applications have to 'just work' on linux.

This means WINE and MONO must become feature complete. MONO releases must follow .net releases within at least 6 months. And nothing especially something as important as WPF can be left out.

So Linux lovers rool up your sleaves and make it happen.

3 comments:

Timwi said...

Hi! I largely agree with your entire blog post, I too have tried Eclipse (though not MonoDevelop) and they're years behind Visual Studio 2008.

However, I'm amazed with your enthusiasm about WPF. I tried it seriously, I wrote a whole game in it. I find it difficult, limited, and buggy. In my mind, it is not a significant leap forward from Windows Forms. It could have been designed better.

Visual Studio 2008 is not very reliable with WPF. It often crashes (suddenly disappears) while using the WPF designer. Not that the open-source community could do any better (they probably can't), but it makes me want to stay with Windows Forms for the time being.

Steve Knight said...

I have been around computing long enough to see a lot of Microsoft's grand development visions fade and die. The truth is that the broader the vision is the harder it is for mere mortals like us to understand it.

Arguably, Microsoft's greatest ever success before now was the creation of VB. Because you don't have to know very much to get started with it. WPF doesn't feel like that sort of technology. And that is a huge barrier to mainstream adoption.

But the truth is that Windows probably has 70% OS share, Linux has about 1%. I believe that Linux deserves to be the most popular because it's free and open. The truth of the matter is it's not the most popular and is unlikely to be for a long time yet.

It's not important though, since we're small in number the important thing is to focus our attention on the things that are here to stay. So, let's have this conversation again in 3 years time ... :)

Unknown said...

Last post said to discuss three years later, well here we are. Three years later, and I wonder what the author thinks now about Wine and Mono and WPF.
Seems to me that WPF is now not a very widely used toolkit, GTK seems to provide the same desired functionality, Wine has improved but still can't run Visual Studio--- But does that really matter? It seems that Xamarian has improved Monodevelop quite a bit, but they have fallen way behind at keeping up with Gtk bindings. Instead they are focusing on a new toolkit XWT that again, seems very slow in progress...