Suponha que exista uma biblioteca licenciada sob a GPL. Eu quero usá-lo é um projeto de código fechado. Eu faço o seguinte:
- 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.
- Liberar suas fontes (em conformidade com a GPL)
- 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.
Respostas:
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.
fonte
IANAL, mas acredito que você esteja bem, a seção relevante da GPL3 está no final da seção 5:
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.
fonte
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.
fonte
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".
fonte
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.
fonte
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.
fonte
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.
fonte