Friday, May 19, 2006

Open-source Java?

At JavaOne Sun pronounced that it's planning on open-sourcing Java. So what does that really mean? Some might say that the Java source code has already been publicly available via Sun's source code license. But there is a big difference between "source code available" and "open-source". With OpenSolaris Sun did go down the right route not only by making the source code available but also with the open-source compatible license. This move has resulted in a bigger community around Solaris and even some 3rd party distributions such as Nexenta.

I've been asked by quite a few people whether I think open-sourcing Java is a good thing for Java. It's definitely a tough question and I don't think there's one good answer. That said I did collect some random thoughts I have on the subject.

I think one of the biggest advantages to making this move would be to significantly grow the developer's community around Java, and by doing so, increasing the manpower contributing to its maintenance. The JDK currently has thousands of open bug reports, and that is only counting the core. One thing my PHP experience has taught me is that one of the things the open-source communities are really good at are with squishing bugs. I wouldn't be surprised that after Java goes open-source, that those thousands of open bug reports are reduced to just a few hundred in a very short time period. Some might suggest that the source code has always been available but the truth is that such communities won't form unless the license and the project actually are designed to officially accept contributions and support an open-source community.

Another interesting outcome would be the ability to reuse some of the source code in non-Java related projects. There is some good code in Java and I think some of it could be reused in other projects (depending of course on license compatibility). As some of the smartest people worked on this code I think this could be of value to the broader open-source community.

Last but not least, I think that the availability of the source code could lead to innovation happening around it. This could be both in form of performance and functionality, but I think what would be especially interesting are domain specific versions of Java. I think it's quite foreseeable that you'd see tailored Java versions which are very specific to certain applications and industries. I'm already looking forward to seeing some interesting domain-specific offsprings.

So definitely lots of advantages but I also have some concerns around such a move. If the source code would be repeatedly forked (which as I previously stated could also lead to some interesting domain specific implementations), then incompatibilities between various Java implementations might make it extremely hard for ISVs to create supportable apps for these platforms. You'd have a similar situation (but even harder to solve) as we have in the Linux world where most ISVs officially support Redhat&Suse, but have to unofficially test on at least another half-dozen of distributions such as Fedora, Ubuntu, Debian, and others. This kind of fragmentation in the Java space and the wide distribution of incompatible Java versions could lead to a big headache for Java vendors and customers.
Another concern would also be backwards compatiblity. Up to now, Sun has done a pretty good job on backwards compatibility in Java. Having more of an open process might make keeping that balance harder. We have seen similar things happen in the PHP space, and it hasn't been easy to keep the balance between backwards compatibility and fixing issues.

Overall I do think it's a good move and the right move. I believe Sun can use open-sourcing Java as tail wind for a lot of things it's doing well such as Hardware & Solaris.

Those are some of my random thoughts on the subject. No doubt they are incomplete. I'd be happy to get comments pointing out other pros/cons which I haven't thought of, or reasons for why my thoughts are wrong :)

And I can't end this Java-centric blog article without saying Happy PHP'ing :)