I used to love coming to the JavaOne conference in the spring. There was such energy, such hope. We'd queue up around the block for the opening keynote and walk in to the special JavaOne theme music or to a band that was brought in to play live. We'd be welcomed by John Gage. He'd set the stage. He'd tell a story. He'd move us smoothly from one element to another, stopping only to share something cool that he'd seen while wandering around the conference the day before.
Even then four keynotes seemed excessive. But they were all pretty geeky. Sure, there were exceptions. There was the one with Alan Baratz's daughter on stage reading a top-ten list. The one people still shake their heads over, though, is when Pat Sueltz yelled repeatedly at the audience, "you can make money with Java!" in a Steve Ballmer sort of way. For some reason, Magic Johnson was also on stage during her performance, shooting baskets and talking about his chain of movie theaters.
Ahhh, the good old days. The days when people cared. The days when the audience got all charged up and burst out of the keynote ready to change the world. This year's General Sessions failed to inspire me in any way. It could be that Java is older. It could be that I'm older. It could be that this was my tenth JavaOne. Then again, it could be that there were absolutely no new announcements. None. Well, maybe I should take that back. There was some news, but Sun just doesn't know how to tell a good story.
Depending on which numbers you read, somewhere between 15,000 and 20,000 developers came to this year's JavaOne. Many of them got up early on Tuesday and came down to the Moscone Center in time to hear the opening General Session. A proverbial sea of people looked up at Sun's newly named CEO Jonathan Schwartz and even more recently named software chief Rich Green. Guys: the thousands of people in the audience have come to your conference. Accounting for food, travel, and admission, they have each paid $2,000 or more to attend. This is your audience--it takes so little to send them off full of enthusiasm for this platform on which they all depend. Tell these people a story. Paint a picture. Fire them up.
The story they chose to tell was about Open Source. A successful story needs some element of conflict and resolution. In the good old days, Scott McNealy used to take on Microsoft as the embodiment of evil. He'd throw in plenty of shots at other companies, but you knew that Microsoft was wearing the black hat. More recently, under Schwartz, the guys in the black hat were actually wearing red hats. At this year's JavaOne opening session, Schwartz did not call out Red Hat by name, but they were there every time he mentioned Ubuntu.
When you tell a tale of Open Source you need to consider your audience. There is little you can say to convince hard line Open Source folks that Java is or will be open in any meaningful way. This portion of your audience will ignore your marketing and FAQs, and instead will study the license and measure it against their needs and expectations. Then there are members of your audience who embrace the whole compatibility argument. They are suspicious of Open Source; you lose them as soon as you open up the code base. They would rather become a .Net shop than have to worry about all of the issues that confront Open Source users. What keeps them in the tent as Java developers is that they don't believe Sun is really ever going to Open Source Java. If Sun had wanted to, these people reason, they could have done so years ago.
As with most issues, most of the audience is smack-dab in the middle. It would be nice to open source Java but that's not an issue that keeps them up at night. They don't understand, or just can't bring themselves to care enough about, the technical objections that the Open Source zealots raise against everything Sun tries to do. This portion of the audience uses enough open source code that they aren't afraid of it. This group doesn't contribute very often to the code base; maybe they file bug reports and check in now and then to see what the code base status is. They hear the rumors before every JavaOne that Java is going to be open sourced and they nod and say, "cool." JavaOne comes and goes and Java is still not open sourced and this group nods again and says, "oh, well."
Schwartz and Green stay on message at the keynote and the press conference that follows. They reiterate that the question of open sourcing Java is not one of whether it's going to happen, but how it will happen. Schwartz goes to great pains to demonstrate that he is serious. He points to the benefits that Sun has reaped from opening up Solaris. Not only have they had millions of free downloads, but they've also made more money off of Solaris than ever before. Of course there are differences between opening up Solaris and Java. Consider, for example, IBM, BEA, and a handful of handset manufacturers. The Java ecosystem doesn't center on Sun in quite the same way that the world of Solaris does. All that aside, it appears that Schwartz genuinely believes in the economic benefits of opening up Java.
The Open Source folks hear that it's no longer a question of whether and barely blink. For them it's always been about "how." If Sun doesn't open up Java under the right license, they grumble, why bother opening up Java at all?
For the last year or so, Simon Phipps and others at Sun have given talks stressing Sun's history of opening up code and how deeply ingrained Open Source is in Sun's culture. A recurring theme is that there is no need for any more licenses. They agree with others in the open source community that there is an over-proliferation of licenses. Why then, you might ask, was there a need for CDDL (Common Development and Distribution License)? Ahhh, they answer, that was different. We needed just a few changes from the Mozilla Public License on which it was based. But, that's it. We promise. There's no need for anyone to create any more licenses.
And then it came time to relicense Java in such a way that it could be included in Linux distros such as Ubuntu. It seems that there wasn't an existing license that would cover this case and so Sun has created yet another license. The DLJ is the Operating System Distributor License for Java. Sure, it's a binary distribution license and not a source license. But, it is another license that a Java developer has to parse and understand.
You can see the positive and negative side of this action in a post from BEA's Henrik Stahl: JROCKIT and the DLJ License. He writes, "JRockit has long had a very liberal end-user license. Part of the license has been written specifically to facilitate bundling JRockit with 3rd party software, including Linux distributions. However, there have been some limits on we could do based on our own license agreement with Sun. Our legal department is now reviewing Sun's new DLJ license to see if we can use it to make our own license even more flexible."
The good news: the new DLJ seems to be better than the existing license under which Java operates, which can have a ripple effect that would allow other licenses to relax restrictions that are only in place to enforce the more stringent requirements. The bad: lawyers everywhere are required to figure out what this new license means. A new license always leads to billable hours. The Jini community heard this message loud and clear and changed to an Apache license. Community members said that no matter how good the Jini license was, they were not going to be able to get the lawyers at their company to spend time figuring out all of the implications of another license.
In Phipps' post JDK on GNU/Linux: Something Wonderful, he describes the benefits of the DLJ and reports that it's been endorsed by Ubuntu, Debian, Novell, Nexenta, Belenix, and Schillix. Read down to the comments and you will see that they are polite and largely positive. Several readers have posted possible issues in the license. The key questions center on the indemnification clause and the restrictions on distribution "with any additional software that implements the same or similar functionality."
Returning to the topic of this section, it is clear that the "how" matters very much. The license under which Java is ultimately released is not a small issue. Jim Hurley and Bob Scheifler gave a very thoughtful presentation on the options for licenses when the Jini community was shopping for a new one. The issues for Java as a whole are more complicated, but you'll find these options laid out clearly in A Look Towards Open Source.
Sam Ruby has a variation on the Schwartz/Green theme in his post Cooperate on Standards, in which he says, "The question isn't whether there will be a fully-compatible implementation of J2SE 5.0 under an OSI license in two or three JavaOne's from now; but rather one of how many, fully-compatible, implementations of J2SE 5.0, under an OSI license, there will be; and whether any of them will be ready by the next JavaOne."
Danese Cooper kicked off a volatile thread with her post What Sun Doesn't Want You To Know About Java and Open Source. Cooper reports that the Harmony Project's announcement that it has full support for Swing/AWT has caught Sun off guard. She says that "Sun's compatibility rules for the Java language have long included a 'gotcha' in the form of a chunk of code for user interface, for which there are no compatibility tests (SWING/AWT)." Apple has their own implementation of Swing and now, it seems, so does Harmony. Cooper says that open sourcing Java has been discussed inside of Sun for the past half-dozen years and that when Sun says they need to figure out how to deal with compatibility, "they are simply being disingenuous. What they really mean is 'How can we placate the FOSS community without giving up control?'"
So is that the "why"? Is it important to placate the FOSS community? If Harmony is getting closer to being an open source implementation of Java outside of Sun's control, does that induce Sun to move more or less quickly toward figuring out how to open source Java?
For what it's worth, I give Phipps a lot of credit for having the class to link to those who have issues with the DLJ and to leave comments open on his post to allow further discussion and dissent. I don't think there are bad people on each side. There are people who are mostly friends who just disagree.
In Discussion breaking out about Java and Open Source, Bob Sutor reminds us that "promises aren't news." He sees Java's steps toward open source as being similar to "someone who keeps taking half steps toward a goal. First half a step, then half of that, and so on. The direction looks good, it looks like they're getting closer, but they don't actually reach the destination. I hope that doesn't happen here."
In the General Session and in the press conference that followed, Jeff Jackson, Sun SVP of engineering, showed that open source is bursting out all over when it comes to Java APIs. This includes the Enterprise stack as well as many desktop projects. Jackson repeated his call to action to get the community involved in the code. He pointed out that the Mustang development has been exposed to all who are interested with weekly builds and public discussions. It's not open source, but much of the work on the source has been done in the open. He stressed the contributions from non-Sun employees that made it back to the code base.
As Jackson, Schwartz, and Green faced question after question about open source, it seemed that one of them would burst out and say "what more do you people want?" They, of course, stayed on topic and had to answer as many questions about Sun's fiscal plans as they did about open sourcing Java. It was a reminder to the members of the media in the audience of the balance that Sun needs to achieve.
If there was no concrete announcement that Java was being open sourced in a definite time frame following some easily explained plan, then why bring it up at all? Where is the news in that? And in the absence of any real news, where was the meat of the opening General Session? It should have been in the demos. With the exception of the Aerith demo, the applications chosen to enthuse the JavaOne audience were fairly uninspiring.
Before a word came out of Schwartz or Green's mouth, someone should have been showing off Aerith. It's what Swing demos should have looked like eight years ago. It shows that Java can mash up web services with the best of them. As for the other demos, instead of leading the way, Java is now an "oh, we can do what AJAX can do too" technology. Instead of unleashing imagination and capturing developers, the AJAX demo showed nothing that seemed particular to Java.
Finally, I have very good eyes and a fairly good attention span. But when you have developers on stage typing code in a font too small to see, without making it clear what they are doing and where they are heading, you are not meeting anybody's needs. Once you have chosen the demos for next year's keynote, ask "WWJD--What would Jobs Do?" If Steve Jobs wouldn't let these demos on stage in the state they're in, then neither should Sun. Every demo has to pop. It has to offer something special. It has to fire me up.
That brings me to my final small complaint about opening day. Let's assume that you manage to fire up folks and get them excited. More charitably, let's assume that you aren't able to entirely dampen the enthusiasm they entered with. Schedule the show floor to open directly following the keynote. Keeping attendees in the hall outside the expo floor after the keynote or other sessions is a wasted opportunity.
Believe it or not, despite this curmudgeonly report, I really enjoyed the show this year. I met with authors, coworkers, friends, and other developers. Even though it moves around a bit, JavaOne provides a natural break in the year. There are people I talk to at every JavaOne. I heard about the year that we're ending and the one we're beginning. Next year we need more technical sessions and many more BoFs. We could do with fewer General Sessions. The small subconference going on at the java.net booth was a blast--great speakers and fantastic hallway conversations. We'll do that again next year.
Where will we be a year from now when we head to Moscone for next year's JavaOne? Will Java be open sourced and if so, by whom? Will we see more than 20,000 developers crowd the halls? As we gain experience with Mustang and head for Dolphin, what will we want and expect from this platform and who will be providing the innovation and leadership?
Daniel H. Steinberg is the editor for the new series of Mac Developer titles for the Pragmatic Programmers. He writes feature articles for Apple's ADC web site and is a regular contributor to Mac Devcenter. He has presented at Apple's Worldwide Developer Conference, MacWorld, MacHack and other Mac developer conferences.
Return to ONJava.com.
Copyright © 2009 O'Reilly Media, Inc.