Wednesday, March 9, 2011

Language ambiguities and open source licensing

A discussion such as this one is the sort of thing that makes organizations run away in horror from open source software projects.

I've met a number of the people in this discussion, and they are genuinely trying to work within the framework provided to them by legal and social obligations, but the struggle to adhere to those rules is vividly apparent in the discussion.

Any time you take plain old ordinary Java engineers, and ask them what "implements" means, disaster awaits, for you may find yourself in a debate such as this:

Part of the confusion here is over the use of the word "implements" in the Java language vs. the use of the word "implements" in the Java compatibility rules. These two uses do *not* have the same meaning.

And if you tell those engineers that "compatible" does not have to do with "compatibility", they will just stare at you, aghast, when you write:

A JDBC device driver that meets certain additional requirements may be labeled as JDBC 4.0 compatible, but it's not required that all drivers do that, and such requirements have nothing to do with the Java compatibility requirements in the JDBC spec license.

As best I can understand it, the underlying issue is whether code which implements an interface defined in a JCP specification is or is not an implementation of the specification, and what it means to state, publically, that your software is or is not "compatible" and does or does not "implement" a JSR.

The Apache Software Foundation has a page which tries to explain how they see some of these issues. The important sentence is:

Projects are free to implement whatever JSR a project community desires, as long the specification license that you agree to allows open source implementations.

The Apache site also includes this related set of explanations on their JCP FAQ, including dense sections of jargon such as:

The JSPA requires expert group members to license their necessary IP to the spec lead, who in turn is obligated to license all necessary IP to any compatible implementation that passes the TCK.

Why look! It's those words again! "Compatible implementation"...


It's frustrating to watch these sorts of discussions, and I feel powerless to understand what the real problem is and how to solve it. What I do know, however, is that nowadays this sort of thing is everywhere; you don't have to look very far to see immense amounts of effort being consumed in arguing over these sorts of licensing and intellectual property ownership details; couldn't we be putting that effort to more productive use?

1 comment:

  1. Time to remember an old saw:

    "First thing we do is kill all the lawyers."