it-swarm-eu.dev

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

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

Ich habe beispielsweise eine GUI, die ein Programm verwendet (das sich unter der GPL befindet). Kann ich den Code in der GUI ausblenden und sogar verkaufen?

31
Valmond

Sie können verwenden ein GPLed-Programm aus Ihrem eigenen Programm verwenden, ohne dass Ihr Programm von der GPL betroffen ist. Sie können den GPLed-Code jedoch nicht mit Ihrem eigenen Programm verknüpfen, ohne dass Ihr Programm den Bestimmungen der GPL unterliegt.

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

Einige relevante Bits aus GPL FAQ :

Wo ist die Grenze zwischen zwei getrennten Programmen und einem Programm mit zwei Teilen? Dies ist eine rechtliche Frage, über die letztendlich die Richter entscheiden werden. 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 (welche Arten von Informationen ausgetauscht werden) abhängt.

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 verknüpft ausgeführt werden, bedeutet dies mit ziemlicher Sicherheit, 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. Wenn die Semantik der Kommunikation jedoch intim genug ist und komplexe interne Datenstrukturen austauscht, könnte dies auch eine Grundlage sein, um die beiden Teile als zu einem größeren Programm zusammengefasst zu betrachten.


Kann ich ein nicht freies Programm veröffentlichen, das zum Laden eines GPL-abgedeckten Plug-Ins entwickelt wurde?

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

Wenn das Programm Plug-Ins dynamisch verknüpft und Funktionsaufrufe miteinander ausführt und Datenstrukturen gemeinsam nutzt, bilden sie unseres Erachtens ein einziges Programm, das als Erweiterung sowohl des Hauptprogramms als auch der Plug-Ins behandelt werden muss. Um die GPL-abgedeckten Plug-Ins verwenden zu können, muss das Hauptprogramm unter der GPL oder einer GPL-kompatiblen Lizenz für freie Software veröffentlicht werden und die Bedingungen der GPL müssen eingehalten werden, wenn das Hauptprogramm zur Verwendung mit diesen verteilt wird Plugins.

Wenn das Programm Plug-Ins dynamisch verknüpft, die Kommunikation zwischen ihnen jedoch darauf beschränkt ist, 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 vollständig für das zugrunde liegende Befehlszeilenprogramm gilt. Wenn Sie sie verteilen (im Gegensatz dazu, dass Benutzer sie von einer anderen Quelle beziehen), sind Sie dafür verantwortlich, den Benutzern eine Kopie der GPL bereitzustellen und diese zu erstellen Stellen 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. Aus der GPL FAQ nochmal:

Wenn Benutzer GPL-abgedeckte Software vertreiben, die als "Teil" eines Systems bezeichnet wird, von dem Benutzer wissen, dass es teilweise proprietär ist, sind sich die Benutzer möglicherweise nicht sicher, welche Rechte sie in Bezug auf die GPL-abgedeckte Software haben. Wenn sie jedoch wissen, dass sie ein kostenloses Programm und ein weiteres Programm nebeneinander erhalten haben, sind ihre Rechte klar.

Standard-Haftungsausschluss: Ich bin kein Anwalt und selbst wenn ich Anwalt wäre, bin ich kein Ihr Anwalt. Wenn Sie eine endgültige Antwort benötigen, wenden Sie sich an einen geeigneten Anwalt, der in Ihrer Gerichtsbarkeit zugelassen ist.

31
Dave Sherohman

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.

0
Martin York