Benötigt ein Rcpp-abhängiges Paket eine GPL-Lizenz?

8

Ich schreibe ein kommerzielles Paket, das R (GPL) für seine Berechnung verwendet. In den häufig gestellten Fragen zur GPL wird klargestellt, dass GPLed-Programmiersprachendolmetscher dem "Programm" (Textdatei mit R-Code) keine Lizenzbeschränkungen auferlegen. So weit, ist es gut.

Ein Teil des Pakets wird mit Rcpp kompiliert, das auch die GPL verwendet. Der nächste Absatz in den FAQ lautet:

Wenn der Interpreter jedoch erweitert wird, um "Bindungen" für andere Einrichtungen (häufig, aber nicht unbedingt für Bibliotheken) bereitzustellen, wird das interpretierte Programm effektiv mit den Einrichtungen verknüpft, die es über diese Bindungen verwendet.

Es kann interpretiert werden, dass R eine Bindung zu den Rcpp-Bibliotheken bereitstellt ( Rcpp.dllim Windows-Paket). Die sichere Annahme ist, dass dies meinen Code mit der GPL verschmutzt, aber ist dies wirklich die richtige Schlussfolgerung?

Ein Teil meiner Unsicherheit ist die enge Verbindung zwischen meinem Code und Rcpp.dll. Es gibt Verweise auf Rcpp in der DLL, aber ich bin nicht kompetent genug, um zu wissen, ob dies Verweise auf die Entwicklungsumgebung oder auf Aufrufe von Symbolen in der Rcpp-Bibliothek sind. Wenn erstere, dann glaube ich, dass die Rcpp-Bibliothek durch R und nicht durch meine Bibliothek verknüpft wird. Ich vermute jedoch Letzteres, da Rcpp einen Klebstoff (eigentlich Zucker) bereitstellt, um das Schreiben und Ausführen von Code zu vereinfachen.

Es gibt unzählige verwandte Diskussionen im Zusammenhang mit der GPL in der Codeverteilung. Um ein paar zu nennen:

NB: Ich bin im Allgemeinen ein großer Befürworter von OSS und habe in der Vergangenheit an der Entwicklung und dem Vertrieb teilgenommen. Fragen zum "Schutz von Code" werfen häufig Probleme bei Open-Source-Programmierern auf, was häufig zu heftigen Debatten über die Softwarephilosophie führt. Ich erkenne den Wert auf beiden Seiten und möchte sicherstellen, dass ich den Buchstaben und (wenn möglich) den Geist der Gesetze erfülle. Ich fische nicht nach einer Lücke in der Lizenz; Ich suche Hilfe beim Interpretieren und Einfügen in den Kontext.

Sind R-Pakete, die von Rcpp abhängen, erforderlich, um die GPL zu verwenden?

r2evans
quelle
Warum haben posten Sie hier, anstatt am Ort , an dem die tatsächlich beteiligt mit RCPP wäre es früher gesehen haben?
Dirk Eddelbuettel
1
Ich habe es getan (per E-Mail), und Sie haben kurz nach dem Posten dieser Frage geantwortet. Vielen Dank. Und da es auf dieser Website darum geht, "Software verantwortungsbewusst zu erstellen, bereitzustellen und zu warten" (an die die Lizenzierung gebunden ist), ist es nicht unangemessen, auch hier nachzufragen. Ich habe den "perfekten" Veranstaltungsort nicht gemieden, Dirk, ich habe aus mehreren Richtungen gefragt.
R2evans
Ok, direkt zu erreichen ist sicherlich nützlich, und ich habe mich nicht daran erinnert, dass Sie es getan haben. Ich habe mich nur darum gekümmert, dass Sie ein relevantes Publikum für Ihre Frage finden, und ich kenne niemanden aus unserem Team, der diese Website liest.
Dirk Eddelbuettel
1
Hier zu fragen war mehr über den Aspekt "GPL-Vererbung" als über die Rcpp-Programmierung. Es gibt einige andere Dialekte dieser Frage (nicht gestellt): (1) GPL-Vererbung im Allgemeinen, (2) Lizenzierung von R-Paketen ohne kompilierten Code und (3) Lizenzierung von R-Paketen mit C / C ++ - Code (ob Rcpp oder andernfalls). Im Nachhinein war mein Problem eher das dritte als das spezifische für Rcpp. Ich werde heutzutage ein bisschen besser darin, wie ich Fragen gezielter und klarer stellen kann.
R2evans
Vielen Dank für das Follow-up und ich hoffe, Sie haben Ihre Antworten erhalten. Ich denke, (1) und (3) sind aufgrund des Objektcode- / Verknüpfungsaspekts ziemlich gut verstanden. (2) ist etwas anders.
Dirk Eddelbuettel

