Ship of Theseus aplicado à GPL - Posso relicenciar meu programa se eu substituir todas as partes derivadas?

98

Eu traduzi um programa GPLv2 C para Python , mas descobri que era difícil estender como projetado e reescrito partes significativas dele. O programa é agora estruturalmente completamente diferente, mas existem várias funções traduzidas em tempo integral em uso.

A Nave do Paradoxo de Teseu (conforme declarado na Wikipedia) "levanta a questão de se um objeto que teve seus componentes substituídos permanecem fundamentalmente o mesmo objeto. "

Se eu conseguisse escrever substituições para as funções verbatim, eu seria capaz de relicenciar para uma licença que eu preferiria?

Relacionado, eu seria capaz de extrair a arquitetura evoluída e reutilizá-la com uma licença diferente? Eu acho que seria muito útil por si só, mas não gostou da idéia de que agora está "corrompida" com a licença GPL.

Acompanhamento : decidi entrar em contato com o detentor dos direitos autorais e recebi permissão para relicenciar . Às vezes, a melhor maneira é interagir socialmente do que programaticamente!

    
por Landon 19.10.2014 / 01:11
fonte

7 respostas

95

Primeiro, a resposta é não (para uma tradução), você não pode legalmente relicenciar ou fazer nada fora das legalidades da licença original. Você pode muito bem ter feito 10 vezes o trabalho do autor original, mas isso não importa, é viral. Não apenas porque é GPL, mas porque não é um projeto limpo ou reescrito.

Eu lutei brevemente com isso em 1992, quando fiz uma reescrita maciça de um código antigo do MUD. Tivemos um jogo de sucesso, mas queríamos fazer o que queríamos, e as pessoas estavam dispostas a pagar por isso, mas o DikuMUD licença estritamente nos proibir de ganhar dinheiro. Um concorrente, na época, também baseava-se na mesma base de código, e eles optavam por ignorar abertamente os direitos autorais, rasgar todos os vestígios e basicamente mentir para todos, inclusive para si mesmos. A lógica deles era "nenhum dos códigos originais existe" e "fizemos reescritas e melhorias em massa" e geralmente ignoramos o fato de que eles começaram com 20.000 linhas de código. Eles estavam cobrando itens no jogo e ganhando muito dinheiro para parar.

Eu era reconhecidamente invejoso. Mas eu pesquisei a lei de direitos autorais, e consultei minha consciência, e decidi que não poderia usar o código que escrevi porque honestamente não planejei o servidor de jogo do zero.

Então eu decidi colocar meu dinheiro onde minha boca estava e escrever do zero, com uma cópia de UNIX Network Programming do W. Richard Steven comigo o tempo todo, eu comecei. Escrever do zero, do meu jeito, me ensinou muito mais do que quando eu reescrevi o DikuMUD, e também me ensinou que eu realmente não entendia o que significava ficar nos ombros de outra pessoa. Dentro de seis meses, eu tinha 50.000 linhas de código operacional que eu poderia chamar de meu. Eu o nomeei MUD ++ e o lancei no BSD. Gravado incorretamente no estilo C ++, ainda era o primeiro MUD de código aberto e de código aberto que eu conheço. Até hoje ninguém pode tirar isso de mim. Eu tinha o melhor servidor TCP na época, ninguém mais poderia fazer uma "reinicialização a quente" sem perder os players, e logo todos estavam roubando o recurso ( e notei que muitos GPL MUDs têm trechos do meu código BSD - sempre interessante como a GPL pode roubar o BSD-ware, mas não vice-versa ). Eventualmente, eu segui em frente, então não foi como se a decisão fosse um ganho pela minha fortuna, mas enquanto os outros caras ganhavam muito dinheiro por um tempo, pela última vez eu olhei que eles tinham diminuído, em um mundo de jogos gráficos não há mais demanda em massa por texto.

A história não termina ... alguns anos depois, eu estava trabalhando para a IBM e a Disney nos contratou para escrever um jogo 3D multijogador em tempo real para o Epcot Center, e eu pude usar o núcleo TCP do MUD ++ como um base para esse servidor de jogo! Se eu não tivesse meu próprio código, não teria permissão para usá-lo, e isso me salvou honestamente semanas de tempo de codificação. No final, tenho orgulho das escolhas que fiz e tenho uma história para contar aos meus filhos.

As pessoas subestimam e subestimam o benefício de começar com o framework de outra pessoa para construir.

Se você acha que é "dono", teste a si mesmo. Comece de novo, com um livro de Python ao seu lado. Veja como se sente. Não trapaceie e não olhe para a velha base de código. Olhe para a saída. Forçar-se a pensar em todos os aspectos por conta própria, fazendo a pesquisa honesta. Você será melhor e provavelmente terá um produto melhor.

Antes disso, tente entrar em contato com o autor original. Pergunte se eles estariam dispostos a relicenciar. Se você planeja vender binários, ofereça royalties. Muitos autores que lançaram coisas GPL nos anos 90 e 2000, estão agora em seus 30, 40 e 50 anos e entendem o que significa ganhar a vida em software. Eu vi mais de um relicenciar suas coisas de GPL para MIT, Apache, Boost ou BSD.

Por fim, uma licença não substitui os direitos anteriores ao código que você pode ter. Ou se você escreveu um complemento limpo de forma independente, por exemplo, se você escreveu um mecanismo TCP como um complemento para um jogo Tetris de um único jogador, e ele pode ficar sozinho (especialmente se você liberou anteriormente sob outra licença) então você pode reutilizar seu código em outros projetos. Você também tem direitos de autoria.

