2
Open Source Java In An IBM+Sun World

(Just a reminder – I’m no longer at Sun.)

There is a heckuva big investment in Java software across the IT industry, and so it is interesting to think about where this platform might go if Sun, the inventor and “steward” of Java, gets swallowed by IBM, the company that has made the most money on Java over the years.

IBM has bet a big piece of its software strategy on Java. A long-term licensee, IBM has been a leader in the JCP, built and then contributed to open source the most popular Java IDE (Eclipse), has long marketed one of the leading Java-based middleware product lines (WebSphere), and builds lots of well-regarded Java plumbing, including virtual machines, Java EE implementations, tools and embedded versions – the works. Even as IBM and Sun have cooperated in promoting and advancing the Java platform, they’ve competed on implementations and have at times not seen eye to eye on where the Java standard should go, and how the platform should be governed.

Sun’s software strategy over the past few years has been to intensively open source its marquee software platforms, including Solaris, and Java, in order to drive platform adoption by developers. Sun’s FOSS platforms are free as in – zero cost to acquire, and Free – as in, built by a community of developers and licensed to eliminate proprietary lock-in. The hope is that developers, and the enterprises they work for, will adopt Sun technology as the plumbing on which they build their critical business applications and processes if acquisition cost is zero, and their investment in time and effort are protected. Once ready to deploy, some fraction of these customers may choose to buy support. Oh… and gear to run it on – software DOES still require a computer to run it, even in the cloud.

All of this is spelled out in Jonathan Schwartz’s blog, and is party line and marketing message. But there’s a bit of subtlety that isn’t apparent until you actually try to use the FOSS Java code, especially in embedded applications. Sun has done well over the years licensing its Java ME software to those building devices. The company has a legitimate business interest in maintaining these significant licensing revenues (pdf – see pg. 6). The GPLv2 license without the Classpath exception, chosen for Java ME can be impractical for an embedded device maker to use, as it includes a “copyleft” provision requiring that modifications to the code, or other code linked to the GPL code must also be published as source code, under the GPL license. So, the recipe to any “secret sauce” must be freely available under the GPL. Hardly something that excites a handset maker, for example. Why not use Java SE then – since smartphones and other advanced devices have the power to handle it? Not so fast! There are some even more mind-bendingly complicated licensing issues for Java SE that riled up the Apache Software Foundation, related to this embedded device revenue. Ever wonder why Google’s open source Android platform – which looks startlingly similar to Java SE in many respects, is nonetheless not based on Sun’s open source code, but rather on Apache’s Harmony project? One can speculate…

IBM approaches open source platforms differently. Rather than monetizing open source only by selling support for deployers, or by choosing licenses that drive commercial licensees to keep paying, IBM distributes FOSS code that comes from elsewhere – often non-profit foundations such as the Apache Software Foundation – but licensed in such a way that IBM can bundle proprietary extensions with the FOSS code. This lets IBM add value, create something unique, and yet leverage the open source development model and the momentum of FOSS adoption for the bulk of the code they ship. Good idea! Get the benefits, and still sell stuff and make money. This approach doesn’t annoy licensees, and keeps communities happy and burnishes IBM’s FOSS credibility by contributing to independent FOSS projects. Seems to work for them too.

What would Java look like, if it was ideally suited for IBM to profit from it, using the same approach? Maybe IBM would donate Java to ASF, making it an Apache project. Or donate it to Eclipse? Perhaps they might spin it off as part of a “Java Foundation” or something equivalent, licensed under the ASL, or perhaps the EPL – the Eclipse Public License. It is interesting to think about the role of the JCP if Java were to become a code base built within a non-profit foundation, rather than controlled by a corporation as it has been with Sun. Would the JCP even be needed anymore, and if so, who would pay for platform JSRs? How much code, and staff, would IBM contribute to help the platform evolve? What commercial extensions could IBM sell? What would embedded Java look like as an IBM product? Would Google still need Android as a separate code base? Or could they adopt “real” Java under such conditions? Could IBM unify the fractured Java ME ecosystem?

IBM is much less of a charity than Sun. Perhaps that is why they’re making money and Sun is shopping for a suitor. But under IBM, it seems to me that Java is likely to remain FOSS, under a very liberal license – arguably even more liberal than GPLv2. Of course the existing code will always be available under GPLv2 as well.

Would IBM be a good steward of Java? What do you think?

Continue Reading