Navio de Teseu aplicado à GPL - Posso relicenciar meu programa se substituir todas as partes derivadas?

99

I traduzidas um GPLv2 Cprograma para Python, mas descobriu que era difícil estender como concebido e reescreveu porções significativas do mesmo. O programa agora é estruturalmente completamente diferente, mas existem várias funções traduzidas literalmente em uso.

O navio do paradoxo de Teseu (como declarado na Wikipedia) "levanta a questão de saber se um objeto que teve todos os seus componentes substituídos permanece fundamentalmente o mesmo objeto".

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

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 gosto da idéia de que agora está "contaminado" 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, e não programaticamente!

Landon
fonte
6
Compare a auditoria do ReactOS : houve a alegação de que o ReactOS (um substituto gratuito do Windows) foi contaminado usando o código do MS Windows vazado e de engenharia reversa (para o qual eles nunca tiraram uma licença). Eles resolveram o problema substituindo sistematicamente todo código de origem pouco clara por código legal de "engenharia reversa de sala limpa" - basicamente um novo código escrito a partir de uma especificação limpa.
jdm
3
O código @jdm Chinese Wall / clean room também deve ser escrito por pessoas que não estavam envolvidas na engenharia reversa e têm comunicação limitada (revisada legalmente) com elas. WRT para ignorar a licença e apenas "violar direitos autorais" - isso equivaleria à mesma coisa, já que você ainda não teria o direito de redistribuir material sobre o qual violou direitos autorais.
Goldilocks
9
@jdm A GPL não é um contrato e não precisa ser aceita por ninguém. A GPL é uma licença e você deve cumpri-la se tirar vantagem da licença. Não se trata de uma via de mão dupla ou de uma negociação ou estabelecimento de obrigações mútuas da forma como é um contrato. O que ele faz é declarar as únicas regras sob as quais você tem permissão para usar o código. IANAL, mas isso já me foi explicado por vários advogados de licenciamento.
Elin
3
@CrazyCasta: Você está enganado sobre o escopo da GPL. Você afirma que é a única razão para ter quaisquer direitos. Isso é explicitamente incorreto e totalmente negado pela própria GPL. A GPL cobre apenas direitos de distribuição. Você tem um direito ilimitado de usar e estudar o código, mesmo sem aceitar a GPL.
MSalters
1
@MSalters: a GPL concede direitos de distribuição e modificação . Sem uma licença, você só tem o direito de usar o software como está.
RemoGerlich

Respostas:

95

Primeiro, a resposta é não (para uma tradução), você não pode autorizá-la novamente 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 design limpo ou reescrito.

Lutei brevemente com isso em 1992, quando havia reescrito em massa uma antiga base de código do MUD. Tivemos um jogo bem-sucedido, mas queríamos fazer nossas próprias coisas, e as pessoas estavam dispostas a pagar por isso, mas a licença do DikuMUD nos proíbe estritamente de ganhar dinheiro. Um concorrente, na época, também baseava o deles na mesma base de código, e eles optaram por ignorar descaradamente os direitos autorais, rasgar todos os vestígios e basicamente mentir para todos, inclusive eles mesmos. A lógica deles era "não existe nenhum código original" e "fizemos reescrições e aprimoramentos maciços" e geralmente ignoram o fato de que eles começaram com 20.000 linhas de código. Eles estavam cobrando pelos itens do jogo e ganhando muito dinheiro para parar.

Eu reconhecidamente estava com inveja. Mas pesquisei a lei de direitos autorais, consultei minha consciência e decidi que não podia usar o código que havia escrito porque honestamente não arquitetei o servidor do jogo do zero.

Então, decidi colocar meu dinheiro onde estava minha boca e escrever do zero, com uma cópia do UNIX Network Programming de W. Richard Steven comigo o tempo todo, 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 estar nos ombros de outra pessoa. Em seis meses, eu tinha 50.000 linhas de código operacional que eu poderia chamar de meu. Eu o nomeei MUD ++ e o liberei sob BSD. Mal escrito no estilo C ++, ainda era o primeiro MUD C ++ de código aberto e gratuito que eu conhecia. Até hoje ninguém pode tirar isso de mim. Eu tinha o melhor servidor TCP da época, ninguém mais poderia fazer uma "reinicialização a quente" sem derrubar jogadores e logo todos estavam roubando o recurso (e notei que muitos MUDs da GPL têm trechos do meu código BSD - sempre interessante como a GPL pode seqüestrar o BSD-ware, mas não vice-versa ). Eventualmente, eu segui em frente, então não foi como se a decisão fosse uma farsa ou uma fortuna para minha fortuna, mas enquanto os outros caras ganhavam muito dinheiro por um tempo, pela última vez, parecia que eles haviam diminuído, em um mundo de jogos gráficos não há mais muita demanda por texto.

