The GNU Lesser General Public License is a free software license published by the Free
Software Foundation.
The license allows developers and companies to use and integrate LGPL software into their
own software without being required by the terms of a strong copyleft license to release
the source code of their own software-parts.
The license requires that only the LGPL software-parts be modifiable by end-users via source code
availability.
For proprietary software, LGPL-parts are usually in the form of a shared library such as a
DLL so that there is a clear separation between the proprietary and LGPL parts.
The LGPL is primarily used for software libraries, although it is also used by some stand-alone
applications.
The LGPL was developed as a compromise between the strong copyleft of the GNU General Public
License and more permissive licenses such as the BSD licenses and the MIT License.
The word "Lesser" in the title shows that the LGPL does not guarantee the end user's
complete freedom in the use of software: it only guarantees the freedom of modification
for the LGPL-parts, but not for any proprietary software-parts.
History The license was originally called the GNU
Library General Public License and was first published in 1991, and adopted the version
number 2 for parity with GPL version 2.
The LGPL was revised in minor ways in the 2.1 point release, published in 1999, when
it was renamed the GNU Lesser General Public License to reflect the FSF's position that
not all libraries should use it.
Version 3 of the LGPL was published in 2007 as a list of additional permissions applied
to GPL version 3.
Differences from the GPL The main difference between the GPL and the
LGPL is that the latter allows the work to be linked with a non-(L)GPLed program, regardless
of whether it is free software or proprietary software.
The non-(L)GPLed program can then be distributed under any terms if it is not a derivative
work.
If it is a derivative work, then the program's terms must allow for "modification for the
customer's own use and reverse engineering for debugging such modifications."
Whether a work that uses an LGPL program is a derivative work or not is a legal issue.
A standalone executable that dynamically links to a library through a .so, .dll, or similar
medium is generally accepted as not being a derivative work as defined by the LGPL.
It would fall under the definition of a "work that uses the Library".
Paragraph 5 of the LGPL version 2.1 states: 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.
Essentially, if it is a "work that uses the library", then it must be possible for the
software to be linked with a newer version of the LGPL-covered program.
The most commonly used method for doing so is to use "a suitable shared library mechanism
for linking".
Alternatively, a statically linked library is allowed if either source code or linkable
object files are provided.
Compatibility The LGPL version 3 is not compatible with
programs under the license GPLv2.
One feature of the LGPL is that one can convert any LGPLed piece of software into a GPLed
piece of software.
This feature allows for direct reuse of LGPLed code in GPLed libraries and applications.
A work under GPLv2 or any later version can be combined with LGPL version 3 library, and
the license combination will result in GPLv3 for the combined work as a whole.
LGPL for libraries The former name "GNU Library General Public
License" gave some the impression that the FSF recommended software libraries use the
LGPL and that programs use the GPL.
In February 1999, GNU Project leader Richard Stallman wrote the essay Why you shouldn't
use the Lesser GPL for your next library explaining that the LGPL had not been deprecated, but
that one should not necessarily use the LGPL for all libraries:
Which license is best for a given library is a matter of strategy...
Using the ordinary GPL for a library gives free software developers an advantage over
proprietary developers: a library that they can use, while proprietary developers cannot
use it...
When a free library's features are readily available for proprietary software through
other alternative libraries... the library cannot give free software any particular advantage,
so it is better to use the Lesser GPL for that library.
Stallman and the FSF sometimes advocate licenses even less restrictive than the LGPL as a matter
of strategy.
A prominent example was Stallman's endorsement of the use of a BSD-style license by the Vorbis
project for use in its libraries.
Programming language specifications The license uses terminology which is mainly
intended for applications written in the C programming language or its family.
Franz Inc. published its own preamble to the license to clarify terminology in the Lisp
context.
LGPL with this preamble is sometimes referred as LLGPL.
In addition, Ada has a special feature, generics, which may prompt the use of GNAT Modified
General Public License: it allows code to link against or instantiate GMGPL-covered
units without the code itself becoming covered by the GPL.
Class inheritance Some concern has risen about the suitability
of object-oriented classes in LGPL'd software being inherited by non-(L)GPL code.
Clarification is given on the official GNU website:
The LGPL does not contain special provisions for inheritance, because none are needed.
Inheritance creates derivative works in the same way as traditional linking, and the LGPL
permits this type of derivative work in the same way as it permits ordinary function calls.
See also
Affero General Public License GNU Free Documentation License
GNAT Modified General Public License GPL linking exception
References
External links LGPL Official Page
Derivative Works Lisping Copyleft: A Close Reading of the Lisp
LGPL, 5 International Free and Open Source Software Law Review 15