GNU Lesser General Public License: Difference between revisions
Line 23: | Line 23: | ||
==Differences from the GPL== |
==Differences from the GPL== |
||
The main difference between the GPL and the LGPL is that the latter can be linked to (in the case of a library, 'used by') a non-(L)GPLed program, regardless of whether it is [[free software]] or [[proprietary software]].<ref name="not_use_LGPL">Stallman, Richard. [http://www.fsf.org/licensing/licenses/why-not-lgpl.html Why you shouldn't use the Library GPL for your next library]. [[Free Software Foundation]] official website.</ref> This non-(L)GPLed program can then be distributed under any chosen terms if it is not a [[derivative work]]. If it is a derivative work, then the terms must allow '''"modification for the customer's own use and reverse engineering for debugging such modifications."''' <!-- commented-out - see talk: Another major difference is that derivative works (which are not GPLed) must be software libraries.--> 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 is generally accepted as not being a derivative work. It would be considered a "work that uses the library" and paragraph 5 of the LGPL applies. |
The main difference between the GPL and the LGPL is that the latter can be linked to (in the case of a library, 'used by') a non-(L)GPLed program, and regardless of whether it is [[free software]] or [[proprietary software]].<ref name="not_use_LGPL">Stallman, Richard. [http://www.fsf.org/licensing/licenses/why-not-lgpl.html Why you shouldn't use the Library GPL for your next library]. [[Free Software Foundation]] official website.</ref> This non-(L)GPLed program can then be distributed under any chosen terms if it is not a [[derivative work]]. If it is a derivative work, then the terms must allow '''"modification for the customer's own use and reverse engineering for debugging such modifications."''' <!-- commented-out - see talk: Another major difference is that derivative works (which are not GPLed) must be software libraries.--> 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 is generally accepted as not being a derivative work. It would be considered a "work that uses the library" and paragraph 5 of the LGPL applies. |
||
:''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.'' |
:''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.'' |
Revision as of 20:03, 4 May 2009
File:GNU Lesser General Public License 3 Logo.svg The GNU LGPLv3 logo | |
Author | Free Software Foundation |
---|---|
Latest version | 3 |
Publisher | Free Software Foundation, Inc. |
Published | 2007-06-29 |
Debian FSG compatible | Yes |
FSF approved | Yes |
OSI approved | Yes |
GPL compatible | Yes |
Copyleft | Yes |
Linking from code with a different licence | Yes |
Website | gnu![]() |
The GNU Lesser General Public License (formerly the GNU Library General Public License) or LGPL is a free software license published by the Free Software Foundation (FSF). It was designed as a compromise between the strong-copyleft GNU General Public License or GPL and permissive licenses such as the BSD licenses and the MIT License. The GNU Lesser General Public License was written in 1991 (and updated in 1999, and again in 2007) by Richard Stallman, with legal advice from Eben Moglen.
The LGPL places copyleft restrictions on the program itself but does not apply these restrictions to other software that merely links with the program. There are, however, certain other restrictions on this software.
The LGPL is primarily used for software libraries, although it is also used by some stand-alone applications, most notably Mozilla and OpenOffice.org.
Version 3 of the LGPL is constructed by applying a GPL linking exception to version 3 of the GNU General Public License (GPL).
Differences from the GPL
The main difference between the GPL and the LGPL is that the latter can be linked to (in the case of a library, 'used by') a non-(L)GPLed program, and regardless of whether it is free software or proprietary software.[1] This non-(L)GPLed program can then be distributed under any chosen terms if it is not a derivative work. If it is a derivative work, then the terms must allow "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 is generally accepted as not being a derivative work. It would be considered a "work that uses the library" and paragraph 5 of the LGPL applies.
- 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, 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.
One feature of the LGPL is that one can convert any LGPLed piece of software into a GPLed piece of software (section 3 of the license). This feature is useful for direct reuse of LGPLed code in GPLed libraries and applications, or if one wants to create a version of the code that software companies cannot use in proprietary software products.
Choosing to license a library under the GPL or the LGPL
The former name of "GNU Library General Public License" gave some people the impression that the FSF wanted all libraries to use the LGPL and all programs to use the GPL. In February 1999 Richard Stallman wrote the essay Why you shouldn't use the Lesser GPL for your next library explaining why this was not the case, and that one should not necessarily use the LGPL for libraries:
- Which license is best for a given library is a matter of strategy, and it depends on the details of the situation. At present, most GNU libraries are covered by the Library GPL, and that means we are using only one of these two strategies [allowing/disallowing proprietary programs to use a library] , neglecting the other. So we are now seeking more libraries to release under the ordinary GPL.[1]
Contrary to popular impression, however, this does not mean that the FSF deprecates the LGPL, but merely says that it should not be used for all libraries — the same essay goes on to say:
- Using the ordinary GPL is not advantageous for every library. There are reasons that can make it better to use the Lesser GPL in certain cases.[1]
Indeed, Stallman and the FSF sometimes advocate licenses even less restrictive than the LGPL as a matter of strategy (to maximize the freedom of users). A prominent example was Stallman's endorsement of the use of a BSD-style license by the Vorbis project for its libraries.[2]
Programming languages specificity
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 programming language context. LGPL with this preamble is sometimes referred as LLGPL.[3]
In addition, Ada has a special feature, generics, that may use the MGPL license.
LGPL regarding inheritance (in programming)
Some concern has arisen about the suitability of object-oriented classes in LGPL'd software being inherited by non-(L)GPL code. Generally, these concerns are unfounded, and clarification is given on the official GNU website:
- The LGPL contains no 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.[4]
See also
- Affero General Public License
- Free Software licensing
- GNU Free Documentation License
- GNU General Public License
- GNAT Modified General Public License
- GPL linking exception
References
- ^ a b c Stallman, Richard. Why you shouldn't use the Library GPL for your next library. Free Software Foundation official website.
- ^ Stallman, Richard. Re: [open-source] [Fwd: [icecast-dev] Xiph.org announces Vorbis Beta 4 and the Xiph.org
- ^ Preamble to the Gnu Lesser General Public License
- ^ Turner, David. The LGPL and Java. GNU official website.
External links