Evite a violação da GPL movendo a biblioteca para fora do processo

21

Suponha que exista uma biblioteca licenciada sob a GPL. Eu quero usá-lo é um projeto de código fechado. Eu faço o seguinte:

  1. Crie um aplicativo de invólucro pequeno em torno da biblioteca GPL que escute soquete, analise mensagens e chame a biblioteca GPL. Em seguida, retorna os resultados.
  2. Liberar suas fontes (em conformidade com a GPL)
  3. Crie um cliente para este wrapper no meu aplicativo principal e não libere fontes.

Eu sei que isso adiciona uma sobrecarga enorme em comparação com a vinculação estática / dinâmica, mas estou interessado na maneira teórica.

Andrey
fonte
6
O wrapper que você escreve seria licenciado sob a GPL. Portanto, o programa usando o invólucro ainda estaria sujeita aos termos da GPL para a ligação, etc.
TZHX
4
por que não entrar em contato com o autor primeiro e verificar se você pode licenciá-lo sob LGPL ou similar.
jk.
8
@TZHX Eu acredito que ele significa que o wrapper seria um aplicativo separado que atua como servidor - seu código proprietário estaria no cliente
jk.
também quem será o aplicativo de código fechado também distribuído? e qual versão da GPL é a licença
jk.
2
@jwinging a pergunta claramente diz que está ficando sem processo
jk.

Respostas:

32

Legalmente , eu diria que seria bom (mas não sou advogado - consulte um advogado para obter aconselhamento jurídico).

Moralmente , é bastante repreensível. Se você não gosta da GPL, a solução "adequada" é não usar uma biblioteca GPL.

Editar : para esclarecer, qualquer que seja o estatuto jurídico da GPL em relação à possibilidade de vinculação dinâmica ser permitida ou não, a LGPL foi criada especificamente com a intenção de permitir a vinculação dinâmica no caso de bibliotecas. Portanto, parece-me claro que, ao escolher a GPL em vez da LGPL, o autor da biblioteca estava fazendo isso explicitamente para impedir a vinculação dinâmica. Usar um meio técnico para solucionar uma restrição legal que expressa a intenção explícita do autor por seu código é o que é repreensível, na minha opinião.

Para constar, eu não sou pessoalmente fã da GPL (prefiro uma licença mais permissiva como MIT ou BSD). No entanto, sou um grande fã de respeitar o trabalho de outros desenvolvedores, e se eles não querem que você vincule sua biblioteca a software de código fechado, isso é prerrogativa.

Dean Harding
fonte
12
Não acho que exista um problema moral aqui - a GPL parece permitir explicitamente seu caso de uso
jk.
3
O @vartec é uma citação da FAQ oficial da GPL: "Vincular estaticamente ou dinamicamente a outros módulos está fazendo um trabalho combinado baseado em. Assim, os termos e condições da Licença Pública Geral GNU abrangem toda a combinação." Se Stallman tem uma visão diferente do que é Open Source, isso não significa que ele odeia. Ele é um dos principais ideólogos desse movimento.
Andrey
8
@artec: Tenho a impressão de que você não entende que, quando você usa o código de ALGUÉM MAIS NO SEU aplicativo, é necessário que você cumpra os termos que ELE colocou em uso do seu código. Não gosta disso? Não use o código GPL de outra pessoa. Que simples.
John R. Strohm
3
Aqui está minha sugestão: extraia o código GPL do qual você parece tão dependente e veja como o processo judicial se desenrola. A GPL3 foi criada para corrigir essas falhas legais na GPL2, então talvez você possa se safar. Duvido que as pessoas façam desfiles em sua homenagem porque você escapou de uma manobra legal e, se você for eficaz o suficiente, as pessoas licenciarão seu código com mais termos de uso apenas para lhe incomodar. No final, isso pode melhorar o mundo, evitando tópicos como este.
Godeke
3
I FORTEMENTE não concordar com a afirmação de que é moralmente repreensível. O que é moralmente repreensível é dizer às pessoas que elas não têm o direito de fazer as coisas que a GPL lhes permite fazer. Quando coloco um trabalho sob a GPL, faço isso porque quero que as regras da GPL sejam aplicadas. Dizer às pessoas que elas não devem exercer os direitos que a GPL lhes concede é repreensível. Isso é algo que a GPL permite. Aqueles que colocam obras sob a GPL o fazem porque querem permitir isso.
David Schwartz
6

