Pergunta

Estou usando uma biblioteca LGPL no meu código. Para minhas necessidades, preciso modificar o código na biblioteca.

Como faço para marcar o arquivo JAR que ele contém código modificado? Algum arquivo txt no frasco? Nesse caso, o que eu escrevo no arquivo txt?

Incluirei no contrato de licença que estamos distribuindo uma versão modificada do JAR, mas minha pergunta é sobre marcar o próprio JAR.

Foi útil?

Solução

A resposta curta: evite o problema

Se você corrigiu um bug ou adicionou um recurso, por que não enviá -lo de volta aos autores originais por meio de um patch? Se eles aceitarem, a próxima versão da biblioteca incluirá suas correções e você não precisará se preocupar em enviar uma biblioteca modificada! Compartilhar suas alterações/melhorias na biblioteca é a essência da licença, usando temporariamente uma versão ligeiramente modificada da biblioteca enquanto você aguarda as melhorias enviadas é uma prática bastante comum (veja coisas sobre filiais de fornecedores). Tornar parte da comunidade de desenvolvimento significa que você não está mais enviando uma versão 'modificada' da biblioteca, mas contribuindo ativamente com suas melhorias na biblioteca original para o bem comum.

A resposta longa: LGPL versão 3.0

Da versão 3.0 do LGPL em si:

  1. Transmitir versões modificadas.

Se você modificar uma cópia da biblioteca e, em suas modificações, uma instalação refere -se a uma função ou dados a serem fornecidos por um aplicativo que usa a instalação (exceto como um argumento aprovado quando a instalação é invocada), você poderá Transmitir uma cópia da versão modificada:

  • a) Sob esta licença, desde que você faça um esforço de boa fé para garantir que, no caso de um aplicativo não forneça a função ou os dados, a instalação ainda opera e execute qualquer parte de seu objetivo permanecer significativa, ou
  • b) Sob o GNU GPL, com nenhuma das permissões adicionais desta licença aplicável a essa cópia.

Desde que você cumpra o restante do texto da licença, você não precisa necessariamente 'marcar' o próprio JAR, com um arquivo de texto ou não. Por razões de compilação, você pode seguir a sugestão de Extraneon e usar um nome de jar um pouco diferente. Você poderia usar um Filial do fornecedor ou algo para manter as diferenças entre suas modificações e a biblioteca original. Olha Você aqui 'forking'O projeto, criando seu próprio trabalho derivado - a essência aqui é compartilhar suas mudanças e melhorias na fonte com o mundo.

A resposta longa: LGPL versão 2.1

Da versão 2.1 do LGPL em si:

  1. Você pode modificar sua cópia ou cópias da biblioteca ou qualquer parte dela, formando um trabalho baseado na biblioteca, e copiar e distribuir essas modificações ou trabalhar nos termos da seção 1 acima, desde que você também atenda a todas essas condições :

    • a) O trabalho modificado deve ser uma biblioteca de software.
    • b) Você deve fazer com que os arquivos modificados para transmitir avisos proeminentes afirmando que você alterou os arquivos e a data de qualquer alteração.
    • c) Você deve fazer com que todo o trabalho seja licenciado sem nenhum custo a todos os terceiros nos termos desta licença.
    • d) Se uma instalação na biblioteca modificada se referir a uma função ou uma tabela de dados a serem fornecidos por um programa de aplicativo que usa a instalação, exceto como um argumento aprovado quando a instalação é invocada, você deve fazer um esforço de boa fé Para garantir que, no caso de um aplicativo não forneça essa função ou tabela, a instalação ainda opera e execute qualquer parte de seu objetivo permanecer significativa. (Por exemplo, uma função em uma biblioteca para calcular raízes quadradas tem um objetivo totalmente bem definido, independentemente do aplicativo. Portanto, a subseção 2D exige que qualquer função ou tabela fornecida pelo aplicativo ou tabela usada por esta função seja opcional: se a O aplicativo não o fornece, a função raiz quadrada ainda deve calcular raízes quadradas.)

Em essência, você deve dizer: Ei, aqui está a biblioteca 'Foo', uma versão modificada da 'barra' da biblioteca, aqui você pode usar minha versão da biblioteca 'Foo' - também está disponível no LGPL2.1. Os avisos proeminentes também são geralmente executados no início de seus arquivos de origem modificados no bloco de comentários da licença LGPL. Novamente, você está batendo na biblioteca.

Outras dicas

Dê ao frasco um nome diferente. As classes internas terão os mesmos nomes; portanto, o código, dependendo dele, não terá problemas para encontrá -lo (se o novo frasco estiver no caminho de classe).

É claro que é sempre aconselhável documentar suas alterações adicionando algumas informações no arquivo de manifesto e talvez também um arquivo de changelog no próprio JAR.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top