Chapter 11
LGPLv3

LGPLv3 was designed to rectify architectural flaws in the GNU family of licenses. Historically , LGPLv2.1 was a textual modification of GPLv2. Reconciliation of licensing terms upon combination of LGPLv2.1’d and GPLv2’d works is cumbersome, from a licensing bookkeeping perspective.

LGPLv3 redresses this historical problem through extensive use of GPLv3 7’s exception architecture. LGPLv3 is therefore a set of additional permission to GPLv3.

11.1 Section 0: Additional Definitions

LGPLv3 0 defines the “Library” – a work that presents one or more interfaces at which a “use” can be made by an “Application.” Class inheritance is “deemed” a use of an interface. An “Application,” which is other program code using one or more “Library” interfaces can be combined with the code on the other side of the interfaces it uses to form a “Combined Work.”

11.2 LGPLv3 1: Exception to GPLv3 3

LGPLv3 1 excepts away the interference with use of LGPLv3 code as part of “effective technological measures” of access limitation for other copyrighted works provided otherwise by GPLv3 3.

11.3 LGPLv3 2: Conveying Modified Versions

LGPLv3 2 continues to require, as LGPLv2.1 2(d) requires, that the Library not be modified to require keys, tokens, tables, or other global non-argument data unrelated to function. This is again stated as a “good faith effort” requirement, but failure to cure on notice is strong evidence of the absence of good faith. LGPLv3 2(b) permits removal of the permissions entirely (as prescribed by GPLv3 7); however, such removal reduces the license of the entire covered work back to pure GPLv3. Thus, exercising LGPLv3 2(b) as a compliance alternative to LGPLv3 2(a) likely creates more compliance obligations than it removes.

11.4 LGPLv3 3: Object Code Incorporating Material from Library Header Files

LGPLv3 3’s front matter assures incorporation of smaller header files into non-copylefted object code can proceed unimpeded. More complex header files (those that do not meet the limitations provided in the section), can still be incorporated into object code, a copy of appropriate licensing information must accompany distribution (per LGPLv3 3(a–b).

11.5 LGPLv3 4: Combined Works

LGPLv3 4 is the combination permission at the heart of LGPLv3. It restates the license limitation provision of LGPLv2.1 2 to clarify that the terms on the Combined Work may not prohibit user modification of the Library code, or the debugging of such modifications to the Library code by means of whatever reverse engineering is necessary.

LGPLv3 4(d)(0) contains the source provision requirement, for the Minimal Corresponding Source, which “means the Corresponding Source for the Combined Work, excluding any source code for portions of the Combined Work that, considered in isolation, are based on the Application, and not on the Linked Version [of the Library]”. The alternative to the provision of source code is distribution by way of the “shared library” mechanism under LGPLv3 4(d)(1), described with respect to LGPLv2.1 6.

In addition, LGPLv3 4(e) requires the delivery of “installation information” required to install the modified version of the Library in “user products” under GPLv3 6. Where Library Minimal Corresponding Source is not made available under LGPLv3 4(d)(1), LGPLv3 4(e) reaffirms that “installation information” must still be compliantly delivered under the terms of GPLv3 6.

All other provisions of GPLv3 are in force as previously described, and are not excepted by the additional permission granted in LGPLv3.

If the distributor of the combined work intends not to distribute or offer the source code of the LGPL’d components, the LGPL’d work must be separately distributed (subject to source code delivery requirements as part of that separate distribution) and packaged in a “shared library” mechanism, which means that it:

4(d)(1):
uses at run time a copy of the library already present on the user’s computer system, rather than copying library functions into the executable, and
4(d)(2):
will operate properly with a modified version of the library, if the user installs one, as long as the modified version is interface-compatible with the version that the work was made with.

Taken all together, LGPLv3 4’s primary implications for redistributors are two-fold, as follows: