Rufen Sie die GPL-Software von einer Nicht-GPL-Software aus auf

30

Kann ich (legal) ein Programm verwenden, das unter der GPL von einem anderen Programm veröffentlicht wurde, das ich schreibe, und muss die GPL (für das Programm, das ich schreibe) nicht respektieren?

Wenn ich zum Beispiel eine GUI habe, die ein Programm verwendet (das unter der GPL steht), kann ich den Code in der GUI verstecken und sogar verkaufen?

Valmond
quelle

Antworten:

30

Sie können verwenden ein GPLed Programm von Ihrem eigenen Programm ohne Ihr Programm von der GPL beeinflusst zu werden, aber Sie können die GPL - lizenzierten Code in Ihr eigenes Programm ohne Ihr Programm immer unterliegt der GPL Bedingungen nicht verknüpfen.

In dem in der Frage angegebenen Beispiel, in dem Sie einen GUI-Wrapper um ein vorhandenes Befehlszeilenprogramm geschrieben haben, ist Ihre GUI nicht an die Bedingungen der GPL gebunden, vorausgesetzt, es handelt sich um ein separates Programm, mit dem das GPLed-Programm in a ausgeführt wird Prozess trennen und nur über die vorhandene (n) Schnittstelle (n) damit kommunizieren - zB über die Kommandozeile und / oder über stdin / stdout.

Einige relevante Teile der GPL-FAQ :

Wo ist die Grenze zwischen zwei getrennten Programmen und einem Programm mit zwei Teilen? Dies ist eine rechtliche Frage, die letztendlich von den Richtern entschieden wird. Wir glauben, dass ein geeignetes Kriterium sowohl vom Kommunikationsmechanismus (exec, pipes, rpc, Funktionsaufrufe innerhalb eines gemeinsam genutzten Adressraums usw.) als auch von der Semantik der Kommunikation abhängt (welche Arten von Informationen ausgetauscht werden).

Wenn die Module in derselben ausführbaren Datei enthalten sind, werden sie definitiv in einem Programm kombiniert. Wenn Module so konzipiert sind, dass sie in einem gemeinsam genutzten Adressraum miteinander verknüpft ausgeführt werden, bedeutet dies fast sicher, dass sie zu einem Programm zusammengefasst werden.

Im Gegensatz dazu sind Pipes, Sockets und Befehlszeilenargumente Kommunikationsmechanismen, die normalerweise zwischen zwei separaten Programmen verwendet werden. Wenn sie für die Kommunikation verwendet werden, sind die Module normalerweise separate Programme. Aber wenn die Semantik der Kommunikation intim genug ist und komplexe interne Datenstrukturen ausgetauscht werden, könnte dies auch eine Grundlage sein, um die beiden Teile als zu einem größeren Programm zusammengefasst zu betrachten.


Kann ich ein nicht-kostenloses Programm veröffentlichen, mit dem ein Plug-in mit GPL geladen werden kann?

Es hängt davon ab, wie das Programm seine Plug-Ins aufruft. Wenn das Programm zum Aufrufen und Kommunizieren mit Plug-Ins beispielsweise nur einfache Fork- und Exec-Befehle verwendet, handelt es sich bei den Plug-Ins um separate Programme, sodass die Lizenz des Plug-Ins keine Anforderungen an das Hauptprogramm stellt.

Wenn das Programm Plug-Ins dynamisch verknüpft, Funktionsaufrufe vornimmt und Datenstrukturen gemeinsam nutzt, bilden sie unserer Ansicht nach ein einziges Programm, das als Erweiterung des Hauptprogramms und der Plug-Ins behandelt werden muss. Um die von der GPL abgedeckten Plug-Ins verwenden zu können, muss das Hauptprogramm unter der GPL oder einer GPL-kompatiblen freien Softwarelizenz veröffentlicht sein und die Bestimmungen der GPL müssen befolgt werden, wenn das Hauptprogramm zur Verwendung mit diesen verbreitet wird Plugins.

