The Source for Java Technology Collaboration
User: Password:



Bruno F. Souza's Blog

Open Source Archives


What about focusing on the right discussions?

Posted by brunos on February 09, 2005 at 12:42 PM | Permalink | Comments (12)

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:

http://www.javalobby.org/forums/thread.jspa?messageID=91825170#91825170

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?



Open Source, Standards and Compatibility: Software Freedom, is this a valid concept?

Posted by brunos on May 31, 2004 at 01:22 AM | Permalink | Comments (3)

I have been discussing for a long time how only open source is not enough for Governments. Although open source is a strong point of freedom it allows you to end up tied to a product, what may be not as bad as being tied to a vendor, but may bring you the same types of problems, specially if you are the government. But this is true for companies also.

In November 2002, me and several others from the Java Users Society, a large Java User Group in Brazil, created a long manifesto (Portuguese only), that tried to look into the discussion on open source usage by the Brazilian Government, from the point of view of the software developed by the government, that needs to rely on Open Standards and focus to be Multiplatform. This later turned into a well reviewd article, that better explained the ideas, and even featured concrete examples of the problems that you may face when all you care about is open source. Unfortunately for the time being both of these discussions are in Portuguese. Trying to explain a long article in a few lines is not easy, but the central idea is simple: open source is very important to the government, and to do it right, the government would be better off if it developed it's own software using open source software that are based on standards, and by developing multiplatform software, as a way to minimize lock in, and as such, maximize government freedom to decide it's technological future.

Maximizing freedom is usually not easy, and some difficult strategic decisions must be made. In regards to open source, it may mean for example, that the government will not use software that runs only on windows, or only on Linux (or any single platform), no matter how much this particular product's license says it is open source.

After discussing with the government for so long, and after seeing most of this discussion accepted in some very important areas of the Brazilian Government, we learned that governments really need a broad guarantee of freedom. Their systems, applications, data and software in general have such a long life, and may have such a large impact on a country's future, that by comparison, vendors and products need to be looked at as temporary at best. Although we have defended this idea for the sake of the Brazilian Government, I think this applies to most governments, and also to most companies that somehow develop software internally: minimizing the lock in for the software you write, will pay off in the future.

Now, someone that has also be giving a lot of though about this discussions, has come up with a name for this broad guarantee of freedom: Software Freedom.

In his recent blog, Simon Phipps explains that Software Freedom is more then the freedom for developers (that is guaranteed by open source), it needs to also guarantee freedom for users (deployers) and vendors. Simon calls for a combination of open source, standards and compatibility to guarantee Software Freedom. Although he has named it, and written a kind of manifesto, I think that the Sincere Choice movement has similar views, although they do not mention certification explicitly as Simon does.

At first, this seems quite a task. How can you guarantee freedom to the developer, if you tie him with standards and compatibility requirements? How can you guarantee freedom for the deployer if you cannot restrict what developers can do? How you can innovate if you tie up your own hands trough standards? Hard questions. Can they be answered? Are those things so contradictory that we cannot guarantee all types of freedom at once?

In the Brazilian Government discussion, we are proposing ways to to that based on policies. That is, software developed by the government has to use standards if they are available, and if not, standards need to be either chosen or defined. It has to run in multiple platforms, no matter what technology or language you use to develop it. And open source implementations of those standards will be the ones that will provide greater freedom, and as such should be chosen if available. Is this enough? Probably not. But it is a good start.

From a first look, it seems that guaranteeing Software Freedom is not something that could be done by licenses only. And there are other important matters like Royalty Free standards and patents policies that would probably play a role in the discussion (but this would extend a lot this blog...).

I hope this idea is something that the community at large sees as important. I certainly agree with Simon and his Software Freedom Manifest, and from my experiences with government and companies, I agree that something must be done to guarantee other perspectives of freedom that not only the developer's freedom.

Of course, this has a large impact on Java.. The Java Community is largelly in favor of certification and compatibility, and this is said to be one of the main reasons why Sun refrains from releasing it's Java implementation as open source. Would Simon's blog be an indication that there can be ways of open sourcing Java that maintain compatibility? Can this be accepted by the open source community? Although I myself think that no matter what Sun does, we should create and support an open source implementation of Java, like a combination of Kaffe and Classpath for instance, I also do value compatibility more then "open source just to be open source". And I think that Simon's proposition could be one that we, as a joint Java-Open Source community, should look and discuss open minded.

Fortunatelly, Simon will be in Brazil this week for the 5th International Free Software Meeting, and I will have a premium chance to discuss with him this ideas. Hopefully, we can have an open discussion with both the free software community members and the Java community members present at this large event, and understand if this can lead us anywere.



Powered by
Movable Type 3.01D
 Feed java.net RSS Feeds