Vermeiden Sie GPL-Verstöße, indem Sie die Bibliothek außer Betrieb setzen

21

Angenommen, es gibt eine Bibliothek, die unter der GPL lizenziert ist. Ich möchte es als Closed-Source-Projekt verwenden. Ich mache folgendes:

  1. Erstellen Sie eine kleine Wrapper-Anwendung um diese GPL-Bibliothek, die Sockets abhört, Nachrichten analysiert und die GPL-Bibliothek aufruft. Dann werden die Ergebnisse zurückgegeben.
  2. Geben Sie die Quellen frei (um die GPL einzuhalten)
  3. Erstellen Sie einen Client für diesen Wrapper in meiner Hauptanwendung und geben Sie keine Quellen frei.

Ich weiß, dass dies im Vergleich zu statischen / dynamischen Verknüpfungen einen enormen Mehraufwand bedeutet, aber ich interessiere mich für theoretische Aspekte.

Andrej
quelle
6
Der Wrapper, den Sie schreiben, wird unter der GPL lizenziert. Daher unterliegt das Programm, das den Wrapper verwendet, weiterhin den Bestimmungen der GPL für Verknüpfungen usw.
TZHX
4
Wenden Sie sich an den Autor und prüfen Sie, ob Sie es stattdessen unter LGPL oder einer ähnlichen Lizenz lizenzieren können.
jk.
8
@TZHX Ich glaube, er meint, der Wrapper wäre eine separate Anwendung, die als Server fungiert - sein proprietärer Code wäre im Client
jk.
auch wer wird die closed source app auch vertreiben? und welche Version der GPL ist die Lizenz
jk.
2
@jwenting die Frage sagt eindeutig, dass es keinen Prozess mehr gibt
jk.

Antworten:

32

Rechtlich würde ich sagen, es wäre in Ordnung (aber ich bin kein Anwalt - konsultieren Sie einen Anwalt für Rechtsberatung).

Moralisch ist es ziemlich verwerflich. Wenn Ihnen die GPL nicht gefällt, ist es die "richtige" Lösung, keine GPL-Bibliothek zu verwenden.

Bearbeiten : Um zu verdeutlichen, ob dynamische Verknüpfungen zulässig sind oder nicht, wurde die LGPL speziell mit der Absicht erstellt, dynamische Verknüpfungen für Bibliotheken zuzulassen. Aus diesem Grund scheint mir klar zu sein, dass der Autor der Bibliothek durch die Wahl der GPL gegenüber der LGPL ausdrücklich das dynamische Verknüpfen untersagte. Eine Verwendung von technischen Mitteln zur Arbeit um eine rechtliche Einschränkung , dass der Autor der ausdrücklichen Absicht für seinen Code zum Ausdruck bringt, was verwerflich ist, meiner Meinung nach .

Ich persönlich bin kein Fan der GPL (ich bevorzuge eine freizügigere Lizenz wie MIT oder BSD). Ich bin jedoch ein großer Fan davon, die Arbeit anderer Entwickler zu respektieren, und wenn sie nicht möchten, dass Sie ihre Bibliothek mit Closed-Source-Software verknüpfen, dann ist dies ein Vorrecht.

