Okay, bevor alle über doppelte Fragen schreien, habe ich hier bereits einige Fragen wie diese gesehen. Aber niemand beantwortet die Frage.
Muss ich meinen Quellcode freigeben, wenn ich eine Verknüpfung zu einer GPL-ed-Bibliothek herstelle, ohne diese Bibliothek zu ändern?
Nach dieser Frage lautet die Antwort ja!
Aber diese Antwort ist für mich nicht zufriedenstellend. Die Antwort besagt im Grunde, dass ich keinen GPL-Code verwenden kann, ohne meinen Code als Open Source zu definieren.
Aber wenn das Vorherige zutrifft, würde dies bedeuten, dass keine Person oder Organisation jemals proprietäre Software unter Linux veröffentlichen könnte. Welches muss falsch sein. Einfach, weil eine Anwendung nur dann nützlich sein kann, wenn sie Dateien öffnet, in die Konsole schreibt und TCP-Verbindungen herstellt. Die Anwendung muss mit libc
der GPL-Version verknüpft sein .
Meine Frage lautet also: Wenn die GPL wie in allen vorherigen Antworten auf der Website behauptet, dass ein Programm, das mit einem anderen GPL-Programm verknüpft ist, selbst eine GPL sein muss, wie ist es möglich, eine proprietäre Anwendung zu erstellen / freizugeben / zu verkaufen überhaupt was läuft unter Linux? Da, wie ich oben beschrieben habe, diese Anwendung GPL-Code gefallen muss, nur um unter Linux ausgeführt werden zu können.
Ein praktischeres Beispiel: Wenn ich auf eine gemeinsam genutzte Bibliothek verweise, die in einer Nicht-GPL-Anwendung GPL-ed ist, würde dies die Nicht-GPL-Anwendung zwingen, GPL-ed zu werden? Wenn ich eine GPL-Bibliothek verwende, ohne sie zu ändern, und diese Bibliothek dann als .so
oder verteile, muss .dll
meine Anwendung dann Open Source sein?
Antworten:
Wenn Sie eine Verknüpfung zu einer GPL-Bibliothek herstellen, haben Sie ein abgeleitetes Werk erstellt, und Ihr Code muss GPL sein. Dies unterscheidet sich von L GPL-Code, der speziell die dynamische Verknüpfung von unterschiedlich lizenziertem Code ermöglicht. Die Systembibliotheken einschließlich libc sind alle LGPL.
Es gibt auch eine spezielle Ausnahme für die Linux-Kernel-Header und libgcc (die vom Compiler implizit aufgerufene Bibliothek).
quelle
Im Allgemeinen haben Sie insofern Recht, als Sie keine Verbindung zu einer GPL-Bibliothek herstellen, Ihren Code nicht verteilen und Ihren Code dann nicht als GPL freigeben können.
Es gibt jedoch die Systembibliotheksausnahme, mit der sich Leute mit Linux- Bibliotheken verbinden und ihr Produkt dennoch unter Nicht-GPL-Lizenzen veröffentlichen.
Eine weitere Ausnahme ist, wenn die beiden Lizenzen miteinander kompatibel sind. Schauen Sie sich die FSF- kompatible Lizenzseite anWeitere .
Schließlich können die Autoren der GPL'd-Bibliothek bestimmte Ausnahmen erstellen, z. B. für nichtkommerzielle oder Hobbyzwecke.
Leider gibt es zu viele Möglichkeiten, um eine feste Regel zu haben. Ohne weitere Einzelheiten in Ihrer Frage lautet Ihre Antwort "wahrscheinlich nicht, aber vielleicht können Sie".
quelle
Die kurze Antwort lautet: Niemand weiß es wirklich. (In dieser Diskussion geht es um GPL, nicht um LGPL.)
Die GPL hat eine vage Sprache über "Derivative Works", die verschiedene Leute auf unterschiedliche Weise interpretieren. Einigkeit scheint zu bestehen, dass statische Verknüpfungen nicht funktionieren, Aufrufe über System-Interrupts (z. B. zum Linux-Kernel) jedoch nicht. Letzteres beruht hauptsächlich auf der Tatsache, dass Unternehmen wie Oracle unter Linux ausgeliefert und nicht verklagt wurden - dies ist in der Lizenz nicht klar.
Dynamische Verknüpfung ist unklar, wahrscheinlich 70/30 sagen, es verstößt. Das Aufrufen eines Programms mit Pipes oder Remoteprozeduraufrufen, wahrscheinlich 30/70, verstößt nicht, obwohl dies im Wesentlichen dasselbe ist. Das Aufrufen über COM oder die Verwendung eines Java Jar ist völlig unklar.
Wenn es Zweifel gibt und Sie keine Anwälte mögen, sollten Sie sich grundsätzlich von der GPL fernhalten.
quelle