Eu encontrei uma biblioteca GPL (sem licença dupla), que faz exatamente o que eu preciso. Infelizmente, a licença GPL na biblioteca é incompatível com a licença de uma biblioteca diferente que eu uso. Decidi, portanto, reescrever a biblioteca GPL, para que a licença possa ser alterada.
Minha pergunta é: Quão extensas as alterações precisam ser na biblioteca para poder alterar a licença? Em outras palavras, qual é a maneira mais barata de fazer isso?
Respostas:
Não sou advogado, mas o AFAIK, se você tiver visto o código da biblioteca GPL, qualquer biblioteca de emulação que você escrever será contaminada e poderá ser declarada um trabalho derivado por um juiz, se for muito semelhante em sua apreciação.
Portanto, o processo seria escrever uma especificação funcional e ter alguém que não viu o código GPLed escrever a biblioteca.
Edit: Observe que, com a maneira como você formula sua pergunta "Quão extensas as alterações precisam ser na biblioteca para poder alterar a licença?" a resposta é clara: AFAIK: faça o que fizer, se você apenas modificar a biblioteca, deverá respeitar o termo da licença, o que possibilita sua modificação em primeiro lugar.
fonte
A maneira usual de contornar esse problema é primeiro entrar em contato com o proprietário da biblioteca e perguntar se eles o liberarão sob uma licença diferente.
Se você estiver trabalhando em um projeto de código aberto em que a GPL não é compatível, há uma boa chance de fazer isso. Alguns projetos acabam com uma licença GPL apenas porque parecia a melhor escolha.
Obviamente, isso se aplica às duas bibliotecas. Obter a licença permissiva licenças duplas sob uma licença menos permissiva não deve ser um problema.
Se você estiver trabalhando com um produto comercial, muitos autores da biblioteca fornecerão uma liberação sob uma licença diferente, se você os compensar adequadamente.
fonte
Meu entendimento é que, se você começar com um trabalho e modificá-lo, não importa quão extensas sejam as modificações, o resultado final será um trabalho derivado do original. Você precisará escrever a biblioteca do zero. Se você escreve a biblioteca do zero, mas viu o código, se for muito semelhante, poderá ser processado novamente por violação de direitos autorais.
Essas regras não são específicas para o software, elas se aplicam a todos os tipos de direitos autorais.
Eu não sou advogado, e isso não é aconselhamento jurídico. Também não estou na sua jurisdição e você deve sempre duvidar dos conselhos legais oferecidos na Internet. Se você deseja obter aconselhamento jurídico confiável, precisará pagar um advogado.
fonte
IANAL, mas sei que nos EUA, nenhum grau de modificação criará um trabalho não derivado. Se ele tiver algum código copiado da biblioteca antiga ou tiver semelhança interna suficiente para causar problemas por plágio em uma classe da Universidade, você não estará perto de um novo trabalho. Alterar alguns nomes de funções ou variáveis não fará nada, nem mover pedaços de código na fonte. Você teria que recriá-lo independentemente para ter uma chance. IOWs, você precisa examinar apenas as interfaces que ela fornece e decidir como fornecer essa funcionalidade e recriá-la dessa maneira para ter uma chance. Mesmo assim, você ainda pode não estar fora de perigo se alguém realmente se importa e fica bravo.
No final, sua melhor aposta é entrar em contato com o autor da biblioteca e esperar que você encontre um acordo para um licenciamento mais permissivo da biblioteca.
fonte
Se tudo o mais sugerido aqui (solicitar licença dupla, reescrever) não for aceitável, lembre-se de que ainda não é um caso claro se a vinculação dinâmica com o programa / biblioteca proprietário é considerada um trabalho derivado. A FSF diz que sim, mas muitos advogados (incluindo Lawrence Rosen) questionaram isso.
Para que você possa vincular seu software à biblioteca GPL, verifique se o código fonte é distribuído com todas as cópias do seu software. Se alguém o processa, é necessário provar que a compreensão desse aspecto complicado e obscuro da GPL está correta. Como parece (por exemplo, Galoob vs Nintendo), você não pode ter certeza absoluta do que faz o derivado funcionar e do que não.
fonte
A única maneira de não derivar o trabalho seria se você reescrevesse o código inteiro sem usar o código original. O que provavelmente é inviável.
Existem maneiras muito mais fáceis de contornar a GPL:
Observe também que a GPL é uma licença de distribuição ; portanto, você só precisará licenciar seu trabalho se distribuir binários a terceiros. E você é obrigado apenas a liberar a fonte para eles, sem obrigação de liberá-lo para o público em geral, a menos que você libere binários para o público em geral. Se você estiver usando seu código, por exemplo, apenas em seus servidores, não terá obrigação de liberar nenhum código. É assim que, por exemplo, o Google faz isso com seus kernels Linux aprimorados.
fonte
IANAL e, de qualquer forma, isso pode não significar nada legalmente, mas acredito que, no livro "Hackers", de Steven Levy, ele descreve como, a certa altura, o RMS escreveu o código * nix para dinheiro durante o dia e à noite, escreveu o mesmo coisas em casa para que ele pudesse fazer parte do ... GNU? ... isso foi antes do Linux ... algum sistema livre do tipo Unix. Acredito que ele teve que tornar o código residencial diferente do código diário, mas ele estava basicamente fazendo exatamente o que você está sugerindo.
Provavelmente isso também não importa legalmente, mas ... Não tenho certeza se a Apple e / ou a Microsoft obtiveram permissão / licença ou algo assim, mas os laboratórios da Bell não inventaram a interface de área de trabalho / ícone / mouse, usada para Macs (ou Lisa?) que foi usada pela Microsoft.
fonte
Não há resposta para isso, exceto por um julgamento perante um juiz em sua jurisdição específica. Mas você quer arriscar? Ou tente reescrever a biblioteca GPL, os testes etc. etc. Tem certeza de que a outra biblioteca é incompatível com a GPL? Na verdade, isso é bastante incomum, a menos que você queira distribuir as duas bibliotecas sob os termos das bibliotecas que não são da GPL.
fonte
Na maioria das partes do mundo, você precisa começar do zero e não cortar e passar nada. Você precisa de novos nomes para funções / classes / variáveis, etc, etc, e a estrutura deve ser diferente. Então você está seguro.
Por outro lado, se uma ferramenta diff não encontrar nenhuma semelhança, então ...
fonte