Minha crença é livre é grátis. Se você tiver que anexar strings, não o chame de graça. Alguém me mandou um e-mail anos depois e disse que eles usaram meu jogo em um mecanismo comercial, principalmente o TCP e possivelmente o intérprete de código de bytes. Eles estavam ganhando dinheiro. Eu não me importei nem um pouco. Eu estava feliz como ainda sou agora, como pai orgulhoso.

    
por 19.10.2014 / 02:47
fonte
31

Este cenário é abordado em Perguntas frequentes sobre o GPL :

What does the GPL say about translating some code to a different programming language?

Under copyright law, translation of a work is considered a kind of modification. Therefore, what the GPL says about modified versions applies also to translated versions.

    
por 19.10.2014 / 09:04
fonte
8

É duvidoso que, mesmo que você tenha reescrito toda a biblioteca do zero, ela passasse por escrutínio legal. O código seria considerado "contaminado" porque você viu o código na biblioteca licenciada GPL.

A abordagem padrão para esse problema é chamada de "implementação de sala limpa". Você escreve um documento de requisitos e manda alguém implementá-lo (quem não viu o código GPL).

Veja também esta pergunta: Reescrevendo o código GPL para alterar a licença

Como alguém apropriadamente colocou lá, uma tradução chinesa de Harry Potter ainda é um trabalho derivado, mesmo que todas as informações tenham sido substituídas.

É claro que a probabilidade de você ser processado por reescrever uma biblioteca licenciada sob a GPL (e a moralidade de depender dessa baixa probabilidade) são discussões totalmente diferentes.

No que diz respeito à adição de funcionalidade ao código original, esta é (parte de) a própria definição de trabalhos derivados: adicionando ao trabalho original. Não importa o quanto você adicionou ou quão pequeno foi o trabalho inicial - ainda é derivativo.

    
por 19.10.2014 / 07:53
fonte
7

Observação: A GPL só é relevante se você liberar seu trabalho. Você já lançou isso ainda?

Observação: este não é um site de aconselhamento jurídico, portanto, descarte todo o FUD legal e aplique o bom senso.

Opinião: A GPL, ou qualquer licença, não possui idéias de direitos autorais , ela reivindica o código fonte, não importando quão pequena seja sua parte. Então, se e somente se seu trabalho "derivado" não puder ser identificado como sendo derivado do original, porque você alterou a estrutura do código e reimplementou a funcionalidade all , é para todos os fins práticos não mais derivativo, porque, bem, seria indistinguível de uma implementação de sala limpa.

Isso é muito difícil (impossível?) para alcançar, no entanto, quando você tem uma base de código existente que você modifica, em vez de começar do zero.

    
por 19.10.2014 / 21:28
fonte
5

Você possui os direitos autorais de qualquer código que você escreve. O que a GPL manda é: qualquer código que você contribuir ou liberar juntamente com o código GPL, você também deve liberar sob uma licença similar. No entanto, os direitos autorais ainda são seus.

Então, se você liberar o seu software pela re-gravação (então há uma mistura de seu código e código antigo), então você tem que liberar essa parte do seu código como GPL, e isso não pode ser revogado. No entanto, o detentor dos direitos autorais é aquele que decide sobre os termos de licenciamento, portanto você ainda tem o direito de essencialmente "licenciar duplamente" essa parte do código, incluindo combiná-lo com outro código que você escreveu e vendendo / relicenciamento, etc. / p>

Advertências:

  • embora os direitos autorais sobre o código que você escreve sejam seus por padrão, eles podem ser alterados por outro contrato / contrato, por exemplo, um CLA que especifica a transferência de direitos autorais ou um contrato com um empregador que detém todo o trabalho que você faz no "tempo deles".
  • se a sua reescrita constitui o suficiente de um "trabalho derivado" que você acaba compartilhando os direitos autorais com o autor original é uma questão de grau. Se você traduzir o código linha-por-linha em outro idioma ( como sua questão mencionada ), então essas partes podem também contar como derivadas. Se você implementar um substituto compatível com API sem observar os detalhes, isso provavelmente não aconteceria.

(fonte: uma sessão de "direitos autorais e código aberto" organizada pela minha empresa há algumas semanas)

    
por 20.10.2014 / 14:05
fonte
3

Sim.

As outras respostas usam textos demais explicando opiniões sobre se você deve ou não, mas essas opiniões não são tão relevantes para a questão.

O fato é que você terá um novo trabalho uma vez que você substituiu as últimas partes, o que reconhecidamente foi construído olhando para um trabalho da GPL. Essa não é uma grande preocupação na lei de direitos autorais (patentes seria outra questão). Tudo o que você distribuir será sua criação.

Há muito material apoiando a teoria de que os direitos autorais de um programa de software são a soma de direitos autorais parciais. Por exemplo, o MPL reconhece explicitamente este modelo. O processo Google / Oracle ficou com direitos autorais em nível de linha.

    
por 20.10.2014 / 09:13
fonte
1

A resposta curta é que você não pode saber.

Quando você fala com Richard, você descobre que ele é "louco como uma raposa" em muitas de suas implementações. A GPL é escrita especificamente para ter ambiguidades e frases pouco claras. Estes são geralmente expressos contra o benefício do escritor de licença, mas também dão suas preocupações de advogado de IP. Inteligentemente, isso dá ao seu advogado de PI preocupações crescentes à medida que a empresa cresce. Uma pequena empresa comercial que faça a "interpretação razoável" da GPL pode ser um risco aceitável, mas uma grande empresa de software pode achar mais prudente queimar uma equipe inteira que conseguiu obter uma mancha de GPL.

Não há resposta. Não haverá uma resposta. Essa é a resposta.

    
por 26.09.2015 / 19:58
fonte

Tags