IANAL, mas acredito que você esteja bem, a seção relevante da GPL3 está no final da seção 5:

Uma compilação de um trabalho coberto com outros trabalhos separados e independentes, que não são, por natureza, extensões do trabalho coberto e que não são combinados com ele de modo a formar um programa maior, em ou em um volume de armazenamento ou distribuição médio, é chamado de "agregado" se a compilação e seus direitos autorais resultantes não forem usados ​​para limitar o acesso ou direitos legais dos usuários da compilação além do que as obras individuais permitem. A inclusão de um trabalho coberto em um agregado não faz com que esta Licença se aplique às outras partes do agregado.

Provavelmente isso vai depender exatamente do que o seu 'cliente' faz, a resposta do mouviciel é provavelmente uma boa orientação sobre como fazê-lo com segurança

Se você acha que seu aplicativo é uma extensão da biblioteca, e não algo agregado, provavelmente está certo (deve estar em um bom lugar para saber disso). Nesse caso, sua melhor opção é entrar em contato com o autor e tentar obter uma licença diferente

isso parece apoiar minha posição de que isso é explicitamente permitido pela GPL, assumindo que foi feito corretamente.

jk.
fonte
Eu li, mas o problema é que o texto da GPL é escrito em linguagem legal , não em desenvolvimento . O truque do wrapper é tornar o aplicativo comercial "agregado", não "derivativo". Mas acho que se enquadra nas "extensões da natureza do trabalho coberto".
Andrey
Para obter ajuda na linguagem jurídica, você precisará de um advogado. Se você acha que seu aplicativo é uma extensão da biblioteca, e não algo agregado, provavelmente está certo (deve estar em um bom lugar para saber disso). Nesse caso, sua melhor aposta é entrar em contato com o autor e tentar obter uma licença diferente
jk.
1
@ Andy: Se a "natureza" do seu programa estiver diretamente vinculada ao código GPL, a seção citada acima não se aplicará. Da sua pergunta, parece que é esse o caso. Um exemplo contrário pode ser um programa de análise de intrusão de rede que, por acaso, usa a linha de leitura GNU através do mecanismo que você propõe. (Readline é um caso de teste interessante porque há um drop-in alternativa licença BSD.)
Fred Nurk
A cláusula "agregada" é deixar claro que estar na mesma distribuição de CD-Rom ou Linux não está criando um derivado.
Sean McMillan
6

Veja o que eu gostaria de incorporar software coberto pela GPL no meu sistema proprietário. Posso fazer isso?

A questão é: seu aplicativo wrapper é útil por si só? Se você criou uma versão de linha de comando do seu programa que era GPL, poderia liberar a GUI sob uma licença diferente. Por exemplo, você pode criar um IDE para o gcc que seja de código fechado ou uma ferramenta visual diff baseada em diff.

No entanto, se você encerrou a biblioteca não tem outra utilidade além de ser usada pelo seu programa, e o programa não tem utilidade sem essa biblioteca, é um trabalho derivado e precisaria ser liberado sob a GPL.

FigBug
fonte
Meu entendimento é que você pode licenciar o wrapper no MIT e ainda assim ficar bem.
Torradeira
2
Colin, absolutamente não. O wrapper é combinado inequivocamente com a biblioteca GPL em um único binário. Para usar o código GPL em um binário, você deve GPL seu próprio código para estar em conformidade com a licença.
Concrete Gannet
5

OMI, legalmente está tudo bem. (IANAL) Para melhorar o lado moral do problema, não o chame de "invólucro FooBar que torna o FooBar legalmente disponível para MyClosedApp", chame-o de servidor. Torne-o um pequeno programa de código aberto que "permite executar o FooBar pela rede". Coloque-o no SourceForge ou dedique-lhe um site, com a página do projeto, instruções e outras coisas. Então deixe "MyClosedApp" apenas use o "servidor FooBar".

user281377
fonte
2

Tanto quanto eu entendo, você pode deixar seu software de código fechado enquanto for capaz de fazer seu trabalho sem a biblioteca GPL. Veja a biblioteca GPL como um plug-in cuja ausência não torna seu software inútil.

mouviciel
fonte
1
isso está definitivamente errado. usá-lo como plug-in (também conhecido como vínculo dinâmico) torna o aplicativo resultante "derivado" e sujeito à GPL.
Andrey
Não tenho certeza se o plugin é sempre sinônimo de vinculado dinamicamente. E certamente, neste caso, o OP não está propondo vincular dinamicamente nada, então acho que o conselho do mouviciel se mantém
jk.
@ jk bem, se você criar apenas um plugin e for baseado na licença GPL, isso cheira a violação.
Andrey
4
A AGPL não proibiria isso, a menos que o soquete estivesse em uma rede. É bastante específico. Além disso, não é um teste de utilidade, mas de quão próximos o GPLed e o software proprietário estão. A vinculação estática é definitivamente muito próxima, os soquetes (exceto o caso AGPL específico) são definitivamente aceitáveis, a vinculação dinâmica pode ou não ser (eu ouvi argumentos que soam legais de cada lado e ainda não existe uma jurisprudência nos EUA).
David Thornley
1
@ Andrew: agora você está dizendo que, enquanto um software de código fechado como o Photoshop é capaz de fazer seu trabalho sem um componente GPL, é possível distribuí-lo sem torná-lo GPL. É exatamente isso que esta resposta diz.
Doc Brown
1
  1. tente encontrar uma alternativa de código aberto, se não houver, escolha a GPL;
  2. verifique se é a GPLv3 com a cláusula Affero, se é, não há nada a ser feito;
  3. se for GPLv2, você pode fazer exatamente o que sugere;

Há também uma opção um tanto controversa. Na maioria das legislaturas, a vinculação dinâmica deve ser um limite para o "trabalho derivado". A lógica por trás disso é que, ao vincular dinamicamente, você está apenas incluindo arquivos de cabeçalho em seu programa. Em muitas legislações, os arquivos de cabeçalho são considerados definição da API e explicitamente excluídos de serem protegidos por direitos autorais. Por outro lado, com vínculo dinâmico, o vínculo real com a biblioteca GPL é feito no sistema do usuário final. Mas, como eu disse, há muita controvérsia, Stallman é fortemente FUD contra isso.

vartec
fonte
qual é a diferença entre a GPL v2 e a v3 que impossibilita meu hack? O que eu faço não é vinculação dinâmica, eu os separo o máximo possível.
Andrey
Um dos objetivos da GPLv3 era impedir esse método de 'evasão'.
vartec
4
Primeiro, as variantes da GPL são licenças oficiais de código aberto aprovadas pela OSI (assim como a licença BSD sem cláusula de publicidade é uma licença de software livre aprovada pela Stallman). Segundo, nenhuma versão da GPL (incluindo a Affero) restringe sua capacidade de comunicação com software proprietário e GPL com métodos de comunicação entre processos padrão, como soquetes.
David Thornley
A GPLv3 da IMO, que permite, por exemplo, a cláusula DRM, viola o ponto 6. da Definição de código aberto opensource.org/docs/osd
vartec
1
@artec: DRM não é um "campo de atuação". Consulte o "Por exemplo, ele não pode restringir o programa de ser usado em um [empreendimento comercial] ou de pesquisas genéticas". A OSI aparentemente acredita que a GPL3 é de código aberto e atende a todos os pontos de sua definição, porque eles a aprovaram.
Thomas Edleson
0

Seria legal para Adam Brown escrever um programa que usasse uma biblioteca GPL e agisse como um "servidor", se ele liberasse todo o código-fonte para tudo associado a ele, mas o único código de cliente que ele lançou fosse bastante fraco, porque isso é tudo ele escreveu do lado do cliente? Não vejo qualquer base para pensar que não.

Se Charles Dover encontrasse o "servidor" de Adam Brown e decidisse escrever um programa de código fechado para se comunicar com ele, a GPL restringiria suas ações de alguma maneira? Não que eu possa ver, já que seu único uso do software da GPL seria como os binários que ele recebeu de Adam Brown. Se ele distribuísse os binários de Adam, também teria de incluir um link para a fonte, mas nada mais na GPL afetaria nenhum código de Charles.

Com relação a uma pessoa que escreve um servidor licenciado pela GPL e, em seguida, usa o servidor para seus próprios fins de código-fonte fechado, eu não acho que deva haver algum problema legal se, ao escrever o servidor, ele fez um esforço genuíno para fazê-lo útil para outras pessoas que desejam usar o código GPL fornecido da mesma maneira. Em particular, a documentação divulgada publicamente da interface deve ser suficiente para permitir que um programador competente escreva código para um servidor que seria aceito pelo programa cliente exatamente como o original e para escrever programas cliente que usem o servidor da mesma maneira que o aplicativo do autor.

supercat
fonte