Sunday, May 18, 2008

Dual License a LGPL Project

I have recently been approached with a request for a commercial license for one of my open source projects. The project is called OAT (the Optimization Algorithm Toolkit), and provides a set of computational intelligence algorithms as an API, a snappy explorer interface, and an interface for designing, executing and analysing experiments. The project was released under the GNU GPL, and more recently is licensed under the GNU LGPL.

Firstly, my research reveals that this is a valid thing to do as long as I am the sole owner of the project, which I am. It is referred to as Commercial Open Source, and licensing scheme is referred to as dual-licensing. The Economics of Commercial Open Source was an interesting read, and I found this article on LGPL and Java particularly useful.

The library/software is written in Java and the current version (1.4) is available under the LGPL. I changed to the LGPL from the GPL with version 1.4 as it permits commercial use (linking) and distribution without having to release proprietary code under the same license, unlike the GPL.

Ripped from the LGPL Wikipedia entry:

A program that contains no derivative of any portion of the Library, but is designed to work with the Library by being compiled or linked with it, is called a "work that uses the Library". Such a work, in isolation, is not a derivative work of the Library, and therefore falls outside the scope of this License.
One must only release the source to proprietary code in the case of derivative works, which involves changing code in the library, not dynamic linking (such as inheritence in Java).

A quote from The LGPL and Java:
The LGPL contains no special provisions for inheritance, because none are needed. Inheritance creates derivative works in the same way as traditional linking, and the LGPL permits this type of derivative work in the same way as it permits ordinary function calls.
An important considerations (as I understand it), is that the license is only activated when the product is distributed, meaning that usage in proprietary web service applications is legal, even if they are derivative works! (?). I need to verify this!

An important consideration in taking this step are the open source and non-commercial libraries used the project. My approach involves releasing the next version (1.5) as three modules, each with their own LGPL license. The core module would be standalone, permitting the dual licensing scheme for commercial use. The remaining two modules would provide the explorer and experimenter functionality, drawing on graphing and statistics libraries that could not be released under a commercial license.

1 comments:

Patrick said...

I think you're right about web applications and the GPL. If you don't distribute the software, and simply use it in-house for commercial purposes, you don't need to release the source code.

The Affero GPL includes a "network use" clause to avoid this "loophole". More on Wikipedia: http://en.wikipedia.org/wiki/AGPL .