Dean Harding
quelle
12
Ich glaube nicht, dass es hier ein moralisches Problem gibt - die GPL scheint seinen Anwendungsfall ausdrücklich zuzulassen
jk.
3
@vartec ist hier ein Zitat aus der offiziellen GPL-FAQ: "Durch statisches oder dynamisches Verknüpfen mit anderen Modulen entsteht eine kombinierte Arbeit auf der Grundlage. Somit decken die Bedingungen der GNU General Public License die gesamte Kombination ab." Wenn Stallman eine andere Vorstellung davon hat, was Open Source ist, heißt das nicht, dass er es hasst. Er ist einer der Hauptideologen dieser Bewegung.
Andrey
8
@vartec: Ich habe den Eindruck, dass Sie nicht verstehen, dass SIE, wenn Sie den Code von jemand anderem in Ihrer Anwendung verwenden, die Bedingungen einhalten müssen, die ER für die Verwendung seines Codes festlegt. Mag es nicht? Verwenden Sie nicht den GPL-Code einer anderen Person. So einfach.
John R. Strohm
3
Hier ist mein Vorschlag: Leiten Sie die Hölle aus dem GPL-Code ab, von dem Sie so abhängig zu sein scheinen, und sehen Sie, wie der Gerichtsfall ausgeht. Die GPL3 wurde entwickelt, um genau solche rechtlichen Lücken in der GPL2 zu schließen. Ich bezweifle, dass die Leute Ihnen Paraden zu Ehren schmeißen werden, weil Sie mit einem legalen Manöver davongekommen sind und wenn Sie effektiv genug sind, werden die Leute ihren Code mit mehr Nutzungsbedingungen lizenzieren, nur um Sie zu ärgern. Am Ende könnte dies die Welt verbessern, indem Threads wie dieser vermieden werden.
Godeke
3
Ich bin mit der Behauptung, dass es moralisch verwerflich ist, NICHT einverstanden. Was moralisch verwerflich ist, ist zu sagen, dass sie kein Recht haben, die Dinge zu tun, die die GPL ihnen erlaubt. Wenn ich ein Werk unter die GPL stelle, tue ich das, weil ich möchte, dass die Regeln der GPL gelten. Es ist verwerflich, den Menschen zu sagen, sie sollten die Rechte, die die GPL ihnen verleiht, nicht ausüben. Dies ist etwas, was die GPL erlaubt. Diejenigen, die Werke unter die GPL stellen, tun dies, weil sie dies zulassen möchten .
David Schwartz
6

IANAL, aber ich glaube, Sie sind in Ordnung. Der relevante Abschnitt der GPL3 befindet sich am Ende von Abschnitt 5:

Eine Zusammenstellung eines abgedeckten Werkes mit anderen getrennten und unabhängigen Werken, die ihrer Natur nach keine Erweiterung des abgedeckten Werkes darstellen und nicht mit diesem kombiniert werden, um ein größeres Programm in oder auf einem Volumen einer Speicherung oder Verteilung zu bilden Medium, wird als "Aggregat" bezeichnet, wenn die Zusammenstellung und das daraus resultierende Urheberrecht nicht dazu verwendet werden, den Zugriff oder die gesetzlichen Rechte der Nutzer der Zusammenstellung über das hinaus einzuschränken, was die einzelnen Werke zulassen. Die Aufnahme eines abgedeckten Werks in ein Aggregat bewirkt nicht, dass diese Lizenz auf die anderen Teile des Aggregats angewendet wird.

Dies wird wahrscheinlich genau davon abhängen, was Ihr "Kunde" tut. Die Antwort von mouviciel ist wahrscheinlich eine gute Anleitung, wie man es sicher macht

Wenn Sie der Meinung sind, dass Ihre App eher eine Erweiterung der Bibliothek als ein damit aggregiertes Element ist, haben Sie wahrscheinlich Recht (Sie sollten dies an einem guten Ort wissen). In diesem Fall sollten Sie sich am besten an den Autor wenden und versuchen, eine zu erhalten andere Lizenz

Dies scheint meine Position zu untermauern, dass dies von der GPL ausdrücklich erlaubt ist, vorausgesetzt, es wird richtig gemacht.

jk.
quelle
Ich habe es gelesen, aber das Problem ist, dass der GPL-Text in juristischer Sprache geschrieben ist und nicht in der Entwicklung . Der Trick mit Wrapper besteht darin, die kommerzielle App zu "aggregieren" und nicht zu "abzuleiten". Aber ich denke, es fällt unter "Naturerweiterungen der abgedeckten Arbeit".
Andrey
gut für Hilfe in der Rechtssprache benötigen Sie einen Anwalt. Wenn Sie der Meinung sind, dass Ihre App eher eine Erweiterung der Bibliothek als ein damit aggregiertes Element ist, dann haben Sie wahrscheinlich Recht (Sie sollten an einem guten Ort sein, um dies zu wissen). In diesem Fall sollten Sie sich am besten an den Autor wenden und versuchen, eine zu erhalten andere Lizenz
jk.
1
@Andrey: Wenn die "Natur" Ihres Programms direkt mit dem GPL-Code verknüpft ist, gilt der oben angegebene Abschnitt nicht. Ihrer Frage nach scheint dies der Fall zu sein. Ein Gegenbeispiel könnte ein Programm zur Analyse von Netzeinbrüchen sein, das zufällig GNU readline über den von Ihnen vorgeschlagenen Mechanismus verwendet. (Readline ist ein interessanter Testfall, da es eine BSD-lizenzierte Drop-In-Alternative gibt.)
Fred Nurk
Die "aggregate" -Klausel soll verdeutlichen, dass auf derselben CD-Rom oder Linux-Distribution kein Derivat erstellt wird.
Sean McMillan
6

