GNU oder GNU Lesser Lizenz?



  • Hallo,

    ich möchte eine Anwendung zum download freigeben. Ich habe die Anwendung selbst geschrieben, verwende jedoch eine library (ich benutze auch datenstrukturen und routinen) die unter Gnu Lesser Lizenz läuft. In meinem Programm-Paket sage ich nur wo diese Bibliothek mit ihren sourcen zu finden ist. Was wäre denn die korrekte Verwendung. Ich glaube ja dass ich ebenfalls die Lesser Lizenz brauche.
    Den Unterschied verstehe ich aber leider nicht ganz - obwohl ich die GNU Seiten gelesen habe...

    und darf man eigentlich eine zusatzklausel angeben in der GNU LIzenz so dass z.B. wenn jemand meine anwendung benutzt, er dann aber angeben muss dass er meine anwendung an der stelle verwendet hat?

    Danke euch



  • dynamisch linken und copyleft-hinweis für die lib nicht unterschlagen, dann ist alles ok. grund: andere sollen die lib austauschen können, ohne die sourcen deines programms zu haben.



  • eh sorry....was meinst du mit dynmisch linken und copyleft hinweis nicht ungerschlagen? Könntest du das genauer beschreiben? wäre sehr nett!



  • Zunaechst: es gibt keine "GNU lizenz" und auch keine "GNU lesser Lizenz", es gibt die GPL (General Public License), und die LGPL (lesser GPL).

    Dein Programm verwendet eine Lib, die unter LGPL steht, vermut ich mal. Dann ist das richtige vorgehen folgendes:
    Bibliothek dynamisch linken, nicht statisch: d.h. du kompilierst den Code der Bibliothek NICHT in dein Programm hinein, die Bibliothek bleibt in einer getrennten Dynamischen Bibliothek (d.h. in einer DLL-Datei - zumindest unter Windows). Das ist bei den meisten Bibliotheken sowieso der Fall.

    Ausserdem musst du in deinem Programm darauf hinweisen, dass du die Bibliothek verwendest, dass diese Bibliothek unter LGPL ist, sowie angeben, wo man den Quellcode der Bibliothek (& evtl. mehr Infos zur LGPL) findet. Dazu reicht z. B. ein Vermerk a la "This software uses [libsoundso]. The [libsoundso] source code is available from: http://www.libsoundso.org/. This library is distributed under the terms of the GNU LGPL license: http://www.gnu.org/copyleft/lesser.html " in der README/dem Handbuch/dem "Help->about - Dialog" deines Programmes.

    Dein Programm selbst musst du hingegen nicht unter (L)GPL stellen, genau das ist der (wesentliche) Unterschied zwischen LGPL und GPL: wenn dein Programm Code verwendet, der selbst unter GPL steht, muss dein Code auch unter GPL gestellt werden. Wenn dein Programm aber lediglich Code verwendet, der unter LGPL steht, kannst du dein Programm selbst lizenzieren wie du willst. Du musst nur sicherstellen, dass...

    • der Code fuer die Bibliothek austauschbar ist (deswegen die DLL, die kann man auch so austauschen)
    • der Benutzer das auch weiss (deswegen der Hinweis auf die LGPL)
    • dass der Benutzer Zugang zum Code der Bibliothek hat (deswegen der Hinweis auf die Homepage der Bibliothek)


  • Blue-Tiger schrieb:

    Wenn dein Programm lediglich Code verwendet, der unter LGPL steht, kannst du dein Programm selbst lizenzieren wie du willst.

    völliger quatsch



  • ascda schrieb:

    Blue-Tiger schrieb:

    Wenn dein Programm lediglich Code verwendet, der unter LGPL steht, kannst du dein Programm selbst lizenzieren wie du willst.

    völliger quatsch

    schoen dass du das so ausfuehrlich belegst, kommentierst und berichtigst.



  • Blue-Tiger schrieb:

    ascda schrieb:

    Blue-Tiger schrieb:

    Wenn dein Programm lediglich Code verwendet, der unter LGPL steht, kannst du dein Programm selbst lizenzieren wie du willst.

    völliger quatsch

    schoen dass du das so ausfuehrlich belegst, kommentierst und berichtigst.

    Nur wenn du den Code dynamisch linkst!



  • Wenn du die DLL, die du dynamisch lädtst gegen einen eincompilierten Hash vergleichst und bei Fehler abbrichst hilft das dynamische linken auch nicht viel



  • anscheinend nur autisten und blinde unterwegs in diesem thread.
    @testo: die ersten beiden antworten sind korrekt. lgpl zielt darauf ab, dass die dynamische lib von dritten ausgetauscht werden kann. das musst du sicherstellen.



  • 😕
    sorry leute - jetzt bin ich komplett verwirrt.

    Also ich erläutere mal wie genau das bei mir aussieht:

    Ich habe einen eigenen Code geschrieben.
    in meinem Makefile binde ich die bibliothek ein (unter linux) eien lib.a . Also in dem fall denke ich erfülle ich das mit dem dynamisch.

    Jetzt gibts in dem Paket der Library aber einen Include Ordner wo eine *.h drin ist. Diese include ich bei mir im code. Damit kann ich datenstrukturen der library in meinem eigenen code bauen.

    Also wenn jetz die library eine struktur as *; hat. Dann kann ich so in meinem code eine as * füllen.

    Die library die ich einbinde läuft unter der LGPL.

    Wie muss ich jetzt korrekterweise vorgehen?

    Danke euch nochmal für präzise Antwort 🙂



  • eine "*.a"-Datei ist i.d.R. eine statische Library, du erfuellst das dynamische Linken also nicht (dynamische Libs enden in der Regel auf *.so). Statische Libs werden naemlich in das erstellte Binary mit eingebunden. Somit koennten Interessierte die Bibliothek in deinem Programm nicht veraendern/durch andere Versionen austauschen.

    Du kannst nun

    • schaun ob man aus der statischen eine dynamisch linkbare Bibliothek machen kann (k.A. obs dafuer nicht sowieso Konverter gibt, oder du kompilierst die Bibliothek neu als dynamische Bib.).
    • du kannst den Quellcode deines Programmes zur Verfuegung stellen (du kannst aber trotzdem jede beliebige Lizenz verwenden, egal ob kommerziell, Freeware oder OpenSource).
    • du kannst die Objektfiles deines Programmes (".o") zur Verfuegung stellen, so dass Anwender dein Programm mit anderen Versionen des Programms linken koennen.

    Dass du die Include-Datei der Bibliothek in deinem Quellcode inkludierst, ist uebrigens kein Problem, mach dir darueber keinen Kopf.



  • wenn mich nicht alles täuscht, ist lib.a keine dynamisch gelinkte bibliothek. die müsste lib.so heißen, und die musst du mit dem programm mitliefern und sie muss austauschbar sein (wie es dynamisch gelinkte bibliotheken nun mal in der regel sind).

    oder du stellst dein programm einfach unter die gpl und machst dir keine weiteren gedanken. dein programm will unter linux sowieso keiner haben, wenn es unter einer proprietären lizenz steht.



  • ich habe vergessen zu erwähnen dass mein kompletter quellcode mit ausgeliefert wird. ALso jeder komplette einsicht in alle *.cpp sowie *.h dateien hat.

    Wie sieht die situation jetzt aus?



  • oder du stellst dein programm einfach unter die gpl und machst dir keine weiteren gedanken. dein programm will unter linux sowieso keiner haben, wenn es unter einer proprietären lizenz steht.

    ja aber meine frage war ja eben nur ob ich GPL oder LGPL tragen muss 🙂
    zwecks der LGPL der statisch gelinkten Lib ? und wie gesagt: meine sourcen gebe ich alle frei ...



  • Blue-Tiger schrieb:

    • du kannst den Quellcode deines Programmes zur Verfuegung stellen (du kannst aber trotzdem jede beliebige Lizenz verwenden, egal ob kommerziell, Freeware oder OpenSource).

    Du solltest Blue-Tiger post besser durchlesen 😃



  • Hab ich wirklich - nur würde ich gerne nochmal eine bestätigung haben.

    So wie ich das jetzt verstehe kann ich jede beliebige Lizenz nehmen weil ich alle
    sourcen freigebe. Sprich entweder die GPL oder die LGPL verwenden oder?

    Mir ist nur der Unterschied zwischen LGPL und GPL immer noch nicht ganz klar...



  • GPL hat den Zwang, wenn du Code benutzer, das darunter fällt, muss dein Werk auch unter diese Lizenz fallen. Deswegen gibt es LGPL, weil nicht durch Benutzer eine Lib der Zwang dieser Lizenz bestehen sollen. Beispielweise ist dies greade bei Dual-Lizenz aber gewünscht. QT gibst als GPL oder unter kommerzielle Lizenz.



  • *grmpf

    ich will in zukunft mal meine anwendung als lib zur verfügung stellen so dass andere sie auch einbinden können. Wäre es da sinnvoll jetzt schon auf die LGPL zu gehen.

    Nichts für ungut Zeus ...dein deutsch regt mich zum nachdenken an: Meintest du jetzt dass man prinzpiell eher die LGPL verwendet wenn man eine lib anbietet und nicht die benutzer einschränken falls sie die lib benutzen würden? Natürlich wenn man die GPL benutzt hätte...

    Wie ist es eigentlich mit einer kleinen Zusatzklausel. Darf man die GPL bzw. LGPL leicht erweitern? NIcht das ich das jetzt machen wollte...aber prinzpiell würd ich s gern wissen...



  • verdammt...ich hab ja ganz vergessen dass ich 2 Bibs verwende. In der zweiten Bib verwende ich aber lediglich routinen. ALso keine datenstrukturen sondern nur den funktionsaufruf. Ich benutze ich auch eine lib*.a .

    Jetzt ist es aber so dass diese 2te Bib eine eigene Lizenz hat die irgendwie nach eine Modified BSD Lizenz aussieht wie ich mich informiert habe. Und diese sei ähnlich zur GPL.

    Jetzt bin ich total durcheinander. So wie ich das verstanden habe wäre es mit der LGPL Leuten ermöglicht dass sie meine Anwendung in kommerzielle SW integrieren. Mit der GPL nicht. Wenn aber diese modifizierte verträglich zur GPL sei müsste ich doch entweder auch unter die GPL gehen oder zumindest irgendwie was von der Modified BSD übernehmen oder so?

    Kann mir jemand helfen?



  • testo schrieb:

    So wie ich das jetzt verstehe kann ich jede beliebige Lizenz nehmen weil ich alle sourcen freigebe. Sprich entweder die GPL oder die LGPL verwenden oder?

    Du kannst in dem Fall nehmen was du willst. GPL, LGPL, BSD, MIT, CC, blabla, quark, blubb, foo, bar, etc. etc. pp.

    testo schrieb:

    Mir ist nur der Unterschied zwischen LGPL und GPL immer noch nicht ganz klar...

    Ganz, ganz grob vereinfacht:
    GPL: Jeder, der den Code verwendet, muss auch selbst die GPL verwenden.
    LGPL: jeder, der den Code verwendet, muss sicherstellen, dass auch andere DEN LGPL-CODE in deiner App. veraendern koennen.

    testo schrieb:

    Jetzt ist es aber so dass diese 2te Bib eine eigene Lizenz hat die irgendwie nach eine Modified BSD Lizenz aussieht wie ich mich informiert habe. Und diese sei ähnlich zur GPL.

    Na ja, kommt drauf an. Die normale BSD-Lizenz an & fuer sich hat absolut keine "derived works muss auch unter die gleiche Lizenz" Klausel, wie die GPL sie hat.

    testo schrieb:

    Jetzt bin ich total durcheinander. So wie ich das verstanden habe wäre es mit der LGPL Leuten ermöglicht dass sie meine Anwendung in kommerzielle SW integrieren. Mit der GPL nicht.

    GPL sagt absolut nichts ueber kommerzielle Software aus. Du kannst Software, die unter GPL steht, auch verkaufen! Aber du musst nur dem Kaeufer auch deinen Quellcode mit in die Hand druecken. Er hat dann - wenn nicht anders vereinbart - das Recht, mit dem Code zu machen was er will: ihn zu veraendern, ihn weiterzuverkaufen, ihn zu veroeffentlichen - aber auch immer unter den Einschraenkungen der GPL (d.h. er darf den Code z. B. weiterverkaufen, muss aber selbst auch wieder den Code mitgeben).

    testo schrieb:

    ich will in zukunft mal meine anwendung als lib zur verfügung stellen so dass andere sie auch einbinden können. Wäre es da sinnvoll jetzt schon auf die LGPL zu gehen.

    Fuer Libs ist die LGPL besser geeignet, es sei denn du willst ausdruecklich, dass deine Lib nur von OpenSource-Programmen verwendet wird, und du diese zwingen willst, selbst auch die GPL zu verwenden.

    Wie ist es eigentlich mit einer kleinen Zusatzklausel. Darf man die GPL bzw. LGPL leicht erweitern? NIcht das ich das jetzt machen wollte...aber prinzpiell würd ich s gern wissen...

    Klar darfst du. Tun auch einige. Es ist dein Code, du darfst die Lizenzbedingungen dafuer waehlen wie sie dir passen. 🙂 (soweit du keine anderen Rechte damit verletzt - wenn du GPL-Code verwendest, musst du auch selbst die (AFAIK unmodifizierte) GPL verwenden, da fuehrt kein Weg drum herum).


Log in to reply