Antworten:

6

Ja, wenn Sie Ihren Code mit der Rcpp-Bibliothek verknüpfen und die abgeleitete Arbeit verteilen, unterliegt Ihr Paket mit ziemlicher Sicherheit der GPL. Die Antworten auf diese verwandte Frage gelten für Ihre Situation.

Manchmal bietet der Autor eines Werks die Wahl zwischen kommerziellen und Open-Source-Lizenzen (mit einer Gebühr, die häufig für die kommerzielle Option erforderlich ist), aber es scheint nicht, dass dies bei Rcpp der Fall ist.

Sifferman
quelle
Dies ist auch das, was ich vermute, danke, dass Sie sich eingemischt haben. Die verwandte Frage hat sich nicht mit dem Problem befasst, mit einem Dolmetscher zu beginnen, aber ich denke, dass Links in meinem Code zur Rcpp.dllBibliothek den Deal besiegeln. Danke, @sifferman.
R2evans
1
Ich denke, dass diese Antwort etwas zu stark vereinfacht ist; Bitte sehen Sie meine Antwort unten.
usεr11852
12

Ich glaube, dass R-Pakete, die von Rcpp abhängen, keine GPL verwenden müssen, sondern eine GPL-kompatible Lizenz.

Beim Lesen der Rcpp-FAQ in Abschnitt 1.5 heißt es eindeutig:

Es steht Ihnen frei, Ihre Arbeit unter den Bedingungen zu lizenzieren, die Sie für geeignet halten (sofern diese GPL-kompatibel sind, finden Sie weitere Informationen auf der FSF-Website ).

Das würde bedeuten, dass man, wenn man zum Beispiel die BSD-3-Klausel-Lizenz verwendet, vollkommen in Ordnung ist, dies zu tun.

Um eine wichtige Einschränkung hinzu: Wie Dirk hat in den Kommentaren die Aggregation von GPL-kompatiblen lizenzierten Code und GPL-lizenzierten Code darauf hingewiesen werden müssen GPL-ed. Man kann in gnu.org eine gute Erklärung finden, was ein Aggregat ist und was nicht. Beachten Sie, dass Sie bei der Veröffentlichung eines Pakets nur Ihren Code verteilen . Aus diesem Grund können Sie jede GPL-kompatible Lizenz und nicht ausschließlich GPL verwenden.

usεr11852
quelle
In diesem Teil der FSF-FAQ wird klargestellt: Das Aggregat wird immer an die GPL gesendet. Es steht Ihnen jedoch frei, Ihren Code unter einer kompatiblen Lizenz zu lizenzieren.
Dirk Eddelbuettel
Auch ein gelegentlicher Scan von CRAN mit seinen Hunderten von Paketen unter Verwendung von CRAN hätte dies schnell genug veranschaulicht.
Dirk Eddelbuettel
Die Antwort zitiert etwas selektiv aus [Frage 1.5 der Rcpp-FAQ] (). Lesen Sie besser das Ganze - es ist kurz.
Dirk Eddelbuettel
@DirkEddelbuettel: Entschuldigung, ich verstehe nicht, was Sie genau kommentieren. Ist meine Antwort, dass eine GPL-kompatible Lizenz ausreicht, falsch? Möchten Sie darauf aufmerksam machen, dass Hunderte von Paketen, die Rcpp verwenden, nicht immer GPL verwenden, sondern möglicherweise unterschiedliche Lizenzen verwenden? (zB BSD-3, Artistic License 2.0, MIT usw.)
usεr11852
Ihre Antwort entspricht ziemlich genau dem, was ich in Abschnitt 1.5 der Rcpp-FAQ sage . Ich verstehe nur nicht, warum Sie einen halben Satz zitiert haben, wenn dieser Abschnitt eindeutig mehr als einen Satz benötigt. In Summe all dies wahr ist ; Sie sagen einfach nicht den wichtigen Teil. Während "Ja, Sie können" (verwenden Sie eine Nicht-GPL-Lizenz, die kompatibel ist), ist der Schlüssel, dass die Gesamtarbeit immer noch durch das Design der GPL GPL- fähig ist .
Dirk Eddelbuettel