A LGPL me permite fazer isso?


16

Estou planejando desenvolver um software comercial usando um software LGPL.

No software LGPL que estou usando algumas funções em uma classe não são totalmente implementadas. Desejo modificar o código LGPL para que a classe e as funções não implementadas sejam visíveis fora da dll adicionando dllexport na frente da classe e adicionando a palavra-chave virtual na frente da função.

Então, planejo implementar essas funções no meu software proprietário. Estou pronto para distribuir o código LGPL modificado, mas não o software proprietário que implementa as funções da maneira que desejo.

Isso viola os termos e condições da LGPL?



6
O problema da sua pergunta estar aqui é que você não está tentando usar a licença no espírito em que foi escrita. Provavelmente, podemos responder perguntas sobre o significado pretendido das licenças, mas não podemos entrar em detalhes legais de maneira confiável. . Por isso, só podemos recomendar um advogado. Além disso, o que você está fazendo depende de uma questão legal (o que é um trabalho derivado do software LGPLed?) Que não foi resolvida nos EUA na jurisprudência, e tenho visto opiniões diferentes entre advogados reais. (Eu não sou um advogado, mas eu fui casualmente seguindo estes problemas.)
David Thornley

Difícil de dizer. Leia isto: javalobby.org/java/forums/t15903.html - eles estão falando sobre Java, mas parece aplicável a qualquer linguagem OO.
Mike Baranczak

Respostas:


26

Essa é uma pergunta complexa, mas acredito que o que você propõe não é permitido.

Você está sugerindo adicionar ganchos à biblioteca para facilitar a subclasse da biblioteca e, portanto, pelo menos. contornar o espírito da LGPL.

O problema é que, se você subclassificar uma classe que está sujeita à licença LGPL em seu próprio código, seu trabalho se tornará um trabalho baseado na biblioteca , em vez de um trabalho que use a biblioteca, o que significa que seu código é um derivado trabalho coberto pela seção 2 ( LGPL v2.1 ) em vez de um trabalho coberto pela seção 6 ( LGPL v2.1 ). Ou seja, torna - se sujeito à LGPL !

Eu acho que Stephen Colebourne fornece um bom resumo sobre o javalobby.

Eu não sou um grande fã de conversa fiada com as sugestões de seus advogados , mas , neste caso , acho que valeria a pena fazê-lo se você planeja continuar com isso, caso contrário, você pode estar recebendo uma carta desagradável do Software Livre Equipe jurídica da Fundação .

Como alternativa, você pode solicitar diretamente à FSF . Na página de contato deles :

Para perguntas sobre licenciamento de software livre e direitos autorais

Consulte nossas Perguntas frequentes sobre licenciamento , a lista de licenças , informações gerais sobre copyleft e páginas relacionadas . Se houver dúvidas, envie um e-mail para <licensing@gnu.org>.

Aliás, na pergunta relacionada Reflection e LGPL , gbjbaanb responde com a perspectiva LGPL 3.0 .


4
I like "a pedir ao FSF" sugestão
ZJR

Minha leitura foi que eles queriam expor mais funções na biblioteca LGPL. Enquanto o lib resultante é ainda LGPL e um usuário de software do OP é livre para substituir o lib com a sua construção em - Eu ficaria feliz
Martin Beckett

3
@MartinBeckett - Não exatamente, o questionador está tentando contornar a LGPL modificando a biblioteca para facilitar a modificação clandestina da biblioteca em seu código-fonte fechado. Se ele estivesse adicionando sua nova funcionalidade de biblioteca à LGPL diretamente e usando-a em seu próprio código, não haveria problema. É o fato de que ele está tentando manter sua nova funcionalidade de código-fonte fechado e ainda assim fazer parte da biblioteca. Esse é o problema.
Mark Booth

6
O LGPL 3.0 declara: "Definir uma subclasse de uma classe definida pela Biblioteca é considerado um modo de usar uma interface fornecida pela Biblioteca". Portanto, isso deve ser permitido, pelo menos no LGPL 3.0.
David

3
@ David - Eu acredito que, modificando a biblioteca LGPL para permitir que você substitua uma função que normalmente não poderia ser substituída, você está reconhecendo tacitamente que seu código está suficientemente acoplado a um código 'baseado em' em vez de um 'usado por' com a biblioteca, para que o copyleft fraco seja ativado.
Mark Booth