A história não acaba ... alguns anos depois, eu estava trabalhando para a IBM e a Disney nos contratou para escrever um jogo multiplayer 3D em tempo real para o Epcot center, e pude usar o núcleo TCP do MUD ++ como base para isso. servidor de jogo! Se eu não possuísse 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 a estrutura de outra pessoa para construir.

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

Antes de fazer isso, 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 GPL nos anos 90 e 2000, agora estão nos 30, 40 e 50 anos e entendem o que significa ganhar a vida com software. Eu já vi mais de um relicense do GPL para o MIT, Apache, Boost ou BSD.

Por fim, uma licença não substitui os direitos anteriores ao código que você possa 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 para um jogador e ele pode ficar sozinho (especialmente se você já lançou com outra licença), então você pode reutilizar seu código em outros projetos. Você também tem direitos de autor.

Minha crença é livre é GRÁTIS. Se você precisar anexar strings, não o chame de graça. Alguém me enviou anos depois e disse que havia usado meu jogo em um mecanismo comercial, principalmente o TCP e possivelmente o intérprete de bytecode. Eles estavam ganhando dinheiro. Eu não me importei nem um pouco. Fiquei feliz como ainda sou agora, como um pai orgulhoso.

codenheim
fonte
4
Na verdade, eu ia sugerir isso e me perdi na minha história. Sim, por todos os meios, consulte o autor original, faça uma homenagem a ele, por assim dizer, e você provavelmente ficará surpreso com a frequência com que o autor está feliz por ter se dado ao trabalho de perguntar. E muitos jovens universitários que eram grandes na GPL nos anos 90 e 2000 agora estão percebendo que os programadores precisam ganhar a vida.
Codenheim
13
Eu gosto desta resposta e gostaria de votar, mas não posso, por causa de toda a rotação anti-GPL no último parágrafo. A string que a GPL anexa é que as strings não podem ser anexadas no futuro.
22616 Michael Shaw
9
Boa resposta, e esp. por recomendar elaborar um acordo com o autor original. A auto-suficiência costuma ser um caminho para a pobreza e, embora a reescrita de uma biblioteca / plataforma / aplicativo inteira possa ser um empreendimento que vale a pena, nem sempre é assim.
Dan1701
16
@ MichaelShaw: Na verdade, eu pensei que essa era a parte mais brilhante dessa resposta. Sua reivindicação do outro lado está factualmente errada . Se o autor do código GPLd decidir liberar novas versões de seu código sob uma licença diferente, ele estará bem em seus direitos. Eles anexam as strings não a si mesmos, mas apenas àqueles com quem "compartilham" seu código. A melhor maneira de descrever isso é como uma falta fundamental de fé na humanidade.
back2dos
9
A meu ver, as licenças no estilo BSD tornam esse código gratuito aqui, o que é simples. As licenças no estilo GPL visam estabelecer uma comunidade / ecossistema de software livre / o que quer que esteja em concorrência com software fechado e não-livre. Para fazer isso, eles fazem uma série de movimentos estratégicos, e o comprimento e a variedade de licenças GPL e do tipo GPL (e seu desenvolvimento ao longo do tempo) mostra que esse é um negócio complexo que envolve muitos julgamentos de valor. Se aqueles que preferem um perceber que o outro não é livre, ou aqueles que defendem o outro girando contra eles, ambos perdem.
21714 Steve Jobs 13
31

Este cenário é coberto nas perguntas frequentes da GPL :

O que a GPL diz sobre a tradução de algum código para uma linguagem de programação diferente?

Sob a lei de direitos autorais, a tradução de uma obra é considerada um tipo de modificação. Portanto, o que a GPL diz sobre versões modificadas se aplica também às versões traduzidas.

Philipp
fonte
Essa parte em particular é clara, mas fica confusa quando eu me expiro para o restante do programa (pelo menos na minha cabeça). O programa original era um jogo de maldições pequenas, mas meu trabalho além da tradução inclui a adição de redes para que os jogadores possam competir frente a frente, bem como re-projetar para que seja mais modular / extensível. Em essência, o mecanismo de jogo compartilha pouca semelhança com o original, mas o jogo em si deriva bastante. Isso remonta à minha pergunta relacionada: agora é o mecanismo GPL ou eu poderia retirá-lo e reutilizá-lo para um projeto de licença MIT ou BSD.
Landon
7
@Landon Seu trabalho ainda é derivado de um trabalho da GPL e, portanto, está vinculado aos termos da GPL.
Philipp
1
@Landon: o que determina se a GPL se aplica não tem nada a ver com a GPL, é se o resultado final é um "trabalho derivado" ou não. Adicionar mais coisas não transforma um trabalho derivado em um trabalho não derivado, porque na lei não se trata da proporção do trabalho derivado, é a quantidade bruta. Uma conversão de rotina para outro idioma também é derivada, e é disso que o FAQ está informando / lembrando. A pergunta que você deve fazer ao seu advogado é: "de acordo com meus procedimentos, um tribunal consideraria isso um trabalho derivado?".
21714 Steve Jobs (
... no entanto, esta resposta se concentra nas "funções traduzidas literalmente" que presumivelmente são derivadas, mas que você diz que planeja remover. Como tal, não acho que realmente cubra o cenário pretendido. Ele cobre o atual e o cenário em que você estaria se cometer um erro e não conseguir consumir tudo o que precisa.
Steve Jessop
8

É duvidoso, mesmo se você reescreveu toda a biblioteca do zero, ela passaria por um exame legal. O código seria considerado "contaminado" porque você viu o código na biblioteca licenciada da GPL.

A abordagem padrão para esse problema é chamada "implementação de sala limpa". Você escreve um documento de requisitos e outra pessoa o implementa (que não viu o código GPL).

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

Como alguém colocou apropriadamente lá, uma tradução chinesa de Harry Potter ainda é um trabalho derivado, embora toda a informação tenha sido substituída.

Obviamente, a probabilidade de você ser processado por reescrever uma biblioteca licenciada pela 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, essa é (parte da) própria definição de trabalhos derivados: adição ao trabalho original. Não importa quanto você adicionou ou quão pequeno foi o trabalho inicial - ainda é derivado.

Sir Athos
fonte
3
Não sei se gosto da escolha da analogia: a pergunta original parece mais com a de que eles pensam que estavam originalmente juntando suas coisas com Harry Potter, mas agora querem juntá-la ao seu próprio romance épico de fantasia com magia e vilões que acontece principalmente em uma escola em um castelo.
1
@Hurkyl Então, 50 tons de cinza?
Yamikuronue 19/10/2014
8
Ver o código não significa que você o copiou. Uma implementação de sala limpa é útil se você espera que o proprietário do código original não goste do que você faz e o processe, para que você possa dizer no tribunal "nós não copiamos o código; mesmo se quiséssemos, nós não podia ", o que é uma forte defesa. Tendo visto o código, você ainda pode dizer "não copiamos o código", desde que seja verdade.
gnasher729
2
Concorde com @ gnasher729. A GPL afirma especificamente que você tem permissão para estudar o código. A premissa é que o autor a liberou para ensinar você (entre outras coisas). Por esse motivo, nunca apliquei o argumento de sala limpa no código GPL. Não se pode publicar um livro de receitas e processar pessoas que criam suas próprias receitas, a menos que, é claro, o código seja patenteado, a proteção de patentes cubra as técnicas e invenções, mas não a implementação (AFAIK). Direitos autorais e patentes são questões diferentes.
Codenheim
1
Eu diria que há uma probabilidade muito baixa de terminar em um tribunal se você violar a GPL porque, com apenas uma ou duas exceções sempre que houver um problema, um dos advogados das pessoas que violam a GPL entendem a GPL e mandam que pare ou faça um acordo. Essa foi certamente a minha experiência sempre que tive que escrever uma carta sobre uma violação. E há advogados pro bono que defenderão a GPL para o desenvolvedor original. Realmente, o melhor conselho é conversar com o codificador original. Eu pedi às pessoas para código dual / relicense e elas quase sempre disseram ok.
Elin
7

Observação: a GPL é relevante apenas se você divulgar seu trabalho. Você já lançou?

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

Opinião: A GPL, ou qualquer licença, não possui ideias de direitos autorais , reivindica o código fonte, por menor que seja sua parte. Portanto, 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 toda a funcionalidade, é para todos os efeitos práticos, não é mais derivado, porque, bem, seria ser indistinguível de uma implementação de sala limpa.

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

Martin Ba
fonte
8
"Observação: este não é um site de advogados, então jogue fora todo esse FUD legal e aplique o bom senso." Er, como essa é claramente uma questão jurídica, a solução não é fingir que as questões legais não existem, mas pedir a um advogado. Meu entendimento é que um trabalho derivado não pode deixar de ser um trabalho derivado apenas porque você produz mais.
David Richerby
1
@DavidRicherby: se for uma pergunta legal, a resposta é específica da jurisdição e oq deve ser fechado por ser muito localizado. :-)
Martin Ba
2
@MartinBa - o direito internacional concorda bastante com direitos autorais. Existem variações locais, mas não acho que as perguntas / respostas sejam necessariamente localizadas demais para serem úteis.
cloudfeet
5

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

Portanto, se você liberar seu software parcialmente durante a reescrita (para que haja uma mistura de seu código e código antigo), será necessário liberar essa parte do seu código como GPL, e isso não poderá ser revogado. No entanto, quem detém os direitos autorais é quem decide os termos de licenciamento, portanto você ainda tem o direito de essencialmente "licenciar duas vezes" essa parte do código, incluindo combiná-lo com outro código que você escreveu e vender / relicenciar, etc.

Ressalvas:

  • embora os direitos autorais do código que você escreve sejam seus por padrão, eles podem ser alterados por outro contrato / acordo, por exemplo, um CLA que especifica a transferência de direitos autorais ou um contrato com um empregador que possui todo o trabalho que você faz no "tempo deles".
  • se a sua reescrita constitui uma "obra derivada" suficiente para você compartilhar 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 pergunta foi mencionada ), essas partes poderão ser consideradas derivadas. Se você implementar uma substituição compatível com a API sem observar os detalhes, provavelmente isso não aconteceria.

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

cloudfeet
fonte
Você pode substituir "documento" por "contrato" ou "contrato". Não basta escrever em um artigo "O DougM possui o código dos cloudfeet". Teríamos que ter uma troca legal que passaria na revisão do tribunal.
DougM
Depende da jurisdição - pelo menos onde estou, até contratos verbais são vinculativos, apenas difíceis de provar. Um post-it com caligrafia apropriada se sustentaria muito bem na teoria . : p
cloudfeet
No entanto, seu ponto é bom, e contrato / acordo é uma descrição melhor - graças :)
cloudfeet
3

Sim.

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

O fato é que você terá um novo trabalho depois de substituir as últimas peças, que reconhecidamente foram construídas observando uma obra da GPL. Essa não é uma grande preocupação na lei de direitos autorais (as patentes seriam 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 esse modelo. O processo do Google / Oracle chegou aos direitos autorais no nível da linha.

MSalters
fonte
3
Um trabalho construído "olhando" para outro trabalho é um trabalho derivado e seria manchado pelos mesmos direitos autorais do trabalho que "você olhou".
DougM
1
@ DougM: Desculpe, mas essa é uma suposição muito conservadora que nunca vi usada com sucesso no tribunal. Não se esqueça, se essa teoria tivesse alguma relevância legal, também se aplicaria aos livros - o código de computador não possui leis especiais para determinar o que é um trabalho derivado. Ninguém vai argumentar que seu livro é um derivado de Shakespeare apenas porque você leu uma das peças dele na escola. Assim, esse precedente estabelece que a barra de "trabalho derivado" é muito maior do que "leu um trabalho semelhante".
MSalters
1
A GPL afirma especificamente que você tem permissão para estudar o código. Este não é um IP proprietário, é gratuito, de código aberto. Não vi nenhum apoio legal, durante a vida da GPL, para a alegação de que olhar para uma receita publicada para fazer minha própria receita implica um derivado.
Codenheim
1
Pode-se perguntar até onde o Linux poderia ter ido se a substituição do código Unix pelo código original não fosse suficiente.
user2338816
3
@ user2338816 O Linux não começou com o código Unix, mas com o MINIX. E tecnicamente, é possível que o MINIX pudesse ter um caso contra o Linux. Isso depende de como o Linux reescreveu seu código e a licença sob a qual o código MINIX foi compartilhado com as Universidades. No entanto, também se resume a política e dinheiro, o MINIX realmente quer ir atrás do Linux e o Linux tem o dinheiro (através de empresas como a Red Hat) para combatê-los.
22630 CrazyCasta
1

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

Quando você fala com Richard, descobre que ele é "louco como uma raposa" em muitas de suas implementações. A GPL foi escrita especificamente para ter ambiguidades e frases pouco claras. Geralmente, eles são expressos contra o benefício do autor da licença, mas também preocupam o advogado de propriedade intelectual. Inteligentemente, isso dá ao seu advogado de PI preocupações crescentes à medida que a empresa cresce. Uma pequena empresa comercial que faz 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 na GPL.

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

Charles Merriam
fonte