Skip to main content

What about focusing on the right discussions?

Posted by brunos on February 9, 2005 at 12:42 PM PST

I just read at JavaLobby a discussion about what James Gosling said of open source developers and compatibility. I consider James a long time friend, and I think he is somewhat right. But the main problem on this Java and Open Source discussion is that there seems to be a lot of misinformation on both sides. We all need to get on the same page, or we'll always be discussing the wrong things...

So, bellow is the post I did at JavaLobby. I'm copying it here too, because I have been active in many places, and my blog keeps falling behind, so, let me try to get all my thoughts in one place :-)

The original JavaLobby message is at:

As usual, there's a lot of misconception from both sides. This is the hardest part on this discussion. As long as we hear this half trues from both camps, it is very hard for Java developers to take a position and act.

I understand when James talks about the code being available since day one. Yes, it has. It is easy to forget that, but at that time there was no "open source definition" (that came in 1998), and most people hadn't heard of free software, specially on the business side. Java's code being put "available" at that time was a huge success and a unbelievably bold move of Java's original team (James included). I may digress, but this may very well have influenced Netscape to release their source code a few years later.

Taking away a little of the free software philosophy, and making it more attractive to business, OSI created the notion that open source is a collaborative effort, that is made possible by the license, a F/OSS license. Well, one can very well argue that the Java licenses, although very restricted by the Open Source definition, did indeed create a collaborative environment, were Java evolved. This "community" is composed of many different companies, and it evolved well enough that many Java developers don't even care about the license.

But as programmers, we all agree that we need to use the correct definitions. Now we have the definition of what open source is, and we should stick to it, or we just create this general feeling that we're being rude to others, by misusing their definitions. As I asked before, Sun should stop saying that "Java is Open Source enough".

It does not means anything BTW. Java is a standard, and there is no such thing as an open source standard. There can be open source implementations of Java, that's something that makes sense talking about. But Sun's Java implementation is not Open Source. Period. And, that's fine! The fact that SunOne Application Server (J2EE Reference Implementation) is not Open Source never for a second undermined the importance and reality of JBoss (a certified J2EE implementation) or Geronimo (on its way to certification). This is the same on the Runtime side. And it is also true that it was not always possible to certify an open source implementation of a JCP standard (or even implement one), but this also has changed. And for the Java Runtime, it changed on the day Java 5 came out.

So, the other side. It is not true that the Open Source implementations of Java cannot be certified. The JCP not only allows for it, but gives scholarships to groups that are interested in being compatible. Onno Kluyt has discussed this deeply with Dalibor Topic and other Open Source Java developers, and it is my understand that at this time, there are no pending issues on this regard. There are no hidden licenses that forbids this to happen, there will be no cost for the TCK if done by a non-profit organization, as there's no cost for Apache's Geronimo certification. And yes, there are ways of doing this in the open source way, in the open, with unfinished releases and many contributors form all over the world. Apache has proved this, we have to follow the lead. Java 5 implementations can be certified, for free, as open source. If you think this is not true, you have to read the JSPA and the Java License for the details. Or talk to me, or Dalibor (Kaffe), or Onno (JCP), or Geir (Apache), or...

It is possible, and doable, but that does not mean it is easy. But the great work that has been done in Kaffe, Classpath, SableVM, GCJ, Jikes and many other projects that are implementing the Java standards as open source are real proof that this can be accomplished. But its success depends in part of Java developers understanding that these projects are exciting and important projects, as much or even more then Tomcat, JBoss or Geronimo. If you downloaded and tried early versions of these Open Source implementations of server side Java, you should also try out the Open Source implementations of the JVM.

Now, is compatibility something that all Open Source developers want? Let's face it: no. Compatibility is hard, it means you have to implement things that no one uses, it means that you can't just go and do whatever you feel like. There are many half-done open source implementations of standards out there. There are even half-done proprietary implementations of standards, so this is not an Open Source thing! But the reverse is also true: there _are_ great, compatible, open source software out there! So, it is also not true that Open Source developers don't care about compatibility. I can vouch for the Kaffe, Classpath, GCJ, SableVM, Jikes developers that I know personally. They are committed to compatibility. They are so committed that before it was possible to have access to the TCK, they created their own "test suite" -- Mauve -- to try to achieve compatibility the hard way. James, how much more commitment can we have? How many companies have built their own test suites to guarantee Java compatibility? By putting effort in a private compatibility suite, maybe the open source community has something in common with Sun in regards to compatibility commitment? These are developers that have gone way out, to guarantee compatibility in a time when Sun would not provide any!

So, let's cut this short. Half trues from both sides do not help the discussion. Let's call things by their correct names. It is not "Java is/isn't Open Source" it should be the "X implementation of the Java Standard is/isn't Open Source". Let's not say "open source enough", lets apply the definition: it either is, or isn't! And stop saying that it isn't compatible because it is not possible to be. It is possible, we have to care about it.

And we do. I can't vouch for all open source developers, but Open Source Java Runtime developers do care about compatibility. So should you. Go run your application on top of a work-in-progress open source implementation. You'll be surprised with how much you can run on top of them today.

Now, to make this a worthy discussion to everybody, let me finish with another question. Can we have a license that guarantees compatibility in some way, and that still gives developer the freedom they need? That is, can we combine compatibility with open source? The fact that many say that compatibility cannot be in the license is one reason that makes people think that Open Source developers don't care about it. But if compatibility is important, if we care about it, can we agree to it somehow? It is really important? I think the JCP took a good approach, and it is working with Apache. I don't think it is perfect, and surely it is not enough.

Can we have a better way of handling compatibility? That do not take our freedom away? Freedom is always a compromise. Always. Would you compromise in behalf of compatibility? Why? Why not? And more important: how?

Related Topics >>