Kann ich GPL-lizenzierte Software auf meinem Server kommerziell verwenden, wenn ich nur die Client-Software verteile?

15

Ich verstehe die Regeln der GPL besagt , dass , wenn ich jede Software mit GPL - Code zu verteilen, dann dieser Code muss werden unter der GPL lizenziert .

Ich frage mich jedoch, wie die Regeln in diesem Fall lauten: Ich erstelle einen Dienst, bei dem ich clientseitige Software verkaufen und vertreiben werde .

Die clientseitige Software enthält absolut keinen GPL-Code. Es ist zu 100% mein eigener Code.

Die Client-Software stellt jedoch eine Verbindung zu meinem Server her, der intern GPL-Code verwendet.

Ich bin nicht die Verteilung von meiner Server - Seite Software; Die serverseitige Software befindet sich auf einem dedizierten Server, den ich allein kontrolliere. Die clientseitige Software funktioniert jedoch nicht, ohne eine Verbindung zu diesem Server herzustellen.

Zählt dies als eine Software? Wenn ich dies tun würde, müsste ich meinen clientseitigen Quellcode als GPL lizenzieren? Oder kann ich die clientseitige Software verkaufen, ohne den Quellcode freizugeben?

Steven Jeffries
quelle

Antworten:

12

Dies ist kein eindeutiges Problem. Betrachten Sie zwei extreme Enden des Spektrums:

  1. Ihre proprietäre Client-Software ist ein HTTP-Client und rendert HTML-Antworten. Es kann mit jedem HTTP-Server arbeiten. Der HTTP-Server, den Sie für Ihren Dienst verwenden, verwendet GPL-Komponenten.

  2. Sie haben ein Programm, das GPL-lizenzierte Komponenten verwendet. Sie wählen einen beliebigen Punkt in der Operation dieses Programms und teilen das Programm in zwei Programme auf. Die beiden Programme kommunizieren über einen völlig überflüssigen Netzwerksprung. Sie setzen alle GPL-lizenzierten Komponenten in das erste Programm und die erste Lizenz unter der GPL ein und Sie lizenzieren das andere Programm unter einer GPL-inkompatiblen Lizenz.

Der erste Fall ist eindeutig in Ordnung. Der zweite Fall ist eindeutig nicht in Ordnung. Sie haben nicht viele Informationen zu Ihrem speziellen Fall gegeben, und selbst wenn Sie dies getan haben, könnte nur ein Gerichtsurteil endgültig entscheiden, ob Sie im Recht sind.

Die GPL-FAQ enthält folgende Informationen zu interoperablen, separat lizenzierten Programmen :

In vielen Fällen können Sie die mit der GPL abgedeckte Software jedoch zusammen mit 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.

Der Unterschied zwischen dieser und der „Einbindung“ der GPL-Software ist zum Teil inhaltlich und zum Teil formell. Der wesentliche Teil ist: Wenn die beiden Programme so kombiniert werden, dass sie effektiv zu zwei Teilen eines Programms werden, können Sie sie nicht als zwei separate Programme behandeln. Die GPL muss also das Ganze abdecken.

