Java licensing

by havoc

There has been a big debate about implementation languages in the
Gnome world. It’s been all over the map, but one point of concern has
been a set of formless dreads about the usability of the Java language
specification. We’ve been very clear about this, but it seems like few
have read the spec: if you look in the frontmatter, it contains an
explicit statement that anyone is free to implement the
specification. It goes much farther than most other specification
documents: it actually includes a patent rights grant.

Here
is the Java specification license. I am not a lawyer, but to me
this says that you only get the patent grant if you pass the
compatibility suite. The terms of the GPL used in the existing open
source codebase prohibit this compatibility requirement. If you have
this requirement on your Java implementation, and you link for example
gnome-panel to Java, then the result is not distributable under the
terms of the gnome-panel license. Because gnome-panel has hundreds of
copyright holders, we can’t change the gnome-panel license, even if we
wanted to.

It’s also worth noting that the only working open source
implementation of Java (i.e. Classpath) is partial, and thus would not
pass the compatibility suite. Without a usable open source
implementation, we have a showstopper for using Java in GNOME, because
we can’t use the proprietary implementations. This leaves us having
to wait for a complete implementation before we can start using Java
at all. Surely it would be better if we could use some core subset
immediately, as that would at least go down the Java path instead of
an entirely different direction such as .NET cloning. Classpath does
have full Java compatibility as an explicit goal, they just aren’t
finished yet.

I think a lot of people feel that the open source world is being
unreasonable in insisting on open source for all dependencies. Aside
from the practical issue that we can’t relicense due to the sheer
number of copyright holders, to me this is like saying a company is
unreasonable for insisting on making a profit. It’s simply the premise
of the GNOME organization that we’re building an open source
desktop. That’s the whole point of the undertaking; otherwise we’d use
Windows or Mac or BeOS. If you don’t stick to the premise of the
organization, you don’t have a reason to exist; in this case we’d
simply become what we’re trying to replace.

For GNOME specifically, the project was founded as an
alternative to KDE back when Qt was proprietary – a situationexactly analagous to a dependency on proprietary Java. So it
would be exceptionally strange if we added a proprietary dependency
after founding a project specifically to avoid having proprietary
dependencies!

Of course, you could say that compatibility is the same sort of
founding principle with respect to Java, and perhaps it’s equally out
of the question for Java to add extra risk of incompatibility. But
perhaps there are creative solutions, or ways to make that risk
inconsequential.

I’d be interested in the arguments for and against Sun enforcing
compatibility via trademarks, rather than licenses and patents. That’s
how Red Hat Enterprise Linux works and it works very well. Overall I
think it would be fascinating to be inside Sun and be able to fully
understand all the issues surrounding Java licensing.

In the meantime though, to me it looks increasingly like we need to go
down the road of Python, XPCOM/UNO, GObject introspection, and other
half measures; hopefully stay out of the .NET clone trap; and maybe in
time create an open alternative to .NET and Java both. It’s a shame
however, because Linux and Java are natural allies that could both be
more successful in combination.