2004-03-08 (Monday)

by havoc

Mike Loukides
missed the point of my last post. The virtues of Swing aren’t relevant.

Right now you can install Red Hat and Sun JDS and you get the same
major components by default: GTK+, GNOME, OpenOffice.org, Evolution,
Mozilla. Plus the same choices for some of the smaller apps. Ximian
was also in sync with this, though Novell has not yet taken a
position.

This has a couple of implications. One, ISVs and customers have a
single standard client side platform and application suite. Two,
these companies are using the power of the open source model to pool
resources and compete with Microsoft on the desktop.

Often, apps are part of the platform; in Evolution for example,
the address book and the PDA interfaces. The browser and office suite
are more obviously and extensively platforms, but the email app is as
well. Something like Looking Glass simply is platform, it
isn’t an app at all.

Every vendor has to add value, and that’s fine. However, doing so by
replacing the major platform components has negative consequences for
both the vendor and the overall effort to unseat Windows. It’s even
more problematic if the replacement requires proprietary components
owned by one vendor, because none of their competitors will be willing
to use those components, assuring fragmentation.

Up to now I’m talking pragmatics or “open source,” but there’s a “free
software” or principled angle as well. Most large projects such as
GNOME and Mozilla would never consider a dependency on a proprietary
library. Of course this is why no interesting part of the Java Desktop
System today uses Java, because there’s no GPL-compatible Java
implementation and thus no wide usage of Java in the open source
desktop community.

Net effect: to use Java in their Java Desktop System, Sun has to
rewrite code wholesale and maintain it themselves. The traditional
open source community simply won’t accept proprietary Java
dependencies.

I support using Java throughout the open source desktop; we need to
move to a high-level programming environment. I’d push hard to start
writing almost all new code in Java if we could and gradually refactor
the apps to a high-level language without feature regressions. But we
need an open source Java implementation to make this possible.

Sun is in a hard position. 1) Keep proprietary ownership of
Java or 2) make Java open source and thus a standard feature of
the Linux desktop. If they choose 1), then they have a second
choice: a) Don’t use Java in the core Linux desktop or
b) reimplement much of the core Linux desktop in Sun-specific
ways.

1)b) is especially harsh due to the GPL; you can’t refactor
Evolution to gradually migrate it to Java, because the GPL forbids
linking to Java. So they have to start Glow from scratch. Similarly if
they want to use Java in GNOME, they will have to replace each GNOME
component wholesale.

Don’t get me wrong, Sun has done a lot for the open source desktop and
GNOME in particular, and I love the developers involved. But as an
empirical matter, I don’t think their approach to Java and their
approach to the desktop are compatible, and when I saw
Glow I felt it was
the most dramatic demonstration of that so far.

(This post was originally found at http://log.ometer.com/2004-03.html#8.2)

My Twitter account is @havocp.
Interested in becoming a better software developer? Sign up for my email list and I'll let you know when I write something new.