Sie müssen entscheiden, ob Ihr Client als Server den Standard "zwei Teile desselben Programms" erfüllt (und daher jeweils unter der GPL lizenziert sein muss) oder nicht. In den GPL-FAQ finden Sie zu diesem Thema weitere Erklärungen zu einer anderen Frage :

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 in einem gemeinsam genutzten Adressraum usw.) als auch von der Semantik der Kommunikation abhängt (welche Arten von Informationen ausgetauscht 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 .

Die Netzwerkkommunikation besteht also zweifellos den Test "Mechanismus der Kommunikation", es ist jedoch unklar, wo Ihr Client / Server-Paar in den Test "Semantik der Kommunikation" fällt.

Apsillers
quelle
Wäre es vernünftig, die Unterscheidung nach dem Ausmaß der öffentlichen Schnittstellen zwischen den Programmen zu stützen? Wenn ich z. B. ein Schachspielsystem implementiere, das ein GPL-Benutzeroberflächenprogramm verwendet, das mit einer proprietären Schach-Engine kommuniziert, und dokumentiere, wie jeder, der seine eigene Schach-Engine schreiben möchte, dasselbe UI-Front-End verwenden kann, würde ich das tun Ich denke, das sollte den Geist (und hoffentlich den Buchstaben) der GPL befriedigen, auch wenn das Front-End der Benutzeroberfläche keinen anderen Zweck hätte, als mit dem proprietären Programm zu sprechen, es sei denn, jemand schrieb eine alternative Engine.
Supercat
Hmm. Ich habe diese Frage so vage gestellt, weil ich nur neugierig auf die GPL im Allgemeinen war. Ich denke jedoch, dass ich den Unterschied jetzt verstehe. Wenn mein Server über Benutzerkontoinformationen verfügt, die meine Client-Software ausführen muss, verstößt dies eindeutig gegen die GPL. Wenn mein Server so etwas wie ein Paket-Relay-Server ist, mit dem nur zwei Versionen meiner Client-Software miteinander kommunizieren können, ist das in Ordnung. Bin ich in diesen Annahmen richtig?
Steven Jeffries
4

Bei zwei über ein Netzwerk kommunizierenden Prozessen wird keine abgeleitete Arbeit erstellt, wie dies bei der Verknüpfung einer ausführbaren Datei mit einer Bibliothek der Fall ist. Daher gilt der GPL-Code auf dem Server nicht für den Client-Code.

Unter der GPL müssen Sie den geänderten Quellcode verteilen, wenn Sie Binärdateien verteilen. Da Sie die Server-Binärdateien nicht verteilen, müssen Sie den Server-Quellcode nicht verteilen.

Die GNU Affero GPL ist eine Lizenz, die der GPL ähnelt, mit zusätzlichen Worten, die genau diese Lücke schließen sollen, die Sie ausnutzen möchten (siehe: http://www.gnu.org/licenses/why-affero-gpl.html und http://en.wikipedia.org/wiki/Affero_General_Public_License#Examples_of_web_applications_under_GNU_AGPL ).

Haftungsausschluss: Ich bin ein Entwickler, kein Anwalt.

J. Lenthe
quelle
3
Nur ein Hinweis der Warnung: Wenn der Kunde gezielt kommunizieren konzipiert ist dieser Server - Software, dann ist es durchaus möglich , dass die FSF tut betrachten Server- und Client - Software als ein Produkt. Siehe auch hier in der GPL FAQ
Bart van Ingen Schenau
Wenn andererseits ein Dritter Client-Software schreibt, um mit Ihrem Server zu kommunizieren, ohne jemals die Server-Software oder eine Lizenz gesehen zu haben, erscheint dieses Argument lächerlich. Microsoft könnte zum Beispiel jeden verklagen, der Software schreibt, die eine Verbindung zu Outlook-Servern herstellt.
gnasher729
2

Ist die ordnungsgemäße Funktion der Client-Software von der Server-Software abhängig? Mit anderen Worten, funktioniert die Client-Software, ohne mit dem Server verbunden zu sein?

Wenn die Antwort darauf "Ja" lautet und der Server Ihrer Client-Software lediglich eine zusätzliche Funktion und keine Kernunterstützung bietet, sind Sie wahrscheinlich im klaren. Wenn die Serversoftware ein integraler Bestandteil der Client-Software ist und der Client-Software Kernfunktionen bereitstellt (dh die Client-Software funktioniert ohne den Server nicht), handelt es sich bei der Kombination um eine abgeleitete Arbeit, die unter die GPL fällt .

Robert Harvey
quelle
Ich werde auf Nummer sicher gehen und dann keinen GPL-Code auf meinem Server verwenden.
Steven Jeffries
2
@StevenJeffries Diese Antwort widerspricht sowohl der aktuellen Praxis als auch den Anforderungen der GPL. Solange ich keine Software oder abgeleitete Arbeit verteile, kann ich GPL-Software auf einem Server verwenden, z. B. Linux oder GCC oder WordPress. Die bloße Verwendung einer Software erzeugt keine abgeleitete Arbeit. Im Fall der GPL wird dies als in Ordnung angesehen, wenn zumindest eine Trennung auf Prozessebene beteiligt ist (kein gemeinsam genutzter Speicher, keine gemeinsam genutzten Datenstrukturen). Siehe die Antwort von J. Lenthe für eine korrekte Lösung und Hinweise.
amon
@amon: Wenn Sie nicht einmal Datenstrukturen zwischen dem Server und dem Client gemeinsam nutzen, haben Sie Recht. Ich bezweifle jedoch, dass dies der Fall ist. Die Unterscheidung, die ich mache (ist die Client-Software, deren ordnungsgemäße Ausführung von der Server-Software abhängig ist), ist nicht willkürlich. Dies ist eine der beiden Grundvoraussetzungen für das, was die FSF nicht als "abgeleitete Arbeit" ansieht. Das andere ist "Kommunikation auf Distanz". Nimm mein Wort nicht dafür; Lesen Sie es selbst auf der FSF-Website.
Robert Harvey
@amon: Sie können mehr über lesen , dass hier .
Robert Harvey
@amon Ein weiterer sehr relevanter GPL-FAQ-Punkt (gut als Follow-up nach dem Lesen von Roberts Link) ist dieser, insbesondere die letzten drei Absätze: gnu.org/licenses/gpl-faq.html#MereAggregation
apsillers