Nach meinem Verständnis verbietet die GPL das statische Verknüpfen von Nicht-GPL-Code mit GPL-Code, erlaubt jedoch das dynamische Verknüpfen von Nicht-GPL-Code mit GPL-Code. Was ist es also, wenn der betreffende Code überhaupt nicht verlinkt ist, weil der Code in einer interpretierten Sprache (zB Perl) geschrieben ist?
Es scheint zu einfach zu sein, die Regel auszunutzen, wenn sie als dynamische Verknüpfung angesehen wird. Andererseits scheint es auch unmöglich zu sein, GPL-Code von Nicht-GPL-Code legal zu referenzieren, wenn sie als statisch angesehen wird! Kompilierte Sprachen unterscheiden zumindest zwischen statischen und dynamischen Verknüpfungen. Wenn jedoch bei allen "Verknüpfungen" nur Skripte ausgeführt werden, ist es unmöglich zu sagen, was beabsichtigt ist, ohne eine explizite Lizenz!
Oder ist mein Verständnis dieses Problems falsch, was die Frage zur Diskussion stellt? Ich habe auch von einer "Klassenpfad-Ausnahme" gehört, die dynamisches Verknüpfen beinhaltet. Ist das nicht Teil der GPL, sondern kann etwas hinzugefügt werden, sodass dynamisches Verknüpfen nur zulässig ist, wenn die Lizenz diese Ausnahme enthält?
Antworten:
In Bezug auf die spezifischen Fragen zu den interpretierten Sprachen ist die GPL-FAQ sehr klar :
Als allgemeine Frage über dynamische vs statische Verknüpfung. Zuallererst ist die Ansicht von FSF und Stallman, dass es egal ist, ob die Verknüpfung statisch oder dynamisch ist, die GPL infiziert sie in beide Richtungen. Aus der FSF GPL FAQ:
und
Dies ist jedoch aus rechtlicher Sicht fraglich. In dem einzigen Fall, der tatsächlich wegen dynamischer Verlinkung vor Gericht ging, entschied Galoob gegen Nintendo - Court of Appeals, dass abgeleitete Werke "einen Teil der urheberrechtlich geschützten Werke in irgendeiner Form enthalten müssen" . Was bei dynamischer Verlinkung nicht der Fall ist.
Unabhängig davon, ob dynamische Verknüpfungen tatsächlich infizieren oder nicht, gibt es eine Problemumgehung. Es wird zum Beispiel von Nvidia verwendet, um Binärtreiber für Linux bereitzustellen. Sie erstellen einen (L) GPL-Wrapper, aber als Autor dürfen Sie eine spezielle Ausnahme hinzufügen, um eine Verknüpfung mit einer bestimmten geschlossenen Quelle herzustellen. Vide FSF GPL FAQ .
quelle
Foo()
statisch mit Call Joe's verbundenBar()
ist, welchem Copyright-Inhaber sollte dieCALL
Anweisung zwischen beiden zugerechnet werden? Eine solche Interaktion würde ausreichen, um eine "abgeleitete Arbeit" zu bilden. Wenn jedoch Joes Arbeit vollständig in einer Datei und Bobs Arbeit vollständig in einer anderen Datei verbleibt, stellt das bloße Erscheinen dieser Dateien in verschiedenen Verzeichnissen auf derselben Festplatte eine Aggregation und keine Ableitung dar.Hinweis: Dies ist eine rechtliche Frage. Programmers.SE ist kein juristisches Forum, sondern ein Programmierforum. Während die Leute hier einiges über Programmierung wissen, wissen sie nichts über das Gesetz. Wenn Sie eine juristische Frage stellen möchten, sollten Sie dies in einem juristischen Forum tun, in dem es Leute gibt, die tatsächlich etwas über das Thema wissen.
Die GPL sagt nichts über statische oder dynamische Verknüpfungen aus. Es ist nicht einmal etwas sagen über die Verknüpfung überhaupt . Jeder Anwalt oder Richter, mit dem ich gesprochen habe, sagt, dass das Problem der statischen und dynamischen Verknüpfung völlig irrelevant ist.
Beim Urheberrecht geht es um Kreativität. Statische vs. dynamische Verknüpfung ist ein Detail der technischen Implementierung. Ob etwas statisch oder dynamisch verknüpft ist oder nicht, ist keine kreative Handlung, sondern kann möglicherweise den Copyright-Status eines Werks ändern.
In Ihrer Frage sprechen Sie von "interpretierten Sprachen". Aber dieser Begriff ergibt keinen Sinn: Es gibt keine interpretierte Sprache. Eine Sprache ist ein abstrakter Satz mathematischer Regeln und Einschränkungen. Eine Sprache wird nicht interpretiert oder kompiliert. Eine Sprache einfach ist . Der Begriff "interpretierte Sprache" ist nicht nur falsch , sondern auch unsinnig . Wenn Englisch eine getippte Sprache wäre, wäre dies ein Tippfehler.
Interpretation und Kompilierung sind Merkmale des Interpreten oder Compilers (duh!), Nicht der Sprache. Jede Sprache kann mit einem Interpreter implementiert werden, und jede Sprache kann mit einem Compiler implementiert werden. Die meisten Sprachen haben beides. Die meisten modernen Sprachimplementierungen kombinieren sogar beides in einer einzigen Ausführungsmaschine.
Die Rubinius Ruby-Implementierung enthält zum Beispiel einen statischen Voraus-Compiler, der Ruby-Code in Rubinius-Byte-Code kompiliert, einen Interpreter, der Rubinius-Byte-Code interpretiert, und einen dynamischen Just-in-Time-Compiler, der Rubinius-Byte-Code in LLVM kompiliert IR, das die LLVM-Infrastruktur wiederum zu systemeigenem Maschinencode kompiliert. Die MacRuby Ruby-Implementierung enthält überhaupt keinen Interpreter. Sie kompiliert Ruby-Code direkt in LLVM IR und anschließend in systemeigenen Computercode.
Auf der anderen Seite gibt es Interpreter für C oder C ++.
All dies sind nur technische Details. Es ist für das Urheberrecht völlig irrelevant.
Es macht einfach keinen Sinn, ob jemand das Urheberrecht eines anderen verletzt oder nicht, hängt davon ab, ob eine dritte Person das Programm mit einem Interpreter ausführt oder es zuerst kompiliert.
Die Frage ist, ob ein Werk von einem anderen Werk abgeleitet ist oder nicht. Es kann dynamisch verknüpft und dennoch abgeleitet werden, und es kann statisch verknüpft und überhaupt nicht abgeleitet werden.
quelle
Keine Ahnung, wie viel Wahrheit darin steckt, und IANAL usw .; Bei meiner Interpretation ist es jedoch wichtig, ob die Bibliothek, mit der Sie verknüpfen, in irgendeiner Form in der "Binärdatei" enthalten ist (wobei "Binärdatei" im Fall dynamischer Programmiersprachen nur der verteilte Quellcode ist) was ich von der FSF-Definition von "binär" in diesem Zusammenhang halte).
Wenn Sie also Bibliotheken aus Ihrem Code referenzieren, ohne sie in Ihre Distribution aufzunehmen, würde ich dies als "dynamisches Verknüpfen" bezeichnen, wohingegen Sie, wenn Sie die Bibliotheken mit Ihrem Produkt bündeln oder Teile der Bibliothek in Ihren eigenen Code kopieren, Das Szenario "statische Verknüpfung" würde zutreffen. Dies liegt zumindest im Geiste der GPL: Sie können die GPL- Software ohne Einschränkungen frei verwenden (ausführen, überprüfen, referenzieren), aber sobald Sie sich daraus ableiten (indem Sie Teile davon verknüpfen oder in Ihre GPL kopieren) eigene vertreibbare Produkt), es geht viral, und Ihre Software muss auch GPL sein.
quelle