Kann ich GPL-Bibliotheken vorübergehend für das Prototyping verwenden und den zukünftigen Code als geschlossene Quelle verwenden?

23

Ich arbeite an einem Prototyp für ein Softwaresystem, das (zumindest zu Beginn) als Closed Source vorliegen wird.

Um Zeit zu sparen, denke ich darüber nach, eine Bibliothek zu verwenden (dh statisch zu verknüpfen), die unter der GPLv3 lizenziert ist , damit ich mein Design schnell testen kann. Wenn ich die Software zu diesem Zeitpunkt vertreiben würde, müsste ich den Quellcode mitverteilen.

Was ist, wenn ich es nicht tue, mich aber davon überzeugt habe, dass mein System funktioniert, und dann die GPL-Bibliothek durch meinen eigenen Code ersetze, bevor ich sie verteile? Wäre das Ergebnis durch die GPL "kontaminiert"?

Ich habe das Gefühl, dass das Beibehalten der GPL-Bibliothek in meinem Git- Verlauf einen Unterschied machen kann oder nicht.

Laurent S
quelle
16
Ich mag den Ausdruck "kontaminiert durch die GPL".
Arseni Mourzenko
7
es passt gut zum viralen Charakter der Lizenz :)
Laurent S
5
Korrigieren Sie mich, wenn ich falsch liege, aber Sie möchten ein Closed-Source-System veröffentlichen und gleichzeitig den Code auf git hosten? (und ich nehme an, dass dieser Git von anderen
gelesen werden kann.
3
@ user2813274, Sie können ein privates Git-Repository haben.
Arturo Torres Sánchez
5
Wenn Sie diese Frage interessant finden, könnte Sie auch der Vorschlag für den neuen Open Source Stackexchange interessieren .
Philipp

Antworten:

20

Die GPL schreibt :

Sie können ein auf dem Programm basierendes Werk oder die Änderungen, mit denen das Programm erstellt wird, in Form von Quellcode gemäß Abschnitt 4 übermitteln, sofern Sie auch alle folgenden Bedingungen erfüllen:

Daher gilt diese Bedingung nur, wenn Ihre Arbeit auf der Bibliothek basiert, die in der Lizenz wie folgt definiert ist:

Eine Arbeit zu „modifizieren“ bedeutet, dass alle oder ein Teil der Arbeit auf eine Weise kopiert oder angepasst werden, für die eine urheberrechtliche Genehmigung erforderlich ist, außer dass eine genaue Kopie angefertigt wird. Die resultierende Arbeit wird als "modifizierte Version" der früheren Arbeit oder als "auf der früheren Arbeit basierende" Arbeit bezeichnet.

Das heißt, Ihr Programm basiert nur dann auf der Bibliothek, wenn es sich um ein abgeleitetes Werk gemäß dem Urheberrecht handelt. Die rechtliche Definition dieses Begriffs variiert in den verschiedenen Gerichtsbarkeiten etwas und bezieht sich in der Regel nicht direkt auf Software. Zum Beispiel schreibt der US Copyright Act:

Ein "abgeleitetes Werk" ist ein Werk, das auf einem oder mehreren bereits existierenden Werken basiert, wie etwa einer Übersetzung, einer musikalischen Anordnung, einer Dramatisierung, einer Fiktionierung, einer Kinofassung, einer Tonaufnahme, einer Kunstwiedergabe, einer Kürzung, einer Verdichtung oder einer anderen Form, in der ein Werk vorliegt kann neu gefasst, umgewandelt oder angepasst werden. Ein Werk, das aus redaktionellen Überarbeitungen, Anmerkungen, Ausarbeitungen oder anderen Modifikationen besteht und insgesamt ein Originalwerk der Urheberschaft darstellt, ist ein „abgeleitetes Werk“.

Was dies für Software bedeutet, muss von den Gerichten auf der Grundlage früherer ähnlicher Urteile ausgelegt werden. Ich bin mit der einschlägigen Rechtsprechung in Ihrer Rechtsprechung nicht ausreichend vertraut, um mit Sicherheit sagen zu können, wie ein Gericht über Ihre Rechtssache entscheiden würde. Man könnte argumentieren, dass "das Ersetzen der GPL-Bibliothek durch eigenen Code" ein Akt der Übersetzung ist, insbesondere wenn Ihr Code stark von der GPL-Implementierung inspiriert ist. Selbst die erneute Verwendung der API der GPL-Bibliothek könnte Sie in heißes Wasser versetzen (siehe Oracle vs. Google ).

Wenn Ihnen die Antwort wichtig ist, empfehle ich, kompetenten Rechtsrat einzuholen, anstatt Fremde im Internet zu fragen.

Meriton - im Streik
quelle
1
ok, das ist interessant, ich wusste nicht, dass das Teilen einer API als abgeleitete Arbeit betrachtet werden kann.
Laurent S
Diese Antwort macht den gleichen Punkt, den ich in meiner Antwort unten machen wollte, aber auf eine viel klarere Weise. +1
Michael Shaw
23

Solange Sie die Software für niemanden freigeben, während Sie eine Verknüpfung zu GPL-Bibliotheken herstellen, sind Sie in Sicherheit. Der virale Aspekt der GPL tritt nur dann in Kraft, wenn Sie Ihre Software vertreiben.

Es wäre natürlich besser, wenn Sie eine Bibliothek mit einer freizügigeren Lizenz wie LGPL oder APL2 oder MIT finden könnten.

James McLeod
quelle
Natürlich werde ich versuchen, eine andere Bibliothek mit einer zulässigen Lizenz zu finden. Andernfalls klingt es so, als könnte ich alten GPL-Code in der Git-Geschichte haben und nicht die Bedingungen brechen, indem ich den zukünftigen Status des Codes verteile.
Laurent S
5
Diese Antwort berücksichtigt nicht das Risiko, dass beim Implementieren der neuen Version der Bibliothek eine abgeleitete Arbeit erstellt wird.
Michael Shaw
4
@Ptolemy Denken Sie daran, dass Sie die alte Version freigegeben haben, wenn Ihr Git-Verlauf freigegeben wird. Es muss nicht in binärer Form vorliegen, um zu zählen.
Piojo
2
@piojo Auf der anderen Seite verpflichtet Sie dies höchstens dazu, diese alte Version unter der GPL zu lizenzieren (und den Quellcode dafür zu verbreiten). Wenn Sie irgendwann das alleinige Copyright für den Code haben, können Sie alle zukünftigen Versionen als Closed-Source-Versionen ausführen (obwohl die alten Versionen weiterhin unter der GPL stehen). Je nachdem, wie viel proprietäres Material in der alten Version enthalten ist, können Sie ein Problem haben oder auch nicht.
7.
1
Solange Laurent S der Autor und Inhaber des Copyrights aller anderen Codes neben der GPL ist, ist er auch sicher. Er kann und darf das gesamte Werk unter den Bedingungen der GPL3 veröffentlichen, falls dies später der Fall sein sollte. Dies mag unerwünscht sein, aber OP ist auf jeden Fall sicher (wenn das Urheberrecht im Besitz ist).
Hakre
8

Ich glaube nicht, dass es bei Ihrer Frage wirklich um die GPL geht. Es geht um den Prototyp und darum, ob er in Zukunft als Grundlage für das lieferbare Softwaresystem verwendet wird.

Wenn Sie einen Wegwerfprototyp erstellen und keinen der Codes in Ihrem zu liefernden System wiederverwenden möchten, verwenden Sie eine GPL-Bibliothek.

Drei Ansätze, die Sie ergreifen können

Wenn Sie jedoch den Prototyp weiterentwickeln wollen (etwas, auf das viele Manager drängen!), Haben Sie drei Ansätze:

  1. Verschieben Sie die nicht zum Kern gehörenden Teile in separate Anwendungen, die über JSON oder eine REST-API oder eine andere prozessübergreifende Kommunikationssprache / -bibliothek mit Ihrem Kern kommunizieren. Ihre nicht zum Kern gehörenden Teile können daher auch GPL sein und Sie können beliebige GPL-Bibliotheken in ihnen verwenden.
  2. Entwerfen Sie Ihren Code so, dass Sie die Bibliotheken austauschen können. Dies bedeutet, dass eine Fassade erstellt wird , die die Implementierungsdetails verbirgt. Wenn Sie bereit sind, zu einer proprietären Bibliothek oder MIT / BSD-Bibliothek zu wechseln.
  3. Verwenden Sie den GPL-Code überhaupt nicht.

Ich schlage vor, Sie entscheiden sich für den ersten Ansatz, da Sie dann über Open Source-Arbeiten verfügen, die Sie in Zukunft als Teil Ihres professionellen Portfolios verwenden können.

Der zweite Ansatz ist ebenfalls gut, da Sie das System sowieso so entwerfen sollten , dass Sie genau die Funktionen / Klassen erstellen, die Sie benötigen, und diese auswerten, bis Sie die Bibliothek oder den benutzerdefinierten Code haben, der diese Funktionalität ausfüllt.

Rudolf Olah
quelle
2
Das Einfügen des GPL-Codes in einen anderen Prozess bedeutet nicht per se, dass er nicht mehr Teil des Programms ist und daher für die Lizenzierung des Restes nicht mehr relevant ist. Es kann aber helfen, sie gut genug zu trennen.
Deduplizierer
1
@Deduplicator Wenn es sich um separate Anwendungen handelt, die nicht ausreichen, müssen sie als separate Codebasis behandelt werden. Sie haben Recht. Irgendwie gefällt mir, was Twitter mit Bootstrap macht und was Facebook mit all seinen Bibliotheken macht. Nicht-Core Open Source mit proprietärem Kerncode.
Rudolf Olah
@omouse, ich kann nicht 1 tun, da es eingebettete Software ist. 2 war mein erster Gedanke, aber wenn ich sehe, was Ptolemaios und Meriton erwähnen, klingt es so, als würde ich abgeleitete Werke machen, also ist 3 wahrscheinlich der richtige Weg.
Laurent S
1
Betreff: "Ich glaube nicht, dass es bei Ihrer Frage wirklich um die GPL geht": Ich bin anderer Meinung. Eine Softwarelizenz könnte diese Art der Nutzung sicherlich verbieten. Eine Antwort, die den "GPL" -Teil der Frage ignorierte und nur als allgemeine Frage zu einer Open-Source-Lizenz mit einschränkenden Bedingungen und viralem Verhalten auffasste, musste auf "Wir wissen nicht, Sie müssen" zurückgreifen die Bedingungen der Lizenz zu lesen ".
Ruakh
Wenn Sie ein abgeleitetes Werk erstellen und wegwerfen, haben Sie noch ein abgeleitetes Werk erstellt und dürfen dies nur mit Genehmigung / Lizenz des ursprünglichen Copyright-Inhabers tun. Mit der GPL haben Sie diese Lizenz (wenn Sie die abgeleiteten Werke niemals verteilen, bevor Sie sie wegwerfen). Mit einer anderen Lizenz verfügen Sie möglicherweise nicht über die Berechtigung. Es kann jedoch schwierig sein, Sie auf Schadensersatz zu verklagen.
gnasher729
5

Ich kann mir zwei Aspekte vorstellen, die Sie bei Ihrem Ansatz berücksichtigen sollten. Die erste Möglichkeit ist unkompliziert: Wenn Sie Ihr Projekt nicht verteilen oder (oder weil es GPLv3 ist und es für die Öffentlichkeit zugänglich macht), während Sie Code verwenden, der unter der GPL veröffentlicht ist, ist es schwer einzusehen, wie Sie Ihren Code verteilen müssten auch unter der GPL-Lizenz unter den Weiterverteilungsbedingungen.

Der zweite Aspekt ist für Sie möglicherweise wichtiger. Wenn Sie eine eigene Implementierung erstellen, um die GPL-Bibliothek zu ersetzen, müssen Sie darauf achten, keine abgeleiteten Arbeiten zu erstellen. Ich bin mir zwar sicher, dass Sie gute Absichten haben, den Quellcode nicht direkt zu kopieren - aber Sie werden mit größerer Wahrscheinlichkeit keine wesentlichen Teile der Bibliotheks-API kopieren.

Wenn es sich um ein kommerzielles Produkt handelt, muss dieses Risiko geprüft und bewertet werden, indem die GPLv3-Lizenz sorgfältig durchgelesen wird und im Zweifelsfall eine professionelle Rechtsauffassung eingeholt wird.

Michael Shaw
quelle
4

Wenn Sie planen, Ihren eigenen Code zu schreiben, um den GPL-Code zu ersetzen, besteht ein potenzielles Problem, da Sie den Code nicht in einer Reinraumumgebung schreiben. Sie möchten wirklich, dass jemand, der sich noch nie den GPL-Code angesehen hat, eine Ersatzbibliothek schreibt. Wenn Sie hingegen eine GPL-Bibliothek einfach gegen eine bereits veröffentlichte Bibliothek mit einer anderen Lizenz austauschen möchten, ist dies kein Problem. Die andere Bibliothek wurde vermutlich bereits in einer Reinraumumgebung geschrieben.

Elin
quelle
2

Wenn Sie mit dem GPL-Code Zugriff auf die Revisionen gewähren, werden diese vollständig GPL-geschützt. Aber das willst du nicht, denn das wäre keine geschlossene Quelle ...

Für einen späteren Zustand, in dem kein GPL-Code mehr verwendet wird, ist es einfach irrelevant, dass Sie irgendwann zuvor GPL-Code verwendet haben.

Deduplizierer
quelle
2

Die GPL wird nur bei der Distribution ausgelöst ... Sie können tun, was Sie wollen, wenn Sie keine modifizierte Version oder abgeleitete Arbeit veröffentlichen.

Ich habe das Gefühl, dass das Beibehalten der GPL-Bibliothek in meinem Git-Verlauf einen Unterschied machen kann oder nicht.

Wenn Sie Ihre Quelle in einem öffentlichen Repository wie GitHub veröffentlichen möchten, liegt möglicherweise ein Problem vor. Nur Git zu benutzen ist irrelevant, wenn es privat ist.

Corey Goldberg
quelle