Archive for April, 2004

Free Java Meetings

I just got back from the Red Hat world-wide meeting. That was
pretty cool, I met a lot of cool people, including many Java hackers,
talked to a lot of people I already knew, lost a lot of sleep, etc.
I also found out that I’m not the only Red Hatter in Colorado, which
is cool since it means I can get together with other folks to
complain from time to time 🙂

It turns out that some folks at Red Hat who did the recent “world
tour” event shot a lot of footage and are editing it into a movie. So
Red Hat is now officially making something approximating the movie
that the Red Hat Foundation rejected years ago… sigh.

GCC Summit

The GCC Summit is
fast approaching. I found out today that mjw will be there. A
lot of gcj folks will be there too, and hopefully gadek will be able to
make it. I really should finish that paper…


It turns out that there will be a session on “Open
Source Java”
at the upcoming O’Reilly open source conference.
Really there ought to be someone from the Free Java community on this
panel; as soon as I find some way to give feedback I’ll bring that up
with the conference folks.


At least one person from the gcj community ought to go to GUADEC and give a presentation on
gcj. If only we had figured this out before the paper submission
deadline. Perhaps we can get some sort of special dispensation.

More on Eclipse

I checked in a bunch of Eclipse-discovered Classpath cleanups
today. Fun.

I’ve also done a fair amount of Eclipse debugging. For various
reasons I don’t run FC 2 on my main machine, just on my old machine.
But it is old and doesn’t have enough memory; in fact, not enough
memory to run gdb on the gcj-compiled Eclipse. Sigh. So I’ve been
doing all my debugging remotely from Toronto, which is pretty


This weekend I’m going to North Carolina for a big Red Hat
meeting. That should be pretty interesting, I’m looking forward to
seeing some, um, comrades. Every time I go to one of these things I
think about reviving the free software movie… maybe next time.


I look at the D
Programming Language
a little, but stopped when I found out it
doesn’t support dynamic class loading. For me that is a very
interesting feature, basically required. I also think that the
ability to run untrusted code is cool, but in practice folks don’t
really seem to use it all that much. Also, nested
are gross, though D’s approach does remove some of the
implementation difficulties (scheme folks, go ahead and yell at me).

Still, overall D seems reasonable enough. With some minor-ish
changes it might be an acceptable Java/C# replacement for the free

I didn’t see any info about licensing on the web site, except for
a weird statement about intellectual property and patents. That’s a
bad sign.

Classpath and Eclipse

Surprisingly to me, there was some resistance from a couple
Classpath folks to checking in the two files needed to let Classpath
be checked out as an Eclipse project. Weird.

Eclipse’s compiler found a lot of minor problems with Classpath —
about 700 warnings, most of which are trivia like unused
import statements. Mixed in were a few outright bugs,

Eclipse and Classpath

Tonight I set up Classpath as an Eclipse project. This was
pretty easy, really, just fiddling with exclusion filters and other
build trivia until it worked.

I had to make a couple little hacks to get this to work. In
particular I had to make my own by
hand. There are a few plausible approaches to making this work in a
nicer way, maybe I’ll investigate that.

Unfortunately, Eclipse doesn’t seem to share the per-project
compiler settings. If true, that seems like a nuisance since it means
that everyone will have to go through the settings by hand. The same
seems to be true for project-specific editor settings, e.g. tab stops.

The Eclipse Java compiler has a number of nice warnings that will
help us clean up some parts of Classpath a bit. I’ll have to remember
to steal these for gcjx.

distcc for gcj?

writes about approaches to make distcc work well with gcj. This
is tricky because distcc works by preprocessing your C or C++ source
locally, then shipping the result to another machine for

There seem to be a few plausible approaches to doing this. One
approach is to modify gcj itself. gcj could read your source, analyze
it, find all the dependencies, and then package up a jar file that you
could send remotely. At the remote site you could invoke gcj pointing
at just this jar file. The drawback of this approach is that it
requires invasive and complicated changes to gcj. You might think
there is also a performance problem here, but in practice parsing and
analyzing java source is pretty cheap, code generation is what takes
the most time.

Another approach Anthony puts forward is the idea of using
an LD_PRELOAD library to catch all open
calls and have the remote compiler ask your machine for the files in

Actually I think this is kind of cool, though it does beg the
question of why you don’t just set up NFS, since after all you’re
serving files. This puts all the nasty potential security problems
into a known framework.

Anyway, I think that his approach will work ok. It would be
interesting to see how well it performs. It looks like his approach
caches the files it opens, meaning that for a large compilation the
number of files shipped over the network will dwindle. Another
benefit of this approach is that the debugging information will always
turn out right, since gcc will always request things by their real
names. Neat.

One remaining approach is to just write a wrapper for gcj that
ships everything mentioned on the class path to the remote server. If
the class path includes a directory, just ship all the java files.
You could use rsync for this to avoid shipping files more than once.


This was billed as a comedy, but in the end I laughed honestly
only at one point in the movie — the bit with the brown sauce. But
otherwise, when I laughed, I was laughing at the movie, or at the
incredible stupidity of its characters. I really disliked it, on the
order of Va Savoir or one of those other movies that some folks like
and rave about, but which I just find bafflingly boring.

More Free Java

I read an
interesting bit in Gosling’s blog
. Check out the fourth bullet
about patent licenses and other legalities.

One suspects that perhaps he’s wrong about this, though, just as
he’s wrong about free software.

He writes: “[Stallman] has his own rather peculiar definition of
“Free” that I think violates the First Law of Thermodynamics (energy is
conserved)”. But that’s the case almost everywhere in the world we
live in — otherwise, where do profits come from? And anyway, I don’t
like these bad physics analogies. Intention, drive, dedication,
whatever — they aren’t like energy in the sense of physics and aren’t
subject to the same rules. This should be obvious.

Santa Fe

I forgot to mention something, which is that every time I’m in
Santa Fe I think about Christopher
, who I met once while visiting Mark a few years back.

Panel and libgcj

My girlfriend, who still uses Windows (boo, hiss) downloaded some
program from the local TV station that will show the temperature and
weather conditions in a small box on the equivalent of the Gnome

It occurred to me that we should probably be able to write Gnome
panel applets in Java, ideally with security protection and minimum
fuss. Then, ideally, you could just drag jar files from Mozilla to
the panel and the applet would show up.

This could probably benefit from Michael Koch’s work on gcjwebplugin. It seems
like a fun project, but at the moment I’ve got too many other things
going on.

Free Java

RMS posted his Java
article. It is basically reasonable, the sorts of things
we’ve been talking about for a while. The reader comments are
amazingly trollish, about what I expect from the non-free Java world
these days. Personal favorite quote: “I mean, if GCJ is languishing
miserably and is continuing to bump along the bottom, that’s no one
else’s fault than the one of the bunch of idiots running that

Hello, fellow idiots. You know who you are.


Santa Fe was cool, and it was great seeing Mark again, but while
I was gone my dogs got into another fight and Maude had to go to the
vet again. So their difficult situation is getting worse 🙁

It mostly snowed while we were there so we stayed inside and read
a lot.


It should come as no surprise now that Bryce is working at Red
Hat. So, welcome Bryce. Now get to work!


While playing with monotone again, I discovered
that there are a couple of duplicated “,v” files in the Classpath CVS
repository. For instance, we have both
javax/swing/plaf/,v and
javax/swing/plaf/Attic/,v. I wonder how
that happened… it is a “shouldn’t happen” situation.

The Attic copies of the files look like ancient dead versions
that were deleted. Which makes sense. What doesn’t make sense is
that the files weren’t moved out of Attic when resurrected.

I’ve also heard that NetBSD uses a hacked CVS that will create
situations like this on purpose. I wonder what use that serves. If
you know, tell me about it.

Gnome and Java

I belatedly read a lot of the Java/JVM/C#/.NET discussion on desktop-devel-list.
I wish I’d been involved, bummer. Next time.

This weekend I’m going on a short vacation to Santa Fe. We’re
going to stay with Mark Galassi again, that’ll be fun. I really need
this vacation… hopefully when I get back I’ll be more motivated to
answer all that email I’ve left (e.g., libffi stuff), all those
patches I haven’t read, etc.

are some nice ideas about potential problems with the JCP.

Good news, the paper Andrew and I are writing for the GCC Summit was accepted.
Now we just have to write it. Hopefully lots of gcj and other Free
Java folks will show up at the summit this year. SableVM guys, it is
just up the road in Ottawa…