GNU Lesser General Public License
The GNU Lesser General Public License or LGPL (formerly the GNU Library General Public License ) is a license for free software developed by the Free Software Foundation (FSF) . The LGPL allows developers and companies to use and integrate LGPL software into their own (even proprietary ) software without being forced to disclose the source code of their own software parts due to strong copyleft . End users only need to be able to change the LGPL software parts: This is why, in the case of proprietary software, the LGPL parts are usually used in the form of a dynamic program library (e.g. DLL ) in order to achieve the necessary separation between proprietary and open source LGPL - to enable sharing.
The LGPL was thus developed as a compromise between the strong copyleft of the GNU General Public License (GPL) and more permissive licenses such as the BSD licenses and the MIT license . The word "Lesser" (meaning "less" ) in the name of the license is intended to express that LGPL cannot guarantee end users complete freedom in the use of software , since only the LGPL parts, but not any proprietary software Share give end users the freedom to modify.
The LGPL was published in 1991 and immediately assumed version number 2 to correspond numerically to GPL version 2. In 1999 the LGPL was changed slightly and versioned with 2.1, and the name was renamed to the GNU Lesser General Public License, to express the FSF's position that not all libraries should use the LGPL. Version 3 of the LGPL was released in 2007 to comply with additional entitlements of GPL version 3.
The LGPL is mainly used for software libraries, but also with stand-alone software.
Conditions / technical compliance
In contrast to the GPL, closed (i.e. proprietary ) code may also be combined with the LGPL code with the LGPL, but only if the following condition is met: A program that uses LGPL code together with its own proprietary code must be structured in this way that each end user can link the open source LGPL code (or modified versions thereof) into the final program (independently). This can be done either by dynamic linking (where the LGPL code is used in a dynamic library); The end user can then create his own dynamic library (Linux jargon: Shared Object ) of the LGPL part (for example from a modified version of the LGPL code) and use it. Or it can be done by static linking - then an end user typically gets the object files (or source text) of the proprietary code and the source texts of the LGPL code and can link them together.
This condition is such that the user must be able to change and reintegrate the LGPL part and not be restricted therein; thus installation information must be made available to the user in order to be able to install and run a modified version of the LGPL part in the combined work; Furthermore, the user may not be prohibited from debugging changes to the LGPL part, including reverse engineering .
Usually the manufacturer of proprietary software simply dynamically links his program against the LGPL library in question. As a result, the software contains a clear separation between the LGPL code and the proprietary part.
Examples of libraries under LGPL are the standard libraries of the individual programming languages, such as glibc (implementation of the Standard C Library of the Free Software Foundation) or the GnuMP library.
For a C ++ library that uses many inline functions and class templates ("templates"), a less restrictive license than LGPL (towards any third party developers) is usually chosen, provided that the library can be used together with closed (proprietary) code should. In this case, the proprietary code must already contain the inline functions and the template code of the library etc. in the source code, and therefore no object files of the proprietary code can be given to the end user, as any modifications to inline functions (the library) must be included in the source code. An example is libstdc ++ (GNU C ++ Library), which uses numerous inline functions and templates: Here the developers of libstdc ++ have opted for a GPL license with a special addition that allows the developer to mix libstdc ++ with their own code, whereby your own code does not need to be under GPL or LGPL (but of course it may). In particular, in this case the requirement that an end user must be able to link the libstdc ++ library in a modified form (statically or dynamically) does not apply, and is therefore less restrictive than the LGPL with regard to proprietary developers who use the library.
However, the principle applies that any changes to LGPL parts themselves (provided the changes were not made solely for their own use, but sold as a program or passed on in whatever way) must always be made accessible to end users. Disclosure of your own code, which is independent of the LGPL code, is only necessary if the entire software contains (or is based on) source code parts that are under the GPL license and are therefore subject to the copyleft principle .
The LGPL includes an option to publish a modified version of software under the GPL. This gives free software programmers the opportunity to publish their extensions under a copyleft license if they wish.