May 08, 2005

Finding Discord in Harmony

Today’s big Slashdot Java news was the announcement of Harmony, an Apache-licensed implementation of J2SE 5, Tiger.

I hate to be the bearer of stop energy, but I really can’t see anything useful coming out of this project in the short, medium, or even the long-term.

Exhibit A, from the Harmony FAQ:

10) Do you have any code to start?
—————————————————-

No, we don’t. We didn’t want to “bless” any given implementation that might be donated (if such a thing could happen) but would rather let the community decide how it will create and develop the platform.

I’ve written this rant before, twice, but I’ll say again that this is the worst possible way to start. I would almost go as far as saying that starting an open source project with no code and a committee trying to decide what to do next spells inevitable doom.

The best way to start an open source project is with code. Working code. Hack away at home on weekends, maybe get a couple of friends to help you out, and don’t go public until you have something to show people that does something interesting, and that other people can use to build more interesting stuff on top of. You need this for a bunch of different reasons: it establishes the original contributor’s bona fides in the open-source meritocracy, it shortcuts all sorts of damaging debates about coding styles and architecture that can stop a project before it starts, and so on.

Most importantly, though: working code attracts people who want to code. Design documents attract people who want to talk about coding. I’ve seen what happens on projects that start with no code and a commitment to produce a design. Some of the procession of UML diagrams were really well put together, but that’s about the extent of it.

Even looking at the initial Harmony proposal document: with twelve names on the list of people volunteering to assist with design and architecture, only nine of them have also volunteered to contribute code. And the fact that these nine felt they needed an incubator, a formal structure and an official public announcement before they started hacking together doesn’t bode well.

Exhibit B is the state of the art in existing open-source Java implementations, which is cheerfully dismal. All the existing projects are very worthy, have had a lot of hard work go into them, and are only useful as curiosities, research projects, or something to package with a Linux distribution that will cause all sorts of conflicts when you install a real JDK.

The problem is that with the gratis availability of a fully-featured, mature and advanced Java VM from Sun, there are really only two reasons to write a Free replacement:

  1. An ideological objection to non-Free software
  2. So Linux distributions can package a JDK

Most developers are pragmatists. Give us the choice between hacking on something new and interesting, and slaving away over a lot of compatibility edge-cases to reproduce something that is already freely (gratis) available, just so Linux geeks don’t have to download the JDK from Sun like the rest of us, and… you get the idea. Unless one of the few remaining cashed-up Linux distributors (are there any?) decide to invest some serious developer time to bringing Free Java to the masses, most hackers are going to see it as a dead-end.

Maybe Harmony will prove me wrong. All I’m saying is the odds are stacked pretty heavily against it, and maybe we should have waited until there was something to show before trumpeting the project across the blogosphere.

Posted to nerd at May 8, 2005 09:40 PM
Comments currently disabled due to spam. If you want to comment on a post, email me, and I'll try to incorporate your feedback somehow.
Trackbacks <http://fishbowl.pastiche.org/mt-tb.cgi/642>

Open Source Java: There’s a new Open Source Java effort at Apache — with the list of supporters, I have no doubt that’s it’s going to get past Incubator phase. I still can’t help but wondering why exactly the world needs this? Update: The u...

From: Stefan Tilkov's Random Stuff at May 8, 2005 09:57 PM

Harmony, Charles gets it in one: As always, Charles Miller gets it in one, as great as an apache licensed JVM would be, starting with nothing more than an architecture diagram is bound to attract noone but Architecture Astronauts....

From: Koz Speaks at May 9, 2005 11:01 AM

Project Harmony: In Tune?: Over the weekend I happened across this post by Sun's Dave Johnson, which in turn linked to this note from Apache's Geir Magnusson (whose day job put him back in the news today). In short, the note proposes the creation...

From: tecosystems at May 11, 2005 05:46 AM

The code-first dictum: Traditional wisdom says that the "code first, design later" approach is a bad idea. However, Charles Miller points out that, when it comes to open source projects, it's mandatory: I would almost go as far as saying that starting...

