Now that Sun has begun freeing the Java language, how much work was there involved for you to get a complete and free Java implementation into Fedora?
Quite a bit. The initial OpenJDK release was missing code in some key areas: the font rasterizer, the graphics rasterizer, colour management, crypto providers, the plugin, Web Start and sound. What's more, OpenJDK could only be built using proprietary software.
We were able to quickly replace the crypto providers with GNU Crypto code from GNU Classpath. Likewise, GNU Classpath provided the colour management classes. For the first upstream IcedTea release we stubbed the remaining encumbrances.
We really wanted the first release to be bootstrapable with entirely free software. Since OpenJDK requires a JDK to build, this meant building with ecj-on-libgcj. To accomplish this, we wrapped autotools support around our encumbrance replacements and OpenJDK to create a hybrid build environment. This was tricky work, since we wanted to ensure that it was a full two-stage bootstrap: ecj-on-libgcj would build IcedTea, and then the resultant IcedTea would build itself.
The result, little over a month after the initial OpenJDK release, was the first IcedTea release: an entirely-free-software, self-bootstrapping, working (headless) environment, built using only free software tools.
Subsequent IcedTea releases have focused on eliminating the "headless" caveat :-)
We replaced the font rasterizer with a Freetype-backed one (which we released two days before Sun released their replacement font rasterizer -- we use Sun's now) and slotted in GNU Classpath's graphics rasterizer. And we adapted gcjwebplugin to run on IcedTea.
Are you hoping to see other distributions begin to pick up this work in later releases?
Sure. We've been Fedora 7-centric in choosing our build requirements, especially in requiring GCJ 1.5 support. Since Fedora always ships very current development tools, this can be a problem for other distributions. But we've been receiving some patches here and there, mostly adding autotools escape hatches to ease distro-portability, so there seems to be some interest from other distributions.
Could you talk a little bit about the integration between IcedTea and the GCJ applet in Fedora 8?
gcjwebplugin is a Mozilla plugin that communicates with an out-of-process appletviewer to handle Java applets. Very few changes were required in gcjwebplugin itself, so the integration effort focused on adapting OpenJDK's appletviewer to communicate with gcjwebplugin.
What can end-users expect to experience?
The big problem with deploying gcjwebplugin in the past has been GNU Classpath's lack of a security framework. The OpenJDK class library, on the other hand, has a complete robust security framework capable of safely running untrusted applets. Just by virtue of gcjwebplugin using IcedTea's appletviewer, instead of GNU Classpath's, it now supports safely running untrusted applets, and so we've enabled it by default for Fedora 8. The result is that most applets will run perfectly out-of-the-box, on a default Fedora 8 install on x86 *or x86_64*.
Are you happy with the state of IcedTea in Fedora 8, or is there more work you would like to do post Fedora 8?
There's definitely more work to be done, in several areas.
To round out support for applets, we'll need to complete LiveConnect and signature checking support in gcjwebplugin. We'll need to look at replacements for the sound classes, since some applets use those. We're also looking at Web Start replacements, with a view toward excellent desktop integration for IcedTea.
In terms of general system integration we're now in a position to fix long-standing packaging problems directly in the OpenJDK sources. We've already started that process; IcedTea uses the system timezone data by default, instead of its own bundled tzdata. Likewise it uses the system OpenSSL certificates directly, instead of including its own cacerts file. Future projects include making IcedTea a good SELinux citizen, eliminating the need for policy-based workarounds.
One pressing issue is architecture portability: IcedTea is currently x86 and x86_64-only. We're working on a ppc/ppc64 port that will eventually fill this void for Fedora, and should provide a good example for other port authors.
How do you see a liberated Java developing over the next few years?
It's hard to say how it will develop. I do hope to see OpenJDK become deeply integrated into GNU/Linux distributions, so that you can count on it being already-installed.
What other Java related work is going in Fedora?
The Fedora Eclipse team has been working hard in preparation for the Fedora 8 release. Fedora Eclipse has been updated to the Eclipse Europa release. In addition to the base Eclipse SDK, which provides Java and Eclipse development tools, it includes the Eclipse CDT for C and C++ development and Mylyn for task-based collaboration (e.g., Bugzilla integration). And of course, Fedora Eclipse now runs on IcedTea :-)
And finally, if you could tell us a bit about yourself?
I graduated in 2003 from the University of Toronto's Engineering Science program. I've been living in Toronto and working at Red Hat since then.
What got you interested in free software originally?
I was introduced to GNU Emacs at a summer computer program in 1996 and I've been hooked ever since!
What do you like to do with your spare time!?
I'm a song 'n dance man. Most recently I performed in the Scarborough Choral Society's production of "Carousel".