¿Un paquete dependiente de Rcpp requiere una licencia GPL?

8

Estoy escribiendo un paquete comercial que usa R (GPL) para su cálculo. Las preguntas frecuentes sobre GPL establecen claramente que los intérpretes de lenguaje de programación GPL no imponen restricciones de licencia al "programa" (archivo de texto con código R). Hasta aquí todo bien.

Parte del paquete se compila usando Rcpp, que también usa la GPL. El siguiente párrafo en las preguntas frecuentes dice:

Sin embargo, cuando el intérprete se extiende para proporcionar "enlaces" a otras instalaciones (a menudo, pero no necesariamente, bibliotecas), el programa interpretado está efectivamente vinculado a las instalaciones que utiliza a través de estos enlaces.

Se puede interpretar que R está proporcionando un enlace a las bibliotecas Rcpp ( Rcpp.dllen el paquete de Windows). La suposición segura es que esto contamina mi código con la GPL, pero ¿es esta realmente la conclusión correcta?

Parte de mi incertidumbre es la estrechez del vínculo entre mi código y Rcpp.dll. Hay referencias a Rcpp en el archivo dll, pero no soy lo suficientemente competente como para saber si se trata de referencias al entorno de desarrollo o de llamadas a símbolos dentro de la biblioteca Rcpp. Si es lo primero, entonces creo que la biblioteca Rcpp está siendo vinculada por R y no por mi biblioteca. Sin embargo, sospecho lo último, ya que Rcpp proporciona un pegamento (azúcar, en realidad) para simplificar la escritura y ejecución de códigos.

Hay innumerables discusiones relacionadas relacionadas con la GPL en la distribución de código. Para nombrar unos pocos:

NB: generalmente soy un gran defensor de OSS y he participado en el desarrollo y distribución en el pasado. Las preguntas sobre el "código de protección" a menudo provocan molestias de los programadores de código abierto, lo que a menudo resulta en acalorados debates sobre la filosofía del software. Reconozco el valor de ambos lados y quiero asegurarme de cumplir con la letra y (si es posible) el espíritu de las leyes. No estoy buscando un agujero en la licencia; Estoy buscando ayuda para interpretarlo y ponerlo en contexto.

¿Se requieren paquetes R que dependen de Rcpp para usar la GPL?

r2evans
fuente
¿Por qué publicaste aquí, en lugar de en el lugar donde los involucrados con Rcpp lo habrían visto antes?
Dirk Eddelbuettel
1
Lo hice (por correo electrónico) y respondiste poco después de que publiqué esta pregunta. Gracias. Y dado que este sitio se trata de "crear, entregar y mantener el software de manera responsable" (en el cual las licencias están vinculadas), no es inapropiado preguntar aquí también. No estaba evitando el lugar "perfecto", Dirk, preguntaba desde varias direcciones.
r2evans
Ok, contactar directamente es ciertamente útil, y no recordaba que lo hicieras. Solo me preocupaba que tuvieras una audiencia relevante para tu pregunta, y no conozco a nadie de nuestro equipo que lea este sitio.
Dirk Eddelbuettel
1
Preguntar aquí era más sobre el aspecto de "herencia GPL" que la programación de Rcpp. Hay un par de otros dialectos de esta pregunta (no solicitados): (1) herencia de GPL en general, (2) licencias de paquetes R sin código compilado, y (3) licencias de paquetes R con código C / C ++ (ya sea Rcpp o de otro modo). En retrospectiva, mi problema fue más el tercero que específico de Rcpp. Estoy mejorando un poco estos días sobre cómo hacer preguntas de manera más clara y clara.
r2evans
Gracias por el seguimiento, y espero que hayas recibido tus respuestas. Creo que (1) y (3) se entienden bastante bien debido al aspecto del código objeto / enlace. (2) es un poco diferente.
Dirk Eddelbuettel

Respuestas:

6

Sí, si vincula su código con la biblioteca Rcpp y distribuye el trabajo derivado, su paquete seguramente estará sujeto a la GPL. Las respuestas a esta pregunta relacionada se aplican a su situación.

A veces, el autor de un trabajo ofrecerá una opción entre licencias comerciales y de código abierto (con una tarifa que a menudo se requiere para la opción comercial), pero no parece que este sea el caso con Rcpp.

Sifferman
fuente
Esto es lo que sospecho también, gracias por evaluar. La pregunta relacionada no abordó el problema de comenzar con un intérprete, pero creo que tener enlaces en mi código a la Rcpp.dllbiblioteca cierra el trato. Gracias @sifferman.
r2evans
1
Creo que esta respuesta es un poco demasiado simplificadora; por favor vea mi respuesta a continuación.
usεr11852
12

Creo que los paquetes R que dependen de Rcpp no están obligados a usar GPL sino a usar una licencia compatible con GPL.

La lectura de la sección 1.5 de Rcpp-FAQ establece claramente que:

puede licenciar su trabajo en los términos que considere adecuados (siempre que sean compatibles con GPL, consulte el sitio de la FSF para obtener más detalles ).

Eso significaría que si uno elige usar, por ejemplo, la licencia de la cláusula BSD-3, está perfectamente bien hacerlo.

Para agregar una advertencia importante: como Dirk ha señalado en los comentarios, la agregación del código con licencia compatible con GPL y el código con licencia GPL tendrá que ser editado con GPL. Uno puede encontrar en gnu.org una buena explicación de qué es un agregado y qué no. Tenga en cuenta que cuando lanza un paquete, distribuye solo su código, por eso puede usar cualquier licencia compatible con GPL y no exclusivamente GPL.

usεr11852
fuente
El esta parte de la FSF FAQ aclara: el agregado siempre va a GPL; Sin embargo, usted es libre de licenciar su código bajo cualquier licencia compatible .
Dirk Eddelbuettel
Además, un escaneo casual de CRAN con sus cientos de paquetes que usan CRAN habría ilustrado esto lo suficientemente rápido.
Dirk Eddelbuettel
La respuesta es una cita selectiva de la [Pregunta 1.5 de las Preguntas frecuentes de Rcpp] (). Mejor lea todo, es corto.
Dirk Eddelbuettel
@DirkEddelbuettel: Disculpas, no entiendo exactamente lo que estás comentando. ¿Es mi respuesta que cualquier licencia compatible con GPL es suficiente, incorrecta? ¿Pretende llamar la atención sobre el hecho de que cientos de paquetes que usan Rcpp no ​​siempre usan GPL pero podrían usar diferentes licencias? (ej. BSD-3, Licencia Artística 2.0, MIT, etc.)
usεr11852
Su respuesta repite más o menos exactamente lo que digo en la sección 1.5 de las preguntas frecuentes de Rcpp . Simplemente no entiendo por qué elegiste citar una media oración cuando esta sección claramente necesita más de una oración. En conjunto, todo esto es cierto; simplemente no dices la parte importante. Mientras que "sí puede" (use una licencia que no sea GPL que sea compatible), la clave es que el trabajo agregado sigue siendo GPL por el diseño de la GPL.
Dirk Eddelbuettel