This Thursday, at JavaOne, there will be a panel titled “The Big Question.” The JavaOne page on the topic offers the following (cryptic) description:
Numerous individuals and organizations suggest that JavaTM technology adopt a new community and development model. This panel will dive into the tangle of granular technical and legal issues, including the potential tradeoff between technologist’s calls for openness vs. the market’s demand for compatibility. Panelists include leading technologists, experts on legal and copyright issues, top industry analysts, and mainstream users of the technology.
So is “a new community and development model” codespeak for open source? Even if the panel description doesn’t make it clear, that’s what everyone is expecting.
Open sourcing Java has been a hot topic in the community (particularly in Java-oriented weblogs) during the last few weeks. Most people seem to be for it, and I’d say that there’s been as much community pressure as anyone can imagine on Sun to do it.
There has been a lot of argument over whether Sun would gain or lose with this, but little over how Java, or the developers that work with it, such as myself, would benefit from such a move. Note for example, open source notable Eric Raymond’s Let Java Go open-letter to Scott McNealy, where he makes several points on how open sourcing Java would benefit Sun (to the point of making a much-disputed stock price comparison), but very little on how this would be good for Java. As a contrast, columns like this one by Dan Gillmor with more focus on Java itself are few and far between.
So, there must be an implicit belief that open sourcing Java would “be good”, or would suddenly bring droves of developers into the Java world (how exactly would this happen is unclear–presumably because now that Java is “free” they would feel comfortable using it?), or would suddenly “fix” whenever is a problem for each of us, and so on. I’ll come back at the end to some of the advantages that I think open source would have for Java, given the right context, but my point is that these will vary from person to person, and yet there is little mention of them–and how can that be possible unless every proponent assumes that it will solve their problems?
What comes to mind is a quote from Jamie Zawinski from the Cathedral and the Bazaar:
[…] in 1999 one of [Mozilla]’s principals [Jamie Zawinski] caused a bit of a sensation by resigning, complaining of poor management and missed opportunities. “Open source,” he correctly observed, “is not magic pixie dust.”
And yet, from all the buzz (dare I say hype?) surrounding open source and Java, one could be forgiven for thinking otherwise.
But why this belief? In my opinion, Eclipse has had a lot to do with it –as has Jakarta– but Eclipse in particular is the shining star of the Java world right now. Look! A great platform! Open Source! Blasting barriers! Fast turnaround! Quality code! This is what Sun should do!
But we forget some things. Like the three or four dozen full-time developers that IBM devoted to this project. For a couple of years.
Or the fact that versions keep being pushed out against arbitrary deadlines. Not that deadlines are bad, necessarily, but as Don has noted it is possible that products that depend on Eclipse needed the release on a certain schedule, and maybe even for it to be ready for JavaOne. The many delays in the Linux Kernel come to mind here–delays for increased quality and because its development is less centrally managed.
Or the forty million dollars that IBM put into it.
Or the fact that several other companies are providing substantial amounts of money and resources to the project, post-IBM-spinoff.
(Btw, is all of this open source, Linux-style? Really? How many of its unique elements, such as the process, are present here?).
In any case, my point is not that Eclipse is “bad”, but rather that open sourcing to any degree an already existing platform takes time, a lot of money (if you want to bootstrap it quickly), and direction. Even so, Eclipse’s development has been as opaque to many people as Sun’s for core Java. Nearing the end of the “Mx” releases there was a change on the look and feel, which many people complained about–because it caught most outsiders by surprise. And they couldn’t really “go in and change it”. Why? Complexity, lack of documentation, etc.
So if the JDK/JRE is just open sourced, maybe IBM or Oracle or BEA can benefit. But is that the point of open source?
Or rather, to go back to my original question, why is open source good for Java?
The problem with Java: direction, or lack thereof
In my opinion many Java developers that advocate open sourcing it are simply frustrated with Sun’s management of it. (At least, I know I am). This doesn’t mean, again, that an open source Java would be a bad idea, I’m just saying that maybe it’s being pushed for the wrong reasons, and consequently doing it would deflect attention from the real problem for a while, not solve it, and maybe even exacerbate it.
By “Sun’s management of Java” I am referring to their focus. Sun deserves a lot of credit for its stewardship of Java, but it’s always been mildly schizophrenic about it. First it was all about thin-clients. Then it was all about server-side. Then it was actually about web services. Then it was about mobiles. And so on. In themselves these shifts are not necessarily a problem; what’s a problem is the sudden nearly constant change of focus on certain APIs and not others. Year-in, year-out, APIs are suddenly elevated to high-priority status and then nearly abandoned (the case with JavaSound), or kept in life support. Lately, Sun has put a lot of work into Java Desktop System integration of the JDK, while ignoring pressing platform problems such as proper desktop integration, installation systems, size reduction, multiple JRE management, modularization, or HTML parsing/display support.
Or, rather, not ignoring, but doing something worse, “open sourcing” them.
Case in point is JDIC which provides desktop-integration capabilities that are little more than a band-aid considering where Java should be today. But what’s the solution? “It’s open source!”
Which I invariably read as: “we don’t care enough about this technology to make it a priority, so we’ll push it out in the open and see if anybody works on it”.
But open source or not, Java needs some refocusing on the components that are missing from the platform: desktop integration through APIs that are properly ported and supported on the three major OSes (Linux, OS X and Windows), including installers, properties, web browsing, and so on. A clear plan regarding current APIs, including core Java APIs:
- If the API is still evolving, what’s the goal, what’s missing, when can we expect it will be done, and how can the community contribute? (Open source would be ideal to inject energy into this process)
- If, on the other hand, the API is in maintenance mode, can the process for fixes and requests be clarified? Here open source becomes almost crucial in the long run, as without it, minor bugs in rarely used APIs might remain unfixed through several cycles.
- For new, or proposed APIs, do we still need JSRs, or can we provide a simpler, better mechanism, like what Apache does?
In this context, it is clear that an open source Java would be valuable. But without clear direction, and commitment, from Sun and others to drive the platform, guide it, and keep it from splintering, open sourcing Java could potentially create even more confusion.
Because open source is not magic pixie dust.