GNU Lesser General Public License
Die GNU Lesser General Public License (LGPL) ist neben der GNU General Public License (GPL) eine weitere von der Free Software Foundation entwickelte Lizenz für freie Software. Ursprünglich wurde sie als Library General Public License eingeführt, jedoch später umbenannt.
Die LGPL setzt ähnlich wie die GPL die Idee des Copyleft ein, um die Freiheit der lizenzierten Software zu schützen. Damit sind die Freiheiten gemeint,
- die Software für einen beliebigen Zweck zu nutzen,
- die Software vervielfältigen und weitergeben zu dürfen,
- die Software nach eigenen Bedürfnissen zu ändern und
- die geänderten Versionen weiterzugeben.
Veränderte Versionen müssen dabei ebenfalls unter der LGPL (oder wahlweise der GPL) lizenziert werden. Grundsätzlich darf eine unter LGPL lizenzierte Software nur zusammen mit ihrem Quelltext vertrieben werden.
[Bearbeiten] Bedingungen/technische Einhaltung
Im Gegensatz zur GPL darf bei der LGPL geschlossener Code mit dem LGPL-Code kombiniert werden, allerdings nur, wenn folgende Bedingung eingehalten wird: Ein Programm, das LGPL-Code zusammen mit eigenem (z.B. proprietärem) Code verwendet, muss so aufgebaut sein, dass jeder Endnutzer den LGPL-Code (oder modifizierte Versionen dessen) in das endgültige Programm (selbstständig) linken kann.[1] Dies kann entweder durch Dynamisches Linken geschehen (wo der LGPL Code in einer Dynamischen Bibliothek verwendet wird); dann kann der Endnutzer eine eigene Dynamische Bibliothek (Linux-Jargon: Shared Object) des LGPL-Teils erstellen (beispielsweise aus einer modifizierten Version des LGPL-Codes) und nutzen. Oder es kann durch statisches Linken geschehen - dann bekommt ein Endnutzer typischerweise die Objektdateien (oder Quelltext) des proprietären Codes, und die Sourcen des LGPL Codes und kann diese zusammenlinken.
Normalerweise ist es aber so, dass der Hersteller proprietärer Software sein Programm einfach dynamisch gegen die fragliche Bibliothek linkt. Dadurch enthält die Software keinen LGPL-Code mehr.
Beispiele für Bibliotheken unter LGPL sind die Standardbibliotheken der einzelnen Programmiersprachen, wie beispielsweise die glibc (Implementierung der Standard C Library der Free Software Foundation) oder auch die GnuMP-Bibliothek.
Für eine C++ Bibliothek, die stark inline-Funktionen und Templates verwendet, wird meist eine (etwaigen dritten Entwicklern gegenüber) weniger restriktive Lizenz als LGPL gewählt, sofern eine Verwendung der Bibliothek zusammen mit verschlossenem (proprietärem) Code erlaubt sein soll. Denn der proprietäre Code muss in dem Fall die inline-Funktionen und den Template-Code der Bibliothek usw. bereits im Quelltext inkludieren, und daher können dem Endnutzer keine Objektdateien des proprietärem Codes gegeben werden, da etwaige Modifizierungen von inline-Funktionen (der Bibliothek) schon im Quelltext inkludiert werden müssen. [2] Als Beispiel ist libstdc++ (GNU C++ Library) zu nennen, welche zahlreiche inline Funktionen und Templates nutzt: Hier haben sich die Entwickler von libstdc++ für eine GPL Lizenz mit speziellem Zusatz entschieden[3], welche dem Entwickler erlaubt libstdc++ mit eigenem Code zu mischen, wobei der eigene Code weder unter GPL noch LGPL stehen muss (aber es natürlich darf). Insbesondere entfällt in diesem Fall die Forderung, dass ein Endnutzer die libstdc++-Bibliothek in geänderter Form linken (statisch oder dynamisch) können muss und ist somit (gegenüber Entwicklern welche die Bibliothek nutzen) weniger restriktiv als die LGPL.
Selbstverständlich gilt aber immer noch der Grundsatz, dass etwaige Änderungen an LGPL- oder GPL-Code (sofern die Änderungen nicht einzig und allein für den eigenen Gebrauch gemacht wurden, sondern als Programm verkauft oder wie auch immer weitergegeben werden) immer auch offengelegt werden müssen. Dies kommt dem ursprünglichen Entwickler des LGPL- oder GPL-Codes und all jenen, die den Code verwenden, zugute, da so etwaige Verbesserungen, die beim LGPL- oder GPL- Code einfließen, allen zur Verfügung stehen. Eine Offenlegung von eigenem Code, der unabhängig vom GPL- und LGPL-Code ist, ist nur notwendig, wenn irgendwo in einem Programm ein Code verwendet wird (oder auf einen Code aufgebaut wird), welcher unter reiner GPL-Lizenz (die keine Zusätze hat) steht.
Die LGPL beinhaltet eine Option, eine veränderte Version einer Software unter der GPL zu veröffentlichen. Das gibt Programmierern die Möglichkeit, ihre Erweiterungen nach Wunsch unter einer „strengeren“ Lizenz zu veröffentlichen.
- ↑ GNU Lesser General Public License, Version 3.0 (Deutsch)
- ↑ GCC FAQ
- ↑ libstdc++ Runtime Library Exception
[Bearbeiten] Siehe auch
[Bearbeiten] Weblinks
GNU General Public License (GPL) | GNU Lesser General Public License (LGPL) | GNU Affero General Public License (AGPL) | GNU Free Documentation License (GFDL/FDL)