Andy Oliver discovered (or perhaps just reported) that the LGPL is, in essence, the same as the GPL when it comes to applications written in Java. In other words, if you use a library licensed under the LGPL in a Java application, you bear all the requirements of the GPL — releasing not only any changes to the library as free software but also any code that uses the library as well. Needless to say, this means that anybody using free libraries as part of a commercial product has to go back and make sure that they remove them in order to remain in compliance with the license, and if they’ve already released code that uses LGPL libraries, they’re probably in violation unless they go back and release the source code for those releases. Of course, I’m not a lawyer so I’m not sure if that’s true. In any case, this brings about a major point of confusion, and I imagine what it will lead to is a mass relicensing of LGPL libraries. I sympathize with the GPL, but this is why I find BSD-style licenses so much more practical. The viral nature of the GPL, for all the good it has wrought, is incompatible with many types and styles of development.

One popular library that I use that’s distributed under the LGPL is Hibernate. The Hibernate home page says, “The LGPL license is sufficiently flexible to allow the use of Hibernate in both open source and commercial projects (see the License FAQ for details).” Since that’s really not the case, I hope that Hibernate will change its licensing terms.