GNOME and high-level languages
Posted May 12, 2005 5:53 UTC (Thu) by dhess
Parent article: A new Harmony Project
I think there's a problem brewing in the GNOME project, one which the Harmony announcement has brought out in the open again. Novell and RedHat are both drawing a line in the sand, and I think that either a GNOME fork or RedHat's endorsement of a different desktop environment is increasingly likely. Either outcome will be detrimental to the GNU/Linux desktop effort, in the short term, at least; and will give companies like Microsoft plenty of, "Same old UNIX story, they're fragmenting again" fodder.
Many GNOME hackers are waking up to the fact that C isn't a very productive language for developing most kinds of interactive desktop applications. (I didn't say it was a bad language, it's just not very productive for most applications of that class.) Unfortunately, C# appears to have caught the fancy of a large number of talented GNOME hackers. Many of the exciting up-and-coming GNOME desktop applications (Beagle, F-Spot, Muine, etc.) are written in C#. Offhand, I can't think of any GNOME desktop applications being written in Java. I wouldn't be surprised if there are a few, I just haven't heard of them, and I don't recall seeing any mentioned on Planet GNOME. If nothing else, the C# crowd is winning the PR battle.
Both companies have valid technical and/or legal reasons for their stances. Novell doesn't want to develop software based on the JVM because the JVM is effectively controlled by Sun, and apparently they don't think the free JVMs are mature enough to ship software on them. RedHat doesn't want to develop software based on Mono because they say they can't ship it (but can't say why).
On the other hand, both companies have business reasons for their stances, too. Novell has captured a large developer mindshare with C# and knows they have the du jour "hot" language in the GNOME community. RedHat has to be feeling the pressure and is making large investments in Java tools and free JVM/class lib implementations, and is promoting that language as their champion versus C#.
I think RedHat is fighting a losing battle. RedHat appears to be unable to generate any excitement in the GNOME community about Java, at least not outside the company (maybe even inside the company). This is in stark contrast to what's happening with Novell and C#. I don't know how such decisions are made by the GNOME project, but given the momentum behind C# in the GNOME developer circles, I find it hard to believe that Mono-based software won't soon be shipping with GNOME.
Here's what Havoc Pennington had to say about this possibility:
I don't know what people expect Red Hat GNOME developers to do. We can't roll over and say "OK, we'll start hacking in C#, even though we don't see a path to shipping any of the stuff we're hacking on" - does anyone seriously expect that?
If people don't believe us, then the right action is for GNOME to just require Mono and let Red Hat sort it out. Let's not blame a faceless company here for the sorting out. At the moment Red Hat's desktop strategy is largely set by me and other community members you know. I can tell you what I would advocate faced with Mono as a GNOME requirement: initially try to reimplement or live without the Mono bits, maybe using language-translation hacks to port stuff to Java; while finding a non-GNOME or forked-GNOME path to get out of this losing approach in the long term. It's ugly but true. We would probably stall as long as possible, hoping to find a way to ship Mono or that GNOME would change its mind, but that's all we could do. I can't think of a way we could justify hacking on software we can't ship.
If anyone has a better suggestion then let me know what it is.
I don't think these comments do much other than make RedHat look bad. It sounds like sour grapes at best and a threat at worst. Sorry, Havoc, but that's how it comes off.
But instead of just complaining, I do have a better suggestion, and it's called Python.
Why not push Python as the "officially endorsed high-level language" of the GNOME project instead of Java? There are plenty of very talented Python programmers out there. In the free software community, Python has at least as much developer mindshare momentum as C#. Code that doesn't run fast enough in Python can be written in C or C++ and wrapped with Python bindings very easily, or can be written in Pyrex. There are perfectly good GTK bindings for it. It's fantastic for rapid development. It's a community-developed language with no "ownership" issues. Every GNU/Linux distro has packages for it. Novell can make sound technical and legal arguments against requiring Java as part of GNOME, but not Python.
Even one of RedHat's own, Seth Nickel, seems to think it's a good idea.
So Havoc (Pennington, not the other guy with the l33t nick), if you're reading... OK, so you can't explain the reasons why RedHat can't ship Mono. Can you explain why you don't give Python the same endorsement for GNOME development as you do for Java?
to post comments)