Qual é a maneira correta de dividir / reutilizar o código de um projeto de código aberto?


22

Digamos que eu esteja trabalhando em um projeto de código aberto e queira reutilizar uma função de utilidade trivial de outro projeto de código aberto (por exemplo, uma função de pesquisa / substituição de arquivo). É legal copiar a função e simplesmente escrever um pequeno aviso de direitos autorais no topo do arquivo? Devo incluir o nome deles como detentores de direitos autorais de todo o projeto na licença?

Da mesma forma, digamos que eu garfo um projeto de código aberto. Onde e como especifico que os direitos autorais são compartilhados entre mim e o titular dos direitos autorais originais?

Eu acho que a resposta deve variar um pouco de acordo com a licença de código aberto, mas eu gostaria de uma resposta geral, tanto quanto possível.

PS: Estou preocupado principalmente com o aspecto legal, mas sinta-se à vontade para incluir seu ponto de vista ético.


1
Qual é a licença do projeto em questão e o projeto que você está lançando? Sim, você pode usar o código, mas seja mais específico, para que possamos informá-lo melhor sobre seus requisitos sob a licença que está sendo usada.
Tim Post

1
@ Tim Post: É principalmente uma questão teórica, mas se puder ajudar, vamos supor que os dois projetos tenham uma licença GPL, pois é muito comum.
Olivier Lalonde

Respostas:


25

Estou tentando fazer com que esta resposta seja 'meta' aplicável quanto possível.

Usando trechos / bits de outros projetos

Marque claramente o código com os direitos autorais do autor original. Verifique se sua licença de escolha é totalmente compatível com a licença do código que você está usando. Você precisará da permissão do autor para mover o código para uma licença diferente (a menos que eles permitam especificamente fazê-lo, ou seja, "GPL 2 ou qualquer versão posterior")

Seu programa deve ter um arquivo AUTHORS (ou similar), no qual você lista todos os colaboradores e itens usados ​​em outros projetos.

Bifurcando um projeto

Para cada módulo que você alterar substancialmente , adicione seus direitos autorais sob o autor original. O mesmo vale para o licenciamento, você está vinculado aos termos da licença em vigor quando a bifurcou. Se o projeto indicar "apenas GPL2", você deve respeitar isso, não poderá ir para a GPL3 sem a permissão deles.

Isso varia muito, dependendo da licença em mãos. A QPL diz que você só pode distribuir alterações no formato do patch, por exemplo, para entender os termos que permitem distribuir versões modificadas do software.

Além disso, sempre preserve os direitos autorais. Se você adicionar seus próprios direitos autorais ao que existe, marque claramente exatamente o que está reivindicando.


Às vezes, você pode adicionar licenças. Suponha que você queira usar uma função BSD em um projeto GPL: você não pode remover a licença BSD, mas ela é compatível com a GPL, para que você possa emitir todo o projeto sob a GPL e observe que a função também está sob a BSD licença. Seria educado liberar quaisquer alterações feitas no código licenciado pelo BSD sob o BSD.
precisa

@ David - O OP queria uma resposta genérica (daí o meu desejo de pesquisar as licenças). Você está bem correto. NO ENTANTO, é "bom" licenciar duas vezes as alterações feitas no código BSD, para que os autores originais possam usá-lo, se quiserem.
Tim Post

1
Em que momento o arquivo de licença principal deve ter seu aviso de direitos autorais acima do autor original? Quando seus SLOCs excederem 200% dos SLOCs originais do projeto? 300%? Se o projeto que você bifurcou acaba sendo um dos muitos bibliotecas ou módulos do seu projeto?
HOBs

@hobs imo, a ordem do aviso de direitos autorais não é uma indicação da magnitude da contribuição, mas detalha cronologicamente as origens.

A ordem cronológica do @TechnikEmpire faz sentido, mas para uma lista de colaboradores em vez de um aviso de direitos autorais? Eu pensei que os avisos de direitos autorais poderiam ser melhor organizados de acordo com as seções de código às quais se aplicam e o valor / quantidade dessas seções no pacote. É útil ter uma lista das pessoas com as quais você precisa entrar em contato, em ordem de prioridade, se desejar alterar algo sobre a licença. Portanto, se você obtiver permissão dos primeiros, mas não dos últimos, terá uma quantidade menor de código para recriar, se estiver determinado a fazer a alteração. Eu me pergunto o que Linus faz?
hobs
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.