The death of a desktop…

There has been a heated debate going on in the Gnome world over which development environment to integrate on a native level with the desktop layer of Gnome; Java or Mono. The dark secret that every Gnome developer subconsciously understands in their rigid little pre-OOP based minds is that C is killing Gnome’s ability to compete effectively in the F/OSS desktop world. All the core Gnome developers understand this, as do most anyone who has had to develop on Gnome. To make C a truly useful language for desktop application development it needs a couple things; like encapsulation, inheritance, and polymorphism. If these qualities sound familiar its because they are quite literally the defining characteristics of object oriented programming. A cursory look at GTK shows many a half-assed attempt to implement said qualities in Gnome libraries even though their primary language of choice doesn’t support them natively. Suffice to say that Open Office, Mozilla, KDE, and almost all sane desktop software application are developed in C++ (or similar OOP languages) these days. Fundamentally Gnome HAS to make a switch; and this switch will decide the future of the Gnome Desktop.

Now this is where things get interesting. Redhat has decided to back Java (or more specifically Classpath and gcj, an open source Java implementation.) Why? No one is really sure but it should be noted that Havoc Pennington (head of Redhat Gnome development and probably the second most famous talking head in the Gnome pantheon) has gone so far as to say that Redhat will not and CANNOT include Mono in its version of Linux. Rehat is the single largest Gnome contributor, the largest corporate Linux distribution, and employees more Gnome developers than any other single employer. Not including Mono (and not supporting it) would be a huge blow to the success of Gnome on the Linux desktop. So how far is Redhat willing to go to keep Mono out of Gnome? Evidently they would be willing to actually FORK (yes you heard me right) Gnome.

Now, easily the most public face of Gnome development is Miguel de Icaza. Miguel is most famous for a little project he works on called Mono. Yes, that would be the same Mono that Redhat will not ship. And easily some of the most interesting technology to come out of Gnome in the past couple years has come from Miguel’s platform of choice (things like Beagle.) Mono is the obvious favorite for the future direction of Gnome. So much so, that Java doesn’t even register on the radar of most Gnome developers.

So here is the rundown. 1) Gnome needs to move from C if it ever want to bring modern applications to its desktop environment. 2) Mono is the logical direction for Gnome to head. 3) Gnome’s most influential developer is ONLY willing to go towards Mono. 4) Gnome’s most significant corporate contributor is not willing to use/ship/support Mono. 5) That same contributor is pushing Java. 6) Very few in the Gnome world actually want to use Java (minus Sun and Redhat) on the Gnome desktop. 7) Redhat is actually willing to fork Gnome (the thought of switching to a superior desktop never even crossed their minds) rather than use Mono. And finally, 8) Many of the Gnome core developers would rather stay with C than bother with the whole mess.

Man, does this sound like a desktop with a bright future! Oh, ya. By the way. Because of the flexability, and power of the Qt environment. You can already make native Java applications in KDE. And they are a whole lot easier than making them in GTK#, AWT, or Swing.