Unix was originally all about not being… Multics. If Mono is to follow a similar nomenclature (just for the kicks), we have to talk about Mono’s upcoming ‘monopolization’ and ‘monarchy’ in the next generation of the Unix programming land. Your see, if everything goes well, in 2 to 3 years most new Gnome user/desktop applications will be written –hopefully– in Mono and C#. Update: Miguel deIcaza replies.For the last 2 months I run Mono and GTK# on my Slackware 9.1 installation, trying to learn GTK#, and I have to say that I am very impressed by it so far. Installation was very easy for both packages (standard “./configure; make; make install” stuff) and there is some online documentation and samples to get you started. There are also about 10-15 GTK# applications available by third parties coming with full source code so you can have a pick on them before starting your own application.
C# is very easy to learn and GTK# gives a much better face to GTK+ (plain C GTK+ development seems to me pretty sad comparatively) as it makes it much easier & faster to develop and results to more secure applications. There are still of course some problems: documentation is incomplete, no robust GUI development tools for it yet (e.g. a good RAD tool integrated in a C# IDE wtih an also integrated debugger), source compatibility is not always guaranteed from version to version, the Windows.Forms API won’t be fully realized for at least one more year, Qt# is pretty much a dead project and the Mac OS X port just started (no Cocoa# yet) while the FreeBSD port is not 100% fool proof. However, we should not forget that Mono’s v1.0 is scheduled for Q2 of 2004, so there is still time to fix a few of the above problems.
Mono has still to fight off a few Linux die-hards who don’t want to see a Microsoft technology used on their alternative OSes but thankfully the situation becomes better everyday as .NET and C# put a stronger foot in the industry and start to get perceived as a “standard”. Another “enemy” Mono will have to fight out (soon enough) is Sun. In my conversations with Sun executives the last few months they kept re-assuring me that no C# will ever enter their JDS or Solaris default installations. However, as Gtk# becomes more mature every day and more applications are getting written in C# (and not just C#), in 2-3 years we will be facing a point where many of these apps might make it to the default Gnome distribution either because most developers would prefer to use Mono by then or because a must-have application at that point in time might be written in C# and no C alternative exists. And at this point I forsee a large opposition from Sun (the #3 commercial strength in the Gnome Project). While Gnome is Free Software, the No1 commercial strength and driving force behind Gnome today is Red Hat (they host the project’s site and they have a number of engineers in key positions) and so all eyes will be set to them for such a decision (as Ximian and Novell (#2) will be pushing for C# in Gnome).
Someone could argue that Sun would be pushing for Java on Gnome too, however Sun has already done (yet another) strategic mistake and didn’t create Java bindings for Gnome neither tried to integrate more to the Gnome desktop (despite their “Java Desktop System” distro, there is no major Java integration to the toolkit or the gnome libraries). Even their java theme wrapper for GTK+ themes is half-baked and almost no developer uses it. Yes, there is a third party java-bindings project on SourceForge, but this has no luck in getting integrated further other than the gnome-bindings upcoming release, as there is no major driving force behind it to help it get enough mindshare and support among the Gnome developers.
What prompted me to write this editorial was the news of three new GTK# applications this week, Blam! (an RSS/RDF reader), WoodPusher (a networked Chess game) and Muine (a music player). Last week I followed Mikael Hallendal’s blog where he literally described his journey into learning mono, gtk# and writing an application — all in one week. And he did it! He delivered “Blam!” in less than a week since he installed Mono, while other similar C-based applications took multiple weeks before their developers had their first beta release out. I believe that stories like these deserve to be more known, because no matter if some hate Microsoft’s technologies, it doesn’t take away the fact that they have spent millions on research and development. Something good should have come out of all this and C# seems to be one of them. Some Gnome developers are now starting to take notice and hopefully more will follow.
This article is not a “MS is cool” article, neither a “Sun Java is not cool”. However it is exactly this:
1. Microsoft created a worthy technology and Ximian’s Mono can bring it to Unix. There is nothing immoral or weird about it, it is just a good environment for developers and a more secure one for users.
2. Sun lost the opportunity of kicking Ximian’s C# out of the picture the moment that they [never] took the decision to do something equivelant (in integration terms) with their Java on Gnome. It was a lost opportunity that Sun didn’t even realize that existed.
If you are a C/C++ or even a Java Linux developer I suggest you download Mono and GTK# today and give it a go. Having an idea of what a new platform can do will only act on your behalf in many ways (and it will save the rest of us from zillion mindless forum comments from people who never developed for Mono or .NET but they feel like talking anyway).
I only have a feature request from the Mono guys: now that Robert Love works for Ximian it would be great if he could supply some patches to the default Linux 2.6 tree (or to ld) to make Linux automatically recognize and load mono’s executables instead of having the user run shell scripts or manually load the VM every time there is a Mono application to load. Update: Apparently there is a way.