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.

Here
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…

Monotone

I haven’t been doing much with Monotone lately, but today I
tried importing the Classpath CVS repository again. It didn’t work,
unfortunately (but expectedly), but it did seem to do better than last
time.

At the moment all that is missing is Attic support (I have a dumb
little patch for this) and support for dead revisions. I looked at
the latter a while back but ended up failing.

The Rules of the Game

This played yesterday at the Conference on World Affairs.
Roger Ebert introduces these showings and always gives a nice talk,
so I try to make it every year. This year I missed most of his talk,
but I stayed for the movie since I heard enough to intrigue me and
since I’d never seen a Renoir film.

This film is widely acclaimed as one of the greats of all time,
perhaps second only to Citizen Kane; in fact it pioneered a technique
or two that showed up later in Kane. I think it takes a certain
skill to watch a movie like this, in that you have to be able to
throw yourself back into the time, to understand the state of the art
of moviemaking as it was then, in order to realize the ground broken
by the film.

I’m not always able to do that, and yesterday I definitely wasn’t,
what with the various distractions of life (i.e., why I was late).
Still, even without the special effort I could see why people praise
this movie. The hunting scene was particularly powerful (I closed my
eyes for parts), and then the way it was echoed later, showing the
various characters to be not only carefree, but careless, was a sort
of grim delight.

Lives out of balance, oblivious to what awaits them in the coming
years.

The Lady Killers

I really enjoyed this movie. First, a few times during the movie
I forgot that Tom Hanks was playing the main character, which is quite
a feat for a big name actor. Second, I liked his character. I’m a
sucker for a purple phrase, I suppose. I saw the rest of the day
through a more verbose and convoluted lens.

Garbage Collection

I read this today on the gcc list, courtesy of Mr. Stephan T
Lavavej: “Garbage collection is a morally bankrupt idea”.

I hear this sort of thing from time to time, but rarely so
succinctly. Who knew that programming included moral sub-problems?
And here I thought it was about engineering tradeoffs.

Something’s Got to Give

We watched this on DVD this weekend. I found it nearly
unbearable at parts, and about an hour too long. Diane Keaton is
pretty good, I like the way she moves on screen. But otherwise I
found it incomprehensible. First, why would anyone want to date Jack
Nicholson? Second, there were scenes where I literally couldn’t
figure out what the characters were talking about. There’s a scene
where Keaton is trying to get a taxi where the whole conversation
doesn’t make any sense at all.

gcjx

gcjx can now parse, analyze, and generate code for all of
Classpath. So, huge progress this weekend. I’m not sure what I’m
going to work on next, there are too many choices.

Free Java Musings

I’ve heard complaints a few times this week about the difficulties
of having multiple different branches and projects. E.g., it is hard
to get into AWT hacking since most development happens on a branch in
the gcc repository, and gcc is large, hard to build, and has a high
barrier to entry (“high” being relative; gcc is certainly more
pedantic than many projects).

Another difficulty is that commits to Classpath aren’t readily
testable. Classpath is sort of a clearinghouse, where various
projects share code — but, importantly, most projects that use
Classpath don’t use it out of the box but instead have their local
changes.

Mark suggests to fix the latter problem by adding an interpreter
to Classpath. You can’t really do this, though. You also need
reflection, class loading, object layout, etc. In the end you wind up
with a virtual machine.

I really think this isn’t a bad way to go. Actually I think it is
inevitable in a sense, since there really isn’t much difference
between virtual machines outside their execution engines and garbage
collectors. (There is also locking stuff, but everybody does thin
locks these days.)

So, what if we had a single virtual machine and left GC and JIT
decisions to the individual projects? That’s the way I’d like to see
things proceed, it is basically an extension of what we talked about
at FOSDEM.

Once I have a bit more time, and once Andrew’s binary
compatibility changes go in, I plan to look more seriously at the
possibility of using an unmodified Classpath with gcj. Which reminds
me — I really want to get Andrew’s patches in as soon as possible,
even if they don’t work, so that we can all look at them and perhaps
help out with testing or whatever. This is pretty important
really.

The Mysterious Bryce

It turns out that Bryce McKinlay is in Colorado this week. With
luck I’ll finally meet him this weekend.

gcjx stuff