Wenn das Programm Plug-Ins dynamisch verknüpft, die Kommunikation zwischen ihnen sich jedoch darauf beschränkt, die Hauptfunktion des Plug-Ins mit einigen Optionen aufzurufen und auf die Rückkehr zu warten, ist dies ein Grenzfall.

Beachten Sie, dass die GPL in jedem Fall in vollem Umfang für das zugrunde liegende Befehlszeilenprogramm gilt. Wenn Sie sie vertreiben (im Gegensatz dazu, dass Benutzer sie von einer anderen Quelle beziehen), sind Sie dafür verantwortlich, Benutzern eine Kopie der GPL zur Verfügung zu stellen und sie zu erstellen Machen Sie ihnen klar, dass sich das Befehlszeilenprogramm unter der GPL befindet (auch wenn der GUI-Wrapper nicht vorhanden ist), und stellen Sie ihnen auf Anfrage den Quellcode des Befehlszeilenprogramms zur Verfügung. Nochmals aus der GPL-FAQ:

Wenn Leute GPL-bedeckte Software vertreiben, die als "Teil" eines Systems bezeichnet wird, von dem Benutzer wissen, dass es teilweise proprietär ist, sind sie sich möglicherweise ihrer Rechte bezüglich der GPL-bedeckten Software nicht sicher. Aber wenn sie wissen, dass das, was sie erhalten haben, ein kostenloses Programm plus ein weiteres Programm ist, werden ihre Rechte klar sein.

Standard-Haftungsausschluss: Ich bin kein Anwalt und auch wenn ich Anwalt wäre, bin ich nicht Ihr Anwalt. Wenn Sie eine endgültige Antwort benötigen, wenden Sie sich an einen geeigneten Anwalt, der für Ihre Rechtsprechung zugelassen ist.

