Tuesday Apr 07, 2009


CDDL  (Common Development and Distribution License) is an OSI approved, Open Source license. CDDL builds on the Mozilla Public License (MPL). CDDL follows file based licensing which means that files derived from commons must use the same license, while files added may use any license. Similarly, changes made to sources licensed under CDDL are expected to be shared, any new files need not be made public.

In terms of patent grant, CDDL provides explicit patent license which would make it easier for businesses to use the software without worries around patents. There is also a provision to discourage patent litigation also referred to as the “patent peace” provision which is about termination of rights in response to patent claims. If anyone initiates a patent claim that involves CDDL software, all rights which they have received to the software from everyone in the community is terminated.

CDDL is flexible in that it allows mixing of CDDL open source files with files licensed differently, including proprietary source files. This flexibility allows licensing new IP created in new files differently and even with a non-open source license. This could be useful in situations where we have third party code that cannot be open sourced and should remain proprietary or we wish to work with the open source base and build some custom extensions.

Friday Apr 03, 2009

Some notes on the GPL vs LGPL licensing. For a detailed look at the individual licenses, visit the GNU website.

When a GPL licensed library is used along with a program that is under a proprietary or non-GPL license, the combined entity (program plus library) would be considered as a derivative work. If this combined entity is distributed under a non-GPL or proprietary license, it would be a violation of the GPL. Essentially, when a program is linked with a library (under GPL) either statically or otherwise, the combination is expected to follow the terms of the GPL.

The LGPL is more permissive with regard to linking code with the library and is normally used to permit linking libraries licensed under the LGPL with proprietary and non-free programs. Per GNU, “using the LGPL permits use of library in proprietary programs; using the ordinary GPL for a library makes it available only for free programs”

With the LGPL, there is the distinction between a derivative product that is based on the library vs work that links to the library or the library being used by a program. In the former case of being a derivative work, the similar set of rules as imposed by the GPL would apply. Moving across licenses (LGPL to GPL) is allowed. For example, a library licensed under LGPL may have its licensing changed to GPL.  The reverse is however not permitted.

Generally, you would want to go with the LGPL when you wish to promote and enable wide adoption of your library. For this to happen, you would want to permit non-free and proprietary programs to also use it besides the free programs. Also, when you wish to provide your library as a viable alternative to an existing commercially licensed component which would be the case when your free library is a reasonable substitute for available commercial components.