Wednesday, June 28, 2006

Open Source Java; What does this mean?

I was at JavaOne earlier this year, when Jonathan Swartz asked whether Java would be open sourced. The following revelation that Java would be open sourced, and that it was not a matter of whether anymore, but a matter of how.

This was the buzz of the first day, and I have continued to watch this unfold. Recently, I read some stories that said that Sun would be ready to open source Java in months. Now, this is a pretty broad declaration, and they could go as long as 11 months, without having to retract that statement, but still, they seem to be moving down the track as they said they would.

What does this really mean for all of us involved with Java?

I have always been a proponent of the open sourcing of Java. My main complaint has always been that certain JVM bugs just never get fixed. I would love to have the "freedom", and be empowered to fix those bugs in an completely open process. There have been many studies and comparisons of the quality, in terms of defect density, between closed source and open source software. All of them draw the same conclusions. Open source software has less defects, and is more reliable then closed source software. It's pretty simple. I want less defects, and a more reliable virtual machine, and we will get that via the open source development model.

Are there other benefits to this?

I once heard Bill Joy, former Sun employee and co-founder, say that innovation happens out there. What he meant by that, at least my interpretation, is that companies cannot be insular, and they have to realize that innovation happens in the broader market, and one company, no matter how big, can innovate solely on their own. With that in mind, opening up Java to the world, can only create additional innovation in and around the Java platform.

In fact, I believe it will accelerate the delivery of innovation for the Java platform in a way that cannot even be fully understood today. Only many years down the road, will we be able to look backward and realize the monumental changes that came from this.

I am really hopeful about the open sourcing of Java, and its benefits to all of us that use it and depend on it. I only hope that months, is really just a few short months time. The sooner the better!

Monday, June 19, 2006

Are Users Part of the Open Source Community?

Recently, I have read a number of blogs and articles that make the assertion that users of open source software are not necessarily part of the open source community. They only count contributors as part of the community. To some extent, that can be true, but in others I don't believe that it is fair.

To the extent that users are individuals that put the software to good use, but never do anything, like submit a bug report, or help other users, then I would agree they are not part of the community. Of course, without users, then what is the purpose of the software to begin with? For any open source project to be successful, it must first and foremost, be useful, and therefore must attract users. This, in and of itself, makes users the single most important factor for an open source project.

From a best practice perspective, we all know that small development teams are the most productive, and there is a practical limit to the number of people who can contribute from a code perspective anyway. At least productively contribute to the code. Practically speaking, this means that to have a large scale community for an open source project, the vast majority of people involved in the project must be users.

Also, contribution shouldn't be viewed threw the limited lens of code contribution. There is testing, translations, documentation, answering other users questions, sharing your user experiences with other potential users, etc. These are all valuable contributions!

I contend that large numbers of users, are contributors to the open source projects they use. Even if they never write, or are incapable of writing, a line of code. In fact, they are the most important contributors, and shouldn't be viewed as someone outside "the community" of open source projects.

Tuesday, June 13, 2006

JBoss Seam!

With the release of JBoss Seam 1.0 this week, I thought it would be interesting to give a high level overview of what Seam is.

First, let me say that I believe Seam will be a huge step forward for developer productivity! Everyone that is thinking about, or toying with things like Ruby on Rails, or Spring, should stop and take a long look at Seam. Why do I say this?

Well, when you consider that the Java programming models have been too complex, and the realization of that has brought us some really innovative new technology, such as EJB 3. There is some very good UI technology in JSF and Facelets in particular (don't do JSP anymore). There are other very useful Java tools, such as jBPM for business process management, but nothing brings all of this together.

That's what Seam does. It unifies all of these great techologies in a seamless programming model, that is really compelling. Seam let's you take advantage of the fact that EJB 3 entities are just POJO's, and that they are detached objects, that can be used anywhere in an application. In fact, Seam let's you use EJB 3 entities as the backing bean in a JSF UI! But this is just scratching the surface.

Seam not only let's you program with a single model, but also integrates business process management. When you consider that all business applications are automated business processes to begin with, a business process management tool, like jBPM, is a natural fit for any and all applications. Seam allows you to use business process management, and in Seam's case, jBPM specifically, without having to be a BPM wizard. In fact, many things can be done without writing a line of jBPM code!

Besides, BPM integration, Seam also integrates AJAX style programming, with a Seam remoting capability, that allows JavaScript to call EJB components (stateless/stateful session beans, and message driven beans & pojo's) directly! This is powerful!!

When you couple these attributes, a single programmer model that eliminates all the glue code from your presentation layer, everything is a POJO, AJAX integration through JSF components and the Seam remoting capabilities, and finally some tooling with Eclipse that can code generate a fully working Seam application from your database schema, what are you waiting for? Oh, and all of this will become a Java standard through the JCP process. Gavin was able to get a JSR submitted and approved, called WebBeans, that will make this a standard (JSR 299).

Download some of the sample applications off of the JBoss website, along with the code for Seam 1.0, and I think you will be impressed.