Home > Articles > Programming

  • Print
  • + Share This
This chapter is from the book

The LGPL Alternative

Originally called the Library GPL, this special version of the GPL directly addresses the linking question. It is now called the Lesser General Public License, or LGPL for short. Advisory text at the end of the published GPL license (but not one of its terms and conditions) encourages the use of the LGPL for certain applications:

If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. (GPL, "How to Apply These Terms to Your New Programs" following GPL Terms and Conditions.)

The LGPL is an important, widely used open source license in its own right. The complete text of the terms and conditions of that license, leaving out the extraneous preamble and postscripts, is shown in the Appendices.

The LGPL is for the distribution of software libraries.

A "library" means a collection of software functions and/or data prepared so as to be conveniently linked with application programs ... to form executables. (LGPL section 0.)

This definition suggests that a library is designed with a goal in mind: It is "to be conveniently linked with application programs to form executables." The important characteristics of a library are not the form of linkage used by the members of that collection, nor the specific functions and/or data that are prepared. The LGPL is, after all, a general purpose license intended for adoption by software in many technological forms.

Here is how that same definition might be rephrased in copyright law terms: A "Library" is an original work of authorship that is intended to be incorporated into other works through some form of linkage.

The LGPL then grants a license for the Library to be used in its intended way:

The act of running a program using the Library is not restricted.... (LGPL section 0.)

The LGPL repeats this same point a second time:

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. (LGPL section 5.)

Both license grants are consistent with copyright law, of course, and nobody could reasonably suggest that mere invocation of a Library, however the linkage takes place, is a derivative work.

Modifications of a Library itself, of course, are derivative works, subject to the LGPL's reciprocity provision, just as modifications to any Program are subject to the GPL's reciprocity provision when you distribute those modifications:

You must cause the whole of the work to be licensed at no charge to all third parties under the terms of this License. (LGPL section 2[c].)

Two other requirements from LGPL section 2, however, are not so clear:

The modified work must itself be a software library. (LGPL section 2[a].)

Is this a definition or a requirement? How is it to be satisfied by a diligent licensee? And later:

If a facility in the modified Library refers to a function or a table of data to be supplied by an application program that uses the facility, other than as an argument passed when the facility is invoked, then you must make a good faith effort to ensure that, in the event an application does not supply such function or table, the facility still operates, and performs whatever part of its purpose remains meaningful. (For example, a function in a library to compute square roots has a purpose that is entirely well-defined independent of the application. Therefore, Subsection 2[d] requires that any application-supplied function or table used by this function must be optional: if the application does not supply it, the square root function must still compute square roots.) (LGPL section 2[d].)

And still later:

If such an object file uses only numerical parameters, data structure layouts and accessors, and small macros and small inline functions (ten lines or less in length), then the use of the object file is unrestricted, regardless of whether it is legally a derivative work. (Executables containing this object code plus portions of the Library will still fall under Section 6.)

Otherwise, if the work is a derivative of the Library, you may distribute the object code for the work under the terms of Section 6. Any executables containing that work also fall under Section 6, whether or not they are linked directly with the Library itself. (LGPL section 5.)

These sections of the LGPL are an impenetrable maze of technological babble. They should not be in a general-purpose software license. The LGPL even concedes that "the threshold for this to be true is not precisely defined by law." (LGPL section 5.) A licensee under these provisions won't have a clue how extensive his or her good faith efforts must be when creating a derivative work in accordance with sections 2(d) and 5 of the LGPL.

In any event, a careful comparison of the text of the GPL and LGPL licenses (far too detailed and specific to attempt here) reveals that, if the process of adding or deleting library functions creates a derivative work of the Library, then the LGPL functions identically to the GPL.

The LGPL concedes that the GPL is a better, more appropriate license, and it allows any licensees to convert to the GPL at their option:

You may opt to apply the terms of the ordinary GNU General Public License instead of this License to a given copy of the Library. To do this, you must alter all the notices that refer to this License, so that they refer to the ordinary GNU General Public License, version 2, instead of to this License. (If a newer version than version 2 of the ordinary GNU General Public License has appeared, then you can specify that version instead if you wish.) Do not make any other change in these notices.

Once this change is made in a given copy, it is irreversible for that copy, so the ordinary GNU General Public License applies to all subsequent copies and derivative works made from that copy.

This option is useful when you wish to copy part of the code of the Library into a program that is not a library. (LGPL section 3.)

The LGPL, therefore, is an anomaly—a hybrid license intended to address a complex issue about program linking and derivative works. It doesn't solve that problem but merely directs us back to the main event, the GPL license itself.

  • + Share This
  • 🔖 Save To Your Account