From: Coding Horror at May 19, 2005 04:20 AM

The code-first dictum: Traditional wisdom says that the "code first, design later" approach is a bad idea. However, Charles Miller points out that, when it comes to open source projects, it's mandatory: I would almost go as far as saying that starting...

From: Coding Horror at May 19, 2005 04:21 AM

Wednesday, May 18, 2005 10:40 PM: Charles Miller finds Discord in Harmony. "The best way to start an open source project is with code. Working code." That's the best way to start any project. Just do it. You can't overthink programming, sometimes you just have to start typing...

From: Critical Section at May 19, 2005 08:04 PM

The net has too much stuff, Harmony, and Sith: Really, there is. Mostly it's pretty bad stuff, but now and then you find a thread that leads somewhere good. Great. So if I start using this application, I’m going to become reliant on some paranoid flake who cripples his program on totally specious...

From: BOSS logic at June 2, 2005 05:39 PM
Comments

You need to be drinking the ASF kool-aid to understand this. See http://www.advogato.org/person/robilad/diary.html?start=67 for details, but the gist of it is this: They're setting up a procedure (the ASF loves procedure) to decide how they should have an official VM - presumably by adopting one, but they want to explore all alternatives.

Posted by: James at May 9, 2005 01:41 AM (#link)

And I'm sure that we'd have been taken out at the knees if we started with some code from somewhere. It was actually debated long and hard.

The point is to get the larger conversation going - see who wants to participate/support/donate and how.

-geir

Posted by: Geir Magnusson jr. at May 9, 2005 06:43 AM (#link)

I think it's fitting that they've chosen the same name as the doomed project to produce a free clone of Qt from several years ago...

Posted by: Adam Fitzpatrick at May 9, 2005 09:23 AM (#link)

There is another reason than the two you mention to make an open source java. What about all the platforms that SUN do not support?
Myself has a pdaxrom on a Zaurus (Linux PDA) and the only full java package for it is the 1.3 Blackdown and that runs nice! But who knows when 1.4 or 1.5 will be supported. With an open source implementation it would have been possible to compile it yourself for the platforms you want!

Posted by: Jørgen Østensen at May 11, 2005 09:17 PM (#link)

While I agree that generally the place to start FOSS is with code, this is more of a big-idea project. I don't know how Apache started Geronimo, but I wouldn't be surprised if it started this way too. And Harmony looks to be a much larger undertaking.

So I'm curious to see if they can get moving relatively quickly or if it gets bogged down in bureaucratic nonsense. But I think that if anyone has the potential to do this right it's Apache.

I also believe there are more reasons than you suggest for building another JVM; one of the core tenets of the FOSS community is that competition can rapidly spur improvement in software. And besides, there's the Everest mindset: build it just to prove that we can.

I don't know that I would participate; I've never worked on anything similar, and I have plenty on my plate right now. But I'm curious to observe the progress.

Posted by: Scott Sauyet at May 11, 2005 11:50 PM (#link)

"Exhibit B is the state of the art in existing open-source Java implementations, which is cheerfully dismal."

Thanks for weaking me out of my delirium. I didn't know the all-seeing Fishbowl had the truth!

I guess it was a hallucanation to be running Eclipse (with debugging) and Tomcat on SableVM.

Posted by: PJ Cabrera at May 12, 2005 01:16 AM (#link)

I share your concerns on Harmony. I think it seriously under estimates the task in hand.
And then there is the basic question of need, not to mention the erroneous concept of "Java Trap", being propagated by FSF. I had blogged about it too - http://blog.taragana.com/index.php/archive/open-source-j2se-is-an-absolute-must-for-java-developersall-hail-apache-harmony/

Posted by: Angsuman Chakraborty at May 17, 2005 11:40 PM (#link)
Post a comment
(Real Names, Please)





(Leave blank if you want)


Remember personal info?

(HTML will be stripped, URLs automagically turned into links)