"Sun today announced that Java Platform, Standard Edition 5 is now available for redistribution by GNU/Linux and OpenSolaris operating system distributors under the new Operating System Distributor's License for Java (also known as the 'Distro License for Java' or DLJ). Developed in consultation with, and for use by, the various GNU/Linux communities, the new license allows distributors to ship Sun's Java SE 5.0 Java Development Kit and Java Runtime Environment as installable packages for their operating systems." At the same time, Sun also promised to open-source Java.

Firstly, forking (fragmentation) only works if people support the fork. People may have supported {Free,Open,Net}BSD, even DragonFlyBSD, but many other BSDs (not to mention versions of XFree86 under the new licence) have fallen by the wayside, and the future of some (PCBSD, DesktopBSD) is at best unclear.

Secondly, what is clear is that choosing the GPL is the best way to prevent forks. Yes, there are plenty Linux distros, but they all take the Linux kernel from the same codebase, GNU binutils from the same codebase, and so on.

You have to keep in mind Sun said they would open source the code and allow Java to be freely distributed. They still retain control and direction of the design of java as a programming language since it is not GPL'd. So if you want feature XYZ and Sun rejects that request then you are out of luck.

Secondly, what is clear is that choosing the GPL is the best way to prevent forks. Yes, there are plenty Linux distros, but they all take the Linux kernel from the same codebase, GNU binutils from the same codebase, and so on.

That isn't necessarily true. In fact, I don't see how the GPL prevents forking at all. It seems to encourage it, just look at the hundreds of Linux distributions that exist. Not only are they different in what they package, many of them have different patches applied, etc. They may have the same sources for code, but that doesn't mean anything.

In fact, I'm not sure how the GPL ensures that people will obtain it from the same source, when obviously, the different kernel patches they use often don't come from the same source.

I think the correct thing to say is that the GPL is *one* of many open source licenses that can *encourage* a centralized project. However, I'm not aware of any that would actually *prevent* forking.

I think the correct thing to say is that the GPL is *one* of many open source licenses that can *encourage* a centralized project. However, I'm not aware of any that would actually *prevent* forking.

I didn't say it would prevent forking, any more than DRM will prevent illegal copying. What I did say is that it is the best way to prevent copying, just as making code closed-source is the best way to prevent your algorithms being copied by someone else. But it's still not impossible.

In fact, I don't see how the GPL prevents forking at all. It seems to encourage it, just look at the hundreds of Linux distributions that exist. Not only are they different in what they package, many of them have different patches applied, etc. They may have the same sources for code, but that doesn't mean anything.

I already addressed this in my post. Distros are *collections* of OSS, and as such they can differ in their choice of what goes into the collection. Yes, I know many distros do submit patches to GPL'ed programs and such (Gentoo and SuSE being two of them which I use), but since they must be open-sourced, they can't be "taken away" from the community in the way that, say, you can take FreeBSD, make changes to support your proprietary architecture, and keep the changes to yourself, such that (say) only your GUI can run on top of your architecture. Anyone who does so is in violation of the GPL.

The GPL might be the best way of preventing forking, but IMHO it opens a totally different can of worms. What would happen to my code that was written and compiled by a fully GPL JVM? The compilation itself shouldn't be an issue, but if the entire JVM was GPL'ed, that would mean that my code was linking to GPL'ed code, which would then require me to release the source code to my programs.

Unless I am mistaken in my interpretation of the GPL, using such a license would spell death for Java. Instead a different license like the BSD (very unlikely) or the LGPL (more likely) would be more suitable.