Australian developer Brandon Franklin says the time is now for Sun to make Java available under a free software licence.

COMMENTARY--Recently, much of the buzz in the software development community has been about one question: Should Sun Microsystems release Java under a free software license like the GNU General Public License (GPL)?

There are many valid reasons why Sun should. In fact, I predict that if Java is to survive in a world dominated by Microsoft for the long term, it must become Free Open Source Software (FOSS), where -free" means freedom, not zero-cost.

Currently, the source code for the classes that make up Java is mostly available for developers to view, but modifications of any kind are expressly forbidden (see the licence included with the Java SDK, in the -Supplemental License Terms", subsections B and D). This is the key reason why Java is not considered -Free Software". Being able to simply view the source to something does not make it FOSS, since creating modifications so that the software can evolve and adapt is more important to developers than simply reading about how existing code works.

It should also be noted that there are several third-party licences in the SDK, due to the fact that the SDK includes several technologies developed by entities outside of Sun. Converting Java to FOSS will require ensuring that these licences are compatible with a FOSS distribution model, or replacing the technologies with ones that are.

The benefits of a FOSS Java to developers will be enormous. Sun's -Bug Parade" is populated with thousands of unfixed bugs, many of them more than five years old. Even the simplest of bugs often goes unfixed, presumably because Sun lacks the manpower to fix everything, and must prioritise. There are, at the time of this writing, more than 7,500 open bugs filed against the SDK alone. An open source approach will not suffer from this. Bugs will be fixed almost as quickly as they are reported. The backlog of bugs will quickly disappear, as well. The quality of Java as a platform will instantly be boosted.

Not everyone, however, agrees that the benefits are worth the perceived risks. James Gosling, widely recognised as the -Father of Java", has played an important role in the development of this debate. In the April 12, 2004, entry in his blog he writes:

    GPL software is not "free": it comes with a licence that has a strong political agenda. Like GPL software, the Java platform is "free" in many senses: you don't have to pay anything for the runtime or developers kit and you can get the sources for everything. Unlike GPLd software, the Java sources don't come with a viral infection clause that requires you to apply the GPL to your own code.

Gosling seems to feel that -freedom" requires absolutely no restrictions be present. On the contrary, those of us who live in modern western societies know that the presence of laws (that is, restrictions) is what enables us to remain free. This is the concept of -greatest liberty". The important thing is what those restrictions are. The same is true with the GPL, which grants very specific freedoms.

Gosling also implies that if Java were released under the GPL, that its so-called -viral infection clause" would require that all Java code written would automatically be under the GPL. This is a complete misunderstanding of how the GPL works. Linux, for example, is under the GPL, but programs written to run on it and use it need not be. Gosling is confusing the concepts of -program linking" and -writing for a platform".

Beyond these technical points, one might ask, -What is the big problem with making Java FOSS?" It's a complex question, and many in the Java community have provided excellent coverage of the issues. Joshua Marinacci is one that has covered this in his blog on java.net. He has covered many of the details, however, I believe he has made some critical errors in his argument, which must be refuted to understand why Java must become FOSS if it is to survive.

Marinacci points out four major -problems" that he claims would result from making Java FOSS. Probably the most important one is the first one on his list, which is echoed by the anti-FOSS Java camp worldwide: Java would become chaotic, and incompatible versions would pop up everywhere. Apparently there is a belief that only Sun's heavy-handed spec enforcement can keep this from happening (though it clearly failed to do so in a timely manner against Microsoft).

We already have good evidence that this will not happen. Linux is a platform under the GPL, and is based on a set of standards collectively called UNIX. UNIX is valuable mainly because of the uniformity of implementation of these standards on all flavours of UNIX, just as Java is valuable for the same reason. We do not see incompatible versions of Linux everywhere, though, even though there are many different and diverse distributions of it available. Most people see this diversity (read: freedom) as a good thing about Linux.

Similarly, the extremely popular database software called MySQL is available under the GPL, and the company makes no secret of this. MySQL is rapidly growing in the industry, and is creating a serious threat to purely commercial databases like SQL Server. Despite the fact that MySQL is GPL, nobody forks the code. Why not? Simple: doing so would create an incompatible code branch, and nobody stands to gain anything by doing that. The community is better served by working together to make MySQL better.

So there we have two spectacularly successful GPL products, both of which are giving Microsoft major headaches, and both of which depend upon standardisation. One has many distributions, the other only a few. This is why the fear that making Java FOSS would cause it to degenerate into chaos is unwarranted. It is more about paranoia than reason, more about control than progress.

FOSS works because it allows software to evolve like a biological organism, changing and improving in unpredictable ways over time to find solutions to seemingly intractable problems. If Java becomes FOSS, it will find ways around threats like Microsoft. If it does not, then those threats may eventually send it the way of the dinosaur. After all, having the comfortable predictability of being big and cold-blooded doesn't help you when the surprise meteor hits. Only being adaptable can keep the species alive.

Brandon Franklin is an independent Java contractor living near Adelaide. He has been programming since he was 10, and is an active contributor to several open source projects.

Do you need help with Java, C, or C++? Gain advice from Builder AU forums

Comments

1

George - 14/05/04

Your article appears to portray knowledge of Microsoft's attempt to derail and kill Java. What you fail to recognize w/ your other comparisons (Linux & MySQL) is that they don't (or didn't) threaten a big company like Microsoft the way Java did. Java was completely new--M$ had absolutely nothing to combat it. So they used their monopolistic & anti-competitive nature to slow it down. By creating J++, they split the code branch effectively soiling Java for all developers. Will it work on IE? Will it work on Netscape? What claimed to be, "write once, run anywhere" did not. While Sun was repairing the damage, low and behold, .NET is released. Interesting, eh?

M$ couldn't fork the linux kernel because no one would use it. And SQL Server was already in existence before MySQL.

So your comparison is not valid.

Don't get me wrong, I want Java to be open source. I think it will grow much faster. And I agree that it's the only way for Java to survive. But I also understand why Sun stands its ground. Too bad it will lead to Java's death.
The only glimmer of hope is now that M$ has released .NET and moved passed the Java law suit, Sun will release Java as open source since M$ feels less threatened. If there weren't so many M$ suckers, this wouldn't be a problem and I'm sure Sun would release Java as OSS.

» Report offensive content

2

N.A - 14/05/04

Maybe, SUN should consider openning some of the code, while retaining control of core/critical parts of Java. A gradual solution might help keep Java much more competitive against .NET and some Open Source programming Languages. What will be the problems that will arise from this model?...I'm not sure, but it cannot hurt SUN to try.

» Report offensive content

2

N.A - 14/05/04

Maybe, SUN should consider openning some of the code, while retaining control of core/critical parts of Java. A gradual solution might ... more

1

George - 14/05/04

Your article appears to portray knowledge of Microsoft's attempt to derail and kill Java. What you fail to recognize w/ ... more

Log in


Sign up | Forgot your password?

What's on?

  • Optus Deal

    Broadband + home phone + PlayStation®3 in a single package price!