Um pacote dependente de Rcpp requer uma licença GPL?

8

Estou escrevendo um pacote comercial que usa R (GPL) para o seu cálculo. As Perguntas frequentes da GPL indicam claramente que os intérpretes da linguagem de programação GPL não impõem restrições de licenciamento ao "programa" (arquivo de texto com código R). Por enquanto, tudo bem.

Parte do pacote é compilada usando o Rcpp, que também usa a GPL. O próximo parágrafo da FAQ diz:

No entanto, quando o intérprete é estendido para fornecer "ligações" a outras instalações (frequentemente, mas não necessariamente, bibliotecas), o programa interpretado é efetivamente vinculado às instalações que utiliza através dessas ligações.

Pode-se interpretar que R está fornecendo uma ligação às bibliotecas Rcpp ( Rcpp.dllno pacote do Windows). A suposição segura é que isso atrapalha meu código com a GPL, mas essa é realmente a conclusão correta?

Parte da minha incerteza é a rigidez do link entre meu código e Rcpp.dll. Existem referências ao Rcpp na dll, mas não sou proficiente o suficiente para saber se essas são referências ao ambiente de desenvolvimento ou às chamadas que estão sendo feitas para símbolos na biblioteca do Rcpp. Se for o primeiro, acredito que a biblioteca Rcpp está sendo vinculada pelo R e não pela minha biblioteca. Eu suspeito que este último, no entanto, já que o Rcpp fornece uma cola (açúcar, na verdade) para simplificar a escrita e a execução do código.

Existem inúmeras discussões relacionadas à GPL na distribuição de código. Para nomear alguns:

NB: Geralmente sou um grande defensor do OSS e participei do desenvolvimento e distribuição no passado. Questões de "proteção de código" geralmente causam problemas aos programadores de código aberto, resultando frequentemente em debates acalorados sobre a filosofia do software. Reconheço valor de ambos os lados e quero garantir que estou cumprindo a letra e (se possível) o espírito das leis. Não estou pescando uma brecha na licença; Estou procurando ajuda para interpretar e colocar no contexto.

Os pacotes R que dependem do Rcpp são necessários para usar a GPL?

r2evans
fonte
Por que você postou aqui, e não no lugar onde aqueles que realmente estavam envolvidos com o Rcpp teriam visto isso antes?
Dirk Eddelbuettel
1
Fiz (via e-mail) e você respondeu logo depois que eu postei esta pergunta. Obrigado. E como este site é sobre "criar, fornecer e manter um software com responsabilidade" (no qual o licenciamento está vinculado), não é inapropriado perguntar aqui também. Eu não estava evitando o local "perfeito", Dirk, estava perguntando de várias direções.
R2evans
Ok, entrar em contato diretamente é certamente útil, e eu não me lembrava disso. Eu só estava preocupado com você obter uma informação relevante público para sua pergunta e não conheço ninguém da nossa equipe que esteja lendo este site.
Dirk Eddelbuettel 21/10
1
Perguntar aqui foi mais sobre o aspecto "herança GPL" do que sobre programação Rcpp. Existem alguns outros dialetos dessa pergunta (não perguntados): (1) herança GPL em geral, (2) licenciamento de pacotes R sem código compilado e (3) licenciamento de pacotes R com código C / C ++ (seja Rcpp ou então). Em retrospectiva, meu problema era mais o terceiro do que específico para o Rcpp. Hoje, estou ficando um pouco melhor sobre como fazer perguntas de maneira mais clara e objetiva.
R2evans
Obrigado pelo acompanhamento, e espero que você tenha suas respostas. Eu acho que (1) e (3) são muito bem compreendidos por causa do código do objeto / aspecto de vinculação. (2) é um pouco diferente.
Dirk Eddelbuettel

Respostas:

6

Sim, se você vincular seu código à biblioteca Rcpp e distribuir o trabalho derivado, seu pacote quase certamente estará sujeito à GPL. As respostas para esta pergunta relacionada se aplicam à sua situação.

Às vezes, o autor de uma obra oferece uma escolha entre licenças comerciais e de código aberto (com uma taxa geralmente necessária para a opção comercial), mas não parece que esse seja o caso do Rcpp.

Sifferman
fonte
Isso é o que eu suspeito também, obrigado por comentar. A questão relacionada não abordou a questão de começar com um intérprete, mas acho que ter links no meu código para a Rcpp.dllbiblioteca fecha o negócio. Obrigado, @sifferman.
R2evans
1
Eu acho que essa resposta é um pouco simplificadora demais; por favor, veja minha resposta abaixo.
usεr11852
12

Eu acredito que os pacotes R que dependem do Rcpp não são precisam usar a GPL, mas sim uma licença compatível com a GPL.

A leitura da seção 1.5 do Rcpp-FAQ afirma claramente que:

você pode licenciar seu trabalho de acordo com os termos que achar adequados (desde que sejam compatíveis com a GPL, consulte o site da FSF para obter detalhes ).

Isso significaria que, se alguém optar por usar, por exemplo, a licença da cláusula BSD-3, ele estará perfeitamente bem em fazê-lo.

Para adicionar uma ressalva importante: Como Dirk apontou nos comentários, a agregação de código licenciado compatível com GPL e código licenciado GPL terá que ser editada pela GPL. Pode-se encontrar no gnu.org uma boa explicação sobre o que é um agregado e o que não é. Observe que, quando você libera um pacote, distribui apenas seu código, é por isso que você pode usar qualquer licença compatível com GPL e não exclusivamente GPL.

usεr11852
fonte
A parte desta FAQ da FSF esclarece: o agregado está sempre indo para a GPL; no entanto, você pode licenciar seu código sob qualquer licença compatível .
Dirk Eddelbuettel
Além disso, uma varredura casual do CRAN, com centenas de pacotes usando o CRAN, ilustraria isso com bastante rapidez.
Dirk Eddelbuettel 21/10
A resposta está citando de maneira um tanto seletiva a partir da [Questão 1.5 da Rcpp FAQ] (). Melhor ler a coisa toda - é curta.
Dirk Eddelbuettel 21/10
@DirkEddelbuettel: Desculpas, não entendo exatamente o que você está comentando. Minha resposta é que qualquer licença compatível com GPL é suficiente, errada? Você pretende chamar a atenção para o fato de que centenas de pacotes que usam o Rcpp nem sempre usam a GPL, mas podem usar licenças diferentes? (por exemplo, BSD-3, licença artística 2.0, MIT, etc.)
usεr11852 22/10
Sua resposta reafirma exatamente o que eu digo na própria Seção 1.5 das Perguntas frequentes do Rcpp . Só não entendo por que você escolheu citar uma meia frase quando esta seção claramente precisa de mais de uma frase. Em conjunto, tudo isso é verdade; você simplesmente não diz a parte importante. Enquanto "sim, você pode" (use uma licença que não seja da GPL que seja compatível), a chave é que o trabalho agregado ainda é gerado pela GPL pelo design da GPL.
Dirk Eddelbuettel