Wednesday, July 15, 2009

Using small Java commercially: bring your checkbook

For the last decade I have been a strong supporter of Java. And still am, especially on small embedded system devices. My company (Systronix) has been a developer of such devices (TStik, JStamp, JStik) for about 10 years - back when embedded Java first became possible and practical. Read my "Why Java" page and download the white paper for more details about that. I'm grateful for many opportunities to speak at JavaOne, Embedded Systems Conference, and other venues. I've personally written a fair amount of embedded Java code on hardware from a variety of vendors. Employed appropriately (don't pound in screws with a hammer and then blame the hammer for doing a crappy job) Java can have huge benefits over languages such as C.

I have enjoyed personal and professional relationships with a lot of great folks at Sun for many years. All of this is to say that the point of this rant is not to bash Sun or Java, but to plead for Sun to wake up to the realities of 2009 and stop missing opportunities.

We are living in the time of Open-Sourcing of Almost Everything. Attorneys get paid to write open-source license agreements, too, and there's a reason you don't get a law degree in nine months of online courses. The devil is in the Fine Print. And: don't make the obvious/common mistake of equating "open source" with "free to use as I please". Enough preliminaries.

So: is Java open sourced? Yes. Can it be freely used? In a commercial product? Can you call your product - which includes your deployment of open source Java - "Java"? It depends. JavaME, PhoneME, and Squawk all lack the so-called "classpath exception" (GNU explanation) (Sun Open JDK example) with which other editions of Java are licensed. In general, as I understand it, this means that you either must also freely open source all the software you "bundle" or "link with" with these no-classpath-exception-products, or you must negotiate a commercial license with Sun. Commercial licenses typical start around $100,000 per year, plus royalties on each device shipped) for Java ME. That's for a small company with less than a $1M per year in revenue. Larger companies can expect to pay a lot more. If you are shipping Java on a cell phone and will be shipping millions of units, maybe you get a better deal.

But here we are concerned with the Little Guy trying to launch an innovative product. There are many reasons Little Guy, Inc would want to use a widely supported development platform like Java.

Even if you do want to open source all your code (like Bug Labs), if you want to use the name "Java", you must test your conformance. How do you do that? With a Technology Compatibility Kit (TCK) which is only available from Sun, and only as part of a commercial license. "Huh?" you might be thinking.

Here's an example. Bug Labs got surprised by this in 2007 when they found out late in their development that they needed a commercial license for their use of open-source Java, even though they were open-sourcing all their Java-based software. See this blog for some discussion of the path they took as a result.

Today it's hard to sell a word processor for $500 when you can get a great one for free. Electronic CAD tools which were $12,000 two years ago are now selling for $4000. IrDA stacks once sold for $250,000. TCP/IP stacks were commonly $10K or more. Now that all seems pretty laughable. It also seems like vendors of such products have a lot harder time making money the way they used to.

So why does Sun seem to be stuck in the 1990s?

Imagine what could happen if every small company nearly free or affordable access to important software such as an operating system, a modern IDE, or a smartphone platform? Oops - they can... and none of these are Sun products.

Sun used to be four guys with some interesting ideas. They went on to change the world. If those four guys were starting over today, what would they think about licensing Java from Sun?

No comments:

Post a Comment