Weitere Informationen finden Sie unter Ich möchte GPL-Software in mein proprietäres System integrieren. Kann ich das tun?

Die Frage ist, ob Ihre Wrapper-Anwendung von sich aus verwendet werden kann. Wenn Sie eine Befehlszeilenversion Ihres Programms mit GPL erstellt haben, können Sie die GUI unter einer anderen Lizenz freigeben. Beispielsweise könnten Sie eine IDE für gcc erstellen, die eine geschlossene Quelle war, oder ein visuelles Diff-Tool, das auf diff basiert.

Wenn Sie eine Bibliothek einpacken, die nur von Ihrem Programm verwendet wird und die ohne diese Bibliothek nicht verwendet werden kann, handelt es sich um eine abgeleitete Arbeit, die unter der GPL veröffentlicht werden muss.

FigBug
quelle
Mein Verständnis ist, dass Sie den Wrapper unter MIT lizenzieren können und trotzdem OK sind.
Toaster
2
Colin, absolut nicht. Der Wrapper wird eindeutig mit der GPL-Bibliothek zu einer einzigen Binärdatei kombiniert. Um GPL-Code innerhalb einer Binärdatei zu verwenden, müssen Sie Ihren eigenen GPL-Code eingeben, um die Lizenz zu erfüllen.
Concrete Gannet
5

IMO, rechtlich ist es in Ordnung. (IANAL) Um die moralische Seite des Problems zu verbessern, bezeichnen Sie es nicht als "FooBar-Wrapper, der FooBar legal für MyClosedApp verfügbar macht", sondern als Server. Machen Sie es zu einem netten kleinen Open-Source-Programm, das "FooBar über das Internet" ermöglicht. Stellen Sie es auf SourceForge oder widmen Sie ihm eine Website mit Projektseite, Anweisungen und anderem Material. Dann lass "MyClosedApp" einfach den "FooBar Server" benutzen.

user281377
quelle
2

Soweit ich weiß, können Sie Ihre Software als geschlossene Quelle belassen, solange sie ihre Arbeit ohne die GPL-Bibliothek ausführen kann. Betrachten Sie die GPL-Bibliothek als Plugin, dessen Fehlen Ihre Software nicht unbrauchbar macht.

mouviciel
quelle
1
das ist definitiv falsch. Durch die Verwendung als Plugin (auch bekannt als dynamisches Verlinken) wird die resultierende Anwendung "abgeleitet" und unterliegt der GPL.
Andrey
Ich bin mir nicht sicher, ob Plugin immer mit dynamisch verknüpft ist. Und sicherlich schlägt das OP in diesem Fall nicht vor, irgendetwas dynamisch zu verknüpfen, also denke ich, dass der Ratschlag von mouviciel gültig ist
jk.
@jk gut, wenn du nur ein Plugin erstellst und es auf der GPL-Lizenz basiert, riecht dies als Verstoß.
Andrey
4
Die AGPL würde dies nur verbieten, wenn sich der Socket über ein Netzwerk befindet. Es ist ziemlich spezifisch. Es ist auch kein Test der Nützlichkeit, sondern der Genauigkeit der GPL und der proprietären Software. Statische Verknüpfungen sind definitiv zu eng, Sockets (mit Ausnahme des spezifischen AGPL-Falls) sind definitiv in Ordnung, dynamische Verknüpfungen können oder nicht (ich habe auf jeder Seite rechtlich begründete Argumente gehört, und es gibt noch keine US-Rechtsprechung).
David Thornley
1
@Andrey: Sie sagen also, solange eine Closed-Source-Software wie Photoshop in der Lage ist, ihre Arbeit ohne eine GPL-Komponente zu erledigen, kann man sie verteilen, ohne sie zur GPL zu machen. Das ist genau das, was diese Antwort sagt.
Doc Brown
1
  1. Versuchen Sie, eine Open Source-Alternative zu finden. Wenn es keine gibt, greifen Sie zur GPL.
  2. Überprüfen Sie, ob es sich um eine GPLv3 mit Affero-Klausel handelt. Wenn dies der Fall ist, ist nichts zu tun.
  3. Wenn es sich um GPLv2 handelt, können Sie genau das tun, was Sie vorschlagen.

