Gnu Lesser General Public License

The GNU Lesser General Public License is the CopyLeft, but unlike the regular GnuGeneralPublicLicense, the LGPL permits the use of licensed code in proprietary programs.

The LGPL is available at http://www.gnu.org/copyleft/lesser.html.

RichardStallman feels that true-believers of FreeSoftware should use the LGPL only in a very few situations. He takes this stance in an essay at http://www.gnu.org/philosophy/why-not-lgpl.html, which is worth the read even if it doesn't change your mind.

Others feel that true-believers of FreeSoftware should use the LGPL where ever appropriate, but especially on libraries for which copyleft protection is desired. Attempting to enforce the derivative-work clauses of the GPL on an aggregate work into which a stand-alone library is linked comes dangerously close to enforcing a copyright on an API or user interface.


Questions

  1. What in the world are they saying in the following: However, linking a "work that uses the Library" with the Library creates an executable that is a derivative of the Library (because it contains portions of the Library), rather than a "work that uses the library".
    • Look at the paragraph before that text. A "work that uses the Library" means something that likes to be used in conjunction with the Library but doesn't actually contain any of the Library's code. If you link that with the Library, then the result is more than just a "work that uses the Library" because now it contains code from the Library, and the copyright holder of the Library has some rights over it. In other words, it's a "derivative work". The LGPL doesn't restrict what you can do with a "work that uses the Library". It can't. But it does restrict what you can do with a work that's derivative on the Library.

How does this work when it's a dynamically-linked library?

How would this relate to a Java program that uses an external jar? Does this count as linking if I need the external jar to compile/run? What if I distribute my application with the external jar in a zip or rpm?

RichardStallman's position is that a dynamically-linked library is no different from a statically-linked library in regard to how the GPL or LGPL covers it. All code that must be loaded together at run-time in the same process constitutes a single "work", and so all the pieces must have compatible licensing terms for the work as a whole to be used legally. (If components communicate via an InterProcessCommunication facility, then they do not constitute a single work.)

Of course, many people disagree with Stallman's position, because it seems to represent a rather narrow and archaic view of what "linking" is. The GPL was created back when statically-linked libraries were the most common means of library usage, and includes no special provisions for dynamic linking. Supposedly, future versions of the GPL and LGPL will improve this situation.


It should be noted that the law (both statute and case law) in various countries, and not Stallman, get to decide what constitutes a derived work in software. Just because RMS says that programs which use a library are derived works of said library, doesn't make it so. Congress, or a judge (in absence of specific direction from Congerss) might decide differently.

One argument against counting dynamic linking as a derived work is the problem of substitutability. I have a program X which links dynamically against any library which implements an interface Y. There are three libraries implementing Y which a user/distro might care to install; one of which is GPLd, one which is BSDd, one which is proprietary. Is my program X, as I distribute it, a derived work of any of them? Does an end-user who executes X create a new derived work, based on X and whatever version of Y is installed on his/her system? Is it a copyright violation for a user to run programs which link to an implementation of Y contrary to the wishes/license with which Y is distributed? (MicroSoft has quite a few DLLs which contain the EULA provision that executables that link to them may only run on Windows--in other words, use of the DLLs under Wine or some other environment, even if the DLL is legitimately purchased, is a no-no. Is this enforceable?)


CategoryExternalLink GnuGeneralPublicLicense


EditText of this page (last edited September 4, 2003) or FindPage with title or text search