13

Padrão Não sou um aviso de isenção de advogado.

A LGPL exige que as modificações no código-fonte da biblioteca sejam distribuídas a qualquer pessoa que usou seu código. Ele não exige que o seu código, que usa a biblioteca, ser open-source e liberado sob a mesma licença.

Wikipedia para uma descrição mais detalhada, mas não para advogados, da LGPL, incluindo uma seção sobre herança de classe .


+1. Para resumir: nós achamos que não viola LGPL (mas IANAL)
MarkJ

@ MarkJ - Como explico na minha resposta , não tenho certeza de que, como colocado, a questão é simplesmente uma questão de herança de classe.
Mark Booth

9
Acho que as pessoas gostam de digitar IANAL porque contém "ANAL".
precisa saber é o seguinte

5

"Quero modificar o código LGPL ..." diz o suficiente para você liberar qualquer código modificado. Em seguida, estender se o código modificado é ou não um trabalho derivado está em disputa e, nesse caso, fica sujeito à LGPL.

O que parece que você está tentando fazer é contornar a LGPL, que nesse caso com essas técnicas você não pode.

Se for um trabalho derivado, os termos do programa deverão permitir "modificações para uso do próprio cliente e engenharia reversa para depuração de tais modificações". Se um trabalho que usa um programa LGPL é um trabalho derivado ou não é uma questão legal.

Mas se o que você está tentando fazer é contornar a LGPL, entrarei em contato com a FSF, conforme recomendado por Mark Booth .


1
O problema é que a LGPL permite algumas formas de trabalhos derivados, enquanto outras não são permitidas. Atualizei minha resposta para fazer uma distinção entre trabalhos derivados que se enquadram na categoria de trabalho baseado na biblioteca (que exigia ser LGPL) e trabalho que usa a biblioteca (que não).
Mark Booth

@MarkBooth Concordo com você e outras pessoas que, nesse caso, é work based onporque eles estão fazendo alterações na LGPL para expor o código privado anteriormente.

1

Meu palpite: (mas IANAL) você deve liberar como código aberto biblioteca modificada como código LGPL e , em seguida, solte-o em um programa comercial. Isso funcionaria. Efetivamente, você acabaria tendo uma bifurcação de código aberto da biblioteca e, então, estará vendendo um front end para ela.

Mas, como muitos outros disseram com razão, pergunte à FSF : é um cenário patológico intrigante que você tem lá; eles podem estar se perguntando tanto quanto você, se é aplicável ou não. (ou pelo menos se preocupe com isso o suficiente para publicar uma entrada de perguntas frequentes sobre o tópico)


1

https://www.gnu.org/licenses/lgpl-java.html

Se você distribuir um aplicativo Java que importe as bibliotecas LGPL, é fácil estar em conformidade com a LGPL. A licença do seu aplicativo precisa permitir que os usuários modifiquem a biblioteca e faça engenharia reversa do seu código para depurar essas modificações. Isso não significa que você precise fornecer o código-fonte ou quaisquer detalhes sobre os componentes internos do seu aplicativo. Obviamente, algumas alterações que os usuários podem fazer na biblioteca podem interromper a interface, tornando a biblioteca incapaz de funcionar com seu aplicativo. Você não precisa se preocupar com isso - as pessoas que modificam a biblioteca são responsáveis ​​por fazê-la funcionar.

Em resumo, não há problema com a herança, desde que você não altere o código da biblioteca em si, mas mesmo se você o alterar, será necessário liberar apenas o código modificado da biblioteca, não o código do aplicativo.


1
Sua resposta contradiz várias outras respostas, mas não fornece muito para apoiar suas reivindicações. Outras respostas são mais detalhadas e explicam melhor suas afirmações. Por favor edite sua resposta para fornecer citações relevantes da licença ou a FSF, a fim de apoiar a sua reivindicação.

Como, na verdade, minha resposta não fornece muito para apoiar minhas reivindicações? Eu tinha colocado um link para a página oficial do GNU que limpa a confusão sobre LGPL e herança de classe. É até atualizado para cobrir o LGPL v3.
Nik.B

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.