Es gibt auch eine etwas umstrittene Option. In den meisten Gesetzgebungen sollte die dynamische Verknüpfung an "abgeleitete Arbeiten" gebunden sein. Die Logik dahinter ist, dass Sie beim dynamischen Verknüpfen nur Header-Dateien in Ihr Programm aufnehmen. In vielen Gesetzen werden Header-Dateien als API-Definition betrachtet und ausdrücklich vom Urheberrecht ausgeschlossen. Auf der anderen Seite erfolgt bei dynamischer Verknüpfung die tatsächliche Verknüpfung mit der GPL-Bibliothek auf dem System des Endbenutzers. Aber wie gesagt, es gibt viele Kontroversen, Stallman spricht sich entschieden dagegen aus.

vartec
quelle
Was ist der Unterschied zwischen GPL v2 und v3, der meinen Hack unmöglich macht? Was ich mache ist kein dynamisches Verlinken, ich entkopple sie so weit wie möglich.
Andrey
Eines der Ziele der GPLv3 war es, diese Umgehungsmethode zu verhindern.
Vartec
4
Erstens sind die GPL-Varianten offizielle, von OSI genehmigte Open Source-Lizenzen (so wie die BSD-Lizenz ohne Werbeklausel eine von Stallman genehmigte Lizenz für freie Software ist). Zweitens schränkt keine GPL-Version (einschließlich Affero) Ihre Fähigkeit ein, GPL- und proprietäre Software mit standardmäßigen prozessübergreifenden Kommunikationsmethoden wie Sockets zu kommunizieren.
David Thornley
IMO GPLv3, das zum Beispiel DRM-Klausel
zulässt
1
@vartec: DRM ist kein "Field of Endeavour". Siehe "Zum Beispiel darf es das Programm nicht daran hindern, in einem [kommerziellen Unternehmen] oder für die genetische Forschung verwendet zu werden." OSI glaubt anscheinend, dass die GPL3 Open Source ist und alle Punkte ihrer Definition erfüllt, weil sie sie genehmigt hat.
Thomas Edleson
0

Wäre es für Adam Brown legal, ein Programm zu schreiben, das eine GPL-Bibliothek verwendet und als "Server" fungiert, wenn er den gesamten Quellcode für alles, was damit zusammenhängt, freigibt, aber der einzige von ihm freigegebene Client-Code war ziemlich schwach, weil das alles ist er hatte clientseitig geschrieben? Ich sehe überhaupt keine Grundlage für die Annahme, dass dies nicht der Fall wäre.

Wenn Charles Dover den "Server" von Adam Brown fand und beschloss, ein Closed-Source-Programm zu schreiben, um mit ihm zu kommunizieren, würde die GPL seine Handlungen in irgendeiner Weise einschränken? Nicht, dass ich es sehen könnte, da seine einzige Verwendung von GPL-Software die Binärdateien sein würden, die er von Adam Brown erhalten hat. Wenn er Adams Binärdateien verteilen würde, müsste er auch einen Link zur Quelle einfügen, aber nichts anderes in der GPL würde irgendeinen von Charles 'Code beeinflussen.

In Bezug auf eine Person, die einen GPL-lizenzierten Server schreibt und diesen dann für seine eigenen Closed-Source-Zwecke verwendet, würde ich nicht glauben, dass es rechtliche Probleme geben sollte, wenn er beim Schreiben des Servers ernsthafte Anstrengungen unternahm, um dies zu erreichen nützlich für andere, die den mitgelieferten GPL-Code auf die gleiche Weise verwenden möchten. Insbesondere sollte die öffentlich veröffentlichte Dokumentation der Schnittstelle ausreichen, um es einem kompetenten Programmierer zu ermöglichen, entweder Code für einen Server zu schreiben, der vom Client-Programm genau wie das Original akzeptiert würde, und Client-Programme zu schreiben, die den Code verwenden würden Server in der gleichen Weise wie die Anwendung des Autors.

Superkatze
quelle