gcjx is proceeding well. I find I work on it nearly every day,
after my normal work is finished. I talked to Anthony a bit about it.
He pointed out that one nice approach for getting it in to gcc is to
simply put it on a branch and let everybody see the daily commits to
it. Eventually it would be cemented in everybody’s mind as inevitable
:-).

Sun and MS; Free Java and Mono

Bad news?

Bad
news for Free Java?
It’s hard to say, I suppose it depends on the
details. One key sentence: “This agreement recognizes that cutting
edge R&D and intellectual property protection are the foundation for
the growth and success of our industry.” To me this says that Sun
fears free software more than they fear MS… bad move, Sun. I hope
that this is just some administrative agreement and the actual changes
simply won’t materialize.

Occasionally I think we should just strike off in our own
direction — make a new language and virtual machine for the free
world. This is a lot of work and there are things that make it
unattractive. It isn’t clear we could attain the critical mass
necessary to make it work.

Cooperation

One way to have cooperation between Mono and some Free Java
implementation is, of course, IKVM. Another way would be to take
Mono, parts of IKVM and combine them with the proposed (but still
undocumented, sorry) Pluggable JIT API. Then we could have
gcj-compiled code running inside Mono.

Another idea would be to just write a C#/CIL front end to gcc and
have it target the same runtime that gcj does. Writing a front end
like this really isn’t hard, especially now that tree-ssa is gearing
up to be merged into the gcc main line. This is important because it
means that the tree interface to gcc will finally be documented,
making it much simpler to generate.

Forking

I’ve heard some people, UI hackers mostly, suggest that delegates
are the most important C# feature missing from Java. Personally, like
Sun, I think anonymous classes are just fine for this. But if not,
maybe we in the free world should just extend Java. We could easily
have delegates at the source level map to anonymous classes in the
bytecode.

Likewise I sometimes think about adding something like pinvoke to
gcj. I don’t think it buys you much, either in terms of maintenance
or in performance, but people seem to like it. Sometimes that’s
reason enough to do something.

I guess Sun is right, us crazy free software folks just think
about forking all the time. Shame on me.

gcjx, politics, Tutu, Maude

gcjx update

This weekend saw many minor improvements: a round of “fixme”
removal, some internal cleanups I’d meant to do (e.g., caching the
constant-ness of an expression). I also wrote a couple nice warnings
(unused import and use of a static member in a non-static
context), plus I wrote folding code for constant expressions.

So contrary to my plan I ended up just doing general improvements
instead of working on generics.

Politics

I’ve been following the Richard Clarke story with great interest.
I saw him on Charlie Rose and also I got up Sunday to watch Meet the
Press to see what he had to say. I think he comes off as basically
credible, perhaps at times a bit pompous in delivery. And
occasionally I wish he took a stronger stance, for instance being more
forthright that one reason to write a book is to make money. Why not
admit that? I don’t think it would expose any real conflict of
interest; one can tell the truth and make money. Usually 🙂

Tutu

Last night we saw Desmond Tutu give a speech at the local
basketball stadium. He’s an engaging speaker, quite good at it
really. It was a bit annoying, though, since he talks in terms that I
generally don’t agree with; for instance the idea that some people are
“good” and that we can tell the difference between “good” and “evil”
was a main theme of his talk. Likewise that this is God’s world and
that the evil will “bite the dust ignominiously” — nearly an exact
quote.

The simple dualisms and commandments to be “good” seem simplistic
to me. And after reading The Embodied Mind I constantly come back to
the idea that the core of both materialism and dualism is a kind of
alienation or nihilism. Of course Tutu doesn’t let it go there, but
you can see its thumb print all over contemporary culture.

A statement I’m sure we could also find in Ovid or Catullus, if we
were to look. Sub sole nihil…

Anyway I ended up translating his speech internally into my own
terms, which I suppose is a way of destroying it. But his energy was
very positive — motivational and inspiring. And he did say some
things I agreed with, even philosophically.

Maude

My dog Maude (who is kind of stealthily famous, if that isn’t an
outright contradiction) got in a fight the other day. She got bit and
had to have some surgery. Right now she has some tubes sticking out
of her to let the wounds drain. “Frankendog” is the term that fits
best, she has a pretty disturbing appearance.