Dave Sherohman
quelle
1
Es ist anzumerken, dass die Position der FSF zur Verknüpfung die Minderheitsposition ist. (Und, IMO, es macht überhaupt keinen Sinn. Ein automatisierter Prozess kann keine neue Arbeit erstellen.)
David Schwartz
1
Die FSF hat jedoch die GPL geschrieben. Dies macht ihre Meinung weitaus relevanter. "Wenn wir X sagen, meinen wir {...}" wird vor Gericht allgemein akzeptiert. "Als Sie X sagten, meinten Sie {...}", nicht so.
MSalters
Was bedeutet es, wenn "nur einfache Fork- und Exec-Befehle zum Aufrufen verwendet werden" - kann dies jemand klären?
Krunal
Also kann die GPL leicht umgangen werden, indem einfach ein Pipe-Wrapper geschrieben wird, um GPL-Code in einem separaten Prozess auszuführen? Das scheint die GPL irrelevant und unmöglich zu machen. Was ist, wenn ich meine eigene Bibliothek schreibe und zusammen mit einer GPL-Bibliothek darauf verweise? Wird meine separate Standalone-Bibliothek dann auch GPL-fähig? Was ist, wenn ich unter Verwendung von GPLed-Code eine Verknüpfung zu der Bibliothek einer anderen Person herstelle? Wird ihre Bibliothek zur GPL? Wenn Sie eine dieser Fragen mit Nein beantworten, öffnet sich eine riesige Lücke, um die GPL leicht zu umgehen. Wenn Sie mit Ja antworten, verletzen Sie das Urheberrecht.
Cerin
@Cerin - Die GPL gilt nur für Code, den Sie verteilen. So, während Sie schreiben ein Programm , das Links zu den beiden GPLed und Nicht-GPL-kompatible Lizenzen, können Sie nicht dann verteilen das Programm an Dritte, wie es GPLed laufen würde und nicht-GPL-kompatiblen Code in demselben Prozess. ("Verwendung ohne Neuverteilung" wird von vielen als eine Lücke in der GPL angesehen, da dies bedeutet, dass Webdienste und dergleichen die GPL vollständig umgehen können, weil sie die Software selbst ausführen, anstatt sie den Benutzern zum Ausführen zu geben. Die GNU AGPL ist eine Versuchen Sie, dieses Problem zu
beheben
0

Kommt darauf an, was du damit meinst?

  • kompilieren Sie es in Ihren Code
  • Verwenden Sie eine gemeinsam genutzte Bibliothek
  • Führen Sie eine ausführbare Datei aus

Es hängt auch genau davon ab, unter welcher Version / Variante der GPL sich der andere Code befindet.

  • GPL
  • LGPL
  • AGPL
  • Wahrscheinlich andere

Haftungsausschluss: Ich bin kein Anwalt.

Martin York
quelle
-2

Das hängt davon ab, wie genau Ihr Programm die GPL "benutzt". Die GPL-FAQ hat eine recht lange Erklärung , lässt aber noch viel zu interpretieren:

Sie können keine GPL-bezogene Software in ein proprietäres System integrieren. (...) In vielen Fällen können Sie die GPL-Software jedoch neben Ihrem proprietären System vertreiben. Um dies zu gewährleisten, müssen Sie sicherstellen, dass die freien und unfreien Programme zu marktüblichen Bedingungen kommunizieren und nicht so kombiniert werden, dass sie effektiv zu einem einzigen Programm werden. (...) Wenn die beiden Programme so kombiniert werden, dass sie effektiv zwei Teile eines Programms sind, können Sie sie nicht als zwei separate Programme behandeln. Die GPL muss also das Ganze abdecken.Wenn die beiden Programme wie der Compiler und der Kernel oder ein Editor und eine Shell gut voneinander getrennt bleiben, können Sie sie als zwei separate Programme behandeln - aber Sie müssen es richtig machen. Das Problem ist einfach eines der Form: wie Sie beschreiben, was Sie tun. Warum interessiert uns das? Weil wir sicherstellen möchten, dass die Benutzer den freien Status der GPL-abgedeckten Software in der Sammlung klar verstehen.

Ich denke in Ihrem Beispiel einer GUI, die hauptsächlich zum Aufrufen eines Befehlszeilen-GPL-Programms existiert, bilden die beiden eindeutig ein einziges Programm, sodass Sie Ihren Code unter der GPL freigeben müssten.

Michael Borgwardt
quelle
Nein, sie bilden nicht "eindeutig ein einziges Programm". Solange das zugrunde liegende Befehlszeilenprogramm in der Lage ist, auch ohne GUI-Overlay zu funktionieren, werden sie durch "bloße Aggregation" kombiniert und sind nicht "effektiv ein einzelnes Programm". Beachten Sie die Beispiele in dem Text, den Sie zitiert haben - ein Compiler befindet sich über dem Kernel und wird nicht ohne ihn ausgeführt, aber der Kernel wird ohne den Compiler problemlos ausgeführt.
Dave Sherohman
1
@ Dave: Ob das zugrunde liegende Befehlszeilenprogramm auch ohne das GUI-Overlay funktionsfähig bleibt, könnte relevant sein, wenn der Lizenzstatus des Befehlszeilenprogramms in Frage gestellt wird - die Frage betrifft jedoch die GUI, ohne die dies völlig nutzlos ist das Kommandozeilenprogramm, und daher ist es zweifelsohne wahr, dass sie ein einziges Programm bilden.
Michael Borgwardt
Lassen Sie uns eines der Beispiele aus dem von Ihnen zitierten Abschnitt ersetzen und sehen, wie das funktioniert. "... aber die Frage ist nach dem Compiler, der ohne den Kernel völlig nutzlos ist, und daher ist es zweifelsohne wahr, dass sie ein einziges Programm bilden." Außer natürlich, dass der von Ihnen zitierte Text ausdrücklich besagt, dass Sie sie als zwei separate Programme behandeln können. Wenn es nur um Abhängigkeiten ginge, könnten Sie niemals geschlossene Software unter Linux ausführen, da diese Software ohne den (GPL-) Kernel "völlig nutzlos" wäre.
Dave Sherohman
@ Dave: Außer natürlich, dass Compiler und alle Arten von geschlossener Software ohne den Linux-Kernel NICHT nutzlos sind, da sie auf allen Systemen ausgeführt werden können und können, die die POSIX- und / oder C-Bibliotheksstandards implementieren, und selbst signifikante Funktionen bieten . Eine völlig andere Sache als ein GUI-Wrapper, der nur zur Steuerung eines bestimmten Befehlszeilenprogramms existiert.
Michael Borgwardt
3
Sie liegen jedoch im GUI-Bereich falsch. Der gleiche GUI - Wrapper wird insbesondere spätere Versionen des Originals mit anderen CLI - Programmen arbeiten. Dies ist in diesem Zusammenhang relevant, da die ursprünglichen GPL-Rechte an dem zugrunde liegenden Programm weiterhin ausgeübt werden können. Wenn ich es neu kompiliere, um 10% schneller zu sein, behindert mich die CLI nicht.
MSalters
-3

Nein.

GPL-Code kann nur von anderen GPL-Codes verwendet werden.

Unter Berufung auf die erste Zeile des GPL- Artikels von Wikipedia :

Die GPL ist die erste Copyleft-Lizenz für den allgemeinen Gebrauch, dh abgeleitete Werke können nur unter den gleichen Lizenzbedingungen verbreitet werden.

Daneben ist die GPL mehrere Seiten lang und existiert in mehreren Versionen.


Achtung, persönliches Geschwätz voraus!

Ich persönlich mag die GPL-Lizenz nicht sehr, weil sie sehr restriktiv und virenartig ist. Sie nennen es "frei", aber es ist genau das Gegenteil, GPL-Code kann nur von anderen GPL-Codes verwendet werden. So können Sie andere Projekte in die GPL zwingen oder ganze Bibliotheken neu schreiben, unabhängig davon, ob Ihr aktuelles Projekt Open Source ist oder nicht. Es gab riesige Open-Source-Projekte, wie zum Beispiel freeBSD, die gezwungen waren, hunderttausende Zeilen Linux-Code umzuschreiben, weil ihre Lizenz nicht kompatibel war. Sie war zu "kostenlos" in dem Sinne "mach was du willst", was offensichtlich ist nicht kompatibel mit GPL.

Wenn Sie eine wirklich "kostenlose" Lizenz im Sinne von "tun, was Sie wollen" möchten, empfehle ich eine BSD- oder MIT-Lizenz ... eigentlich sind die meisten anderen Lizenzen in Ordnung. Es ist nur die GPL, die wirklich problematisch ist, weil sie so restriktiv ist und andere dazu zwingt. Schließlich ist es zu kompliziert.

Ah, ja, es ist auch ein One-Way-Ticket. GPL kann Code / Bibliotheken verwenden, die von den meisten Lizenzen lizenziert wurden. Diese Bibliotheken / Codes können jedoch keinen GPL-Code verwenden.

dagnelies
quelle
Es heißt "abgeleitete Werke". Umfasst das Software, die sich dynamisch mit GPL-Code verbindet?
Rightfold
@WTP: definitiv ja - der springende Punkt der LGPL ist, eine andere Lizenz zu haben, die dies erlaubt.
Michael Borgwardt
3
Eine GUI-Shell, die um ein Befehlszeilenprogramm gewickelt ist, ist keine "abgeleitete Arbeit" im Sinne des Urheberrechts.
Dave Sherohman
1
@ Dave Sherohman - das scheint nicht klar. Die akzeptierte Antwort auf diese Frage lautet: "Meiner Meinung nach sollte ein reiner Wrapper, der lediglich die Funktionalität eines GPL-Programms verfügbar macht, GPL sein." Es ist nicht nur der technische Aspekt, wie sie kommunizieren, es ist die Absicht. Wenn Sie beispielsweise ein Buch übersetzen, entsteht eine abgeleitete Arbeit. Das Konvertieren in das Kindle-Format wäre eine abgeleitete Arbeit. Ich konnte sehen, wie ein Richter entschied, dass das Hinzufügen einer GUI eine abgeleitete Arbeit schafft. In acht nehmen.
Scott Whitlock