MaW’s Blog

Thursday, 20th May 2004

The whole GNOME and Mono and Java thing

Filed under: Programming — MaW @ 23:00

Well it’s unlikely anybody involved in the whole thing will ever read this, but I have to write it now because it’s getting on my nerves.

Currently in the GNOME world there is a debate going on, and I don’t think it’s ever going to be resolved to the satisfaction of the participants. The main cause of this debate is the Mono project. As many people who read this blog will know, Mono is an open-source effort to implement a clone of Microsoft’s .NET platform, complete with common language runtime, class libraries and C#, Visual Basic and JScript compilers (at the very least). There’s an ASP.NET container, GTK+ bindings and all that stuff too. Now this is all very fine and dandy and I actually quite like C#. It’s like Java done right.

Now, Mono was developed by Ximian who are now part of Novell, so Novell (which also owns SuSE) is now pushing Mono. Evolution, GNOME’s mail/PIM client, is also developed primarily by Ximian. People there want to start extending it in Mono/C#.

Red Hat have decided that Mono is not suitable for shipping in their products. They believe the patent issues are too problematic. Seth Nickell, being a Red Hat person, agrees with them in a most articulate fashion, as does Havoc Pennington. Who is also a Red Hat person.

I, personally, find the patents issue rather alarming. While it wouldn’t actually be all that beneficial to Microsoft to do it (well, it might be in their muddy world view, but it’s not in mine), they could potentially decide that the RAND grant on their patents on the standardised parts of .NET doesn’t cover open source implementations under the GPL. Bam. Instant court case. And actually one they have a chance of winning. This we do not want.

Imagine that happening if GNOME’s core was by that point partially written using Mono.

Okay, now you’ve recovered from that, let’s look at the alternative most people are punting: Java.

The truth is that Java is at least as bad a choice as Mono. For one thing, it’s a disgusting language, although I admit I’m not necessarily representing the entire world’s opinion on that. Some people actually like it.

For another thing, the licence for Java implementations has some really rather nasty clauses in it, making projects like gcj and GNU Classpath, which are currently the only way we’re going to get Free Software Java, a little bit potentially dodgy. Sun have control over Java and they want to keep it. Microsoft, as is entirely probable, want to keep control over .NET. Fair enough to both of them.

So what can we do? The whole debate assumes of course that GNOME needs a high-level programming language to be used in the core. This is probably true - at least for the applications. I don’t really think it’s appropriate at the moment to write the core libraries in anything other than C, for the sake of the language bindings if nothing else, but…

The main attraction to .NET is not just the C# language, but the CLR. This allows applications to be written in many different languages, which can all, through the CLR, access each others’ objects. C# may create a subclass of a class defined originally in Managed C++, and that class might contain an instance of another class which was defined in JScript, or Python (yes there is a Python implementation on .NET now, and it’s very quick too).

So that’s great. Makes multilingual development pretty good. You can even use Java with it these days (why would you want to though? Still, the choice is there).

But there’s the patents thing, and there’s the fact that the patents are held by Microsoft. Do we trust Microsoft? Of course not.

So. What do we do?

I think everyone should go have a look at Parrot. People may dismiss it, because it’s not ready yet and because it’s being designed as the Perl 6 runtime engine. Which it is, but it’s also a multilanguage runtime which can give us multilingual object access and other such things much like .NET’s CLR does. And guess what - Free Software.

Plus Perl 6 rocks, of course. If GNOME is going to move to anything higher level, I’d really like to see Parrot considered as a runtime, with Perl 6, Perl 5 (Ponie), Python (implementation for Parrot under development) and anything else that runs on Parrot as initial implementation languages. I know they probably won’t run as fast as C# on .NET, being dynamically typed languages and all, but something tells me Parrot has the potential to make a significant impact on GNOME’s advancement.

The question is, do we want this impact to come from the Free Software community, or from Redmond?

4 comments

  1. Honestly, I hope you are joking. I just took a look at Parrot, and it sucks. It feels like Assembly having sex with Basic. It is terrible.

    Really, I don’t see any programmers migrating to anything like that. Python is a better alternative, but this strong-typeness it has pisses me off each time I have to hack some apps to get them run on newer versions.

    I admit that I haven’t looked at Perl 6, but if it is anything remotely similar to the current Perl and it doesn’t have a compiler version, I don’t see it catching up either.

    So, that brings us back to Java and C# (with Python, Objective-C and C++ as underdogs). Personally, I would go for C# (much better than Java). Just don’t implement the non-ECMA stuff so you can be safe from MS’ laywers (or implement new stuff, even if incompatible to MS’ .NET).

    Comment by DJ Bobo — Monday, 24th May 2004 @ 6:51

  2. BTW, regarding Parrot, they have that example on their site where the C code is about 6 lines of code and the Parrot one is about 35. They even have the guts to present that example. Yuk.

    Comment by DJ Bobo — Monday, 24th May 2004 @ 6:53

  3. Coding in Parrot would be like coding in the .NET IL. Parrot is a language for compilers to target, not for humans to write directly (unless they’re bootstrapping compilers that run on Parrot, of course).

    Comment by MaW — Monday, 24th May 2004 @ 8:14

  4. I think it’s a very good article, i’ve been thinking the same things last few time. The comments above mine are of mercenaries who don’t care about opensource, nor they know. Of course we can’t trust java neither .net. M$ is just following their primary idea of decomoditizing protocols as the halloween documents said, when they develop .net they said something like: “java has kept sun in the game, we must build our own language for domination”. I think parrot is the way or some other kind of 100% opensource platform. Just consider current allianzes between sun and M$ and the demand against ibm from M$ trying to damage linux and opensource.

    Comment by Hans Poo — Monday, 20th September 2004 @ 16:04

RSS feed for comments on this post.

Sorry, the comment form is closed at this time.

Powered by WordPress