Como gerenciar avisos de direitos autorais de colaboradores de um projeto licenciado BSD


9

Temos a seguinte licença BSD no LICENSEarquivo:

Copyright (c) 2006-2016 SymPy Development Team

All rights reserved.

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:

  a. Redistributions of source code must retain the above copyright notice,
     this list of conditions and the following disclaimer.
  b. Redistributions in binary form must reproduce the above copyright
     notice, this list of conditions and the following disclaimer in the
     documentation and/or other materials provided with the distribution.
  c. Neither the name of SymPy nor the names of its contributors
     may be used to endorse or promote products derived from this software
     without specific prior written permission.


THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR
ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
DAMAGE.

Gerenciamos o repositório de origem por git ( https://github.com/sympy/sympy ) e, portanto, cada autor possui os patches que ele criou. Em seguida, temos um AUTHORSarquivo no qual listamos todas as pessoas que contribuíram com patches (atualmente cerca de ~ 450). Normalmente, os autores bifurcam o repositório no github e adicionam patches conforme o git confirma.

Um autor bifurcou o repositório, mas adicionou seu nome ao LICENSEarquivo como um aviso de direitos autorais da seguinte maneira (eu mudei o nome):

Copyright (c) 2006-2015 SymPy Development Team,
              2015-2016 John Doe

All rights reserved.

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:

  a. Redistributions of source code must retain the above copyright notice,
     this list of conditions and the following disclaimer.
  b. Redistributions in binary form must reproduce the above copyright
     notice, this list of conditions and the following disclaimer in the
     documentation and/or other materials provided with the distribution.
  c. Neither the name of SymPy nor the names of its contributors
     may be used to endorse or promote products derived from this software
     without specific prior written permission.


THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR
ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
DAMAGE.

O autor desenvolveu um patch, que corrige um bug. A correção consiste em tocar apenas em um arquivo e remover 19 caracteres de uma linha e adicionar 18 caracteres em outra linha no mesmo arquivo. Ele também adiciona um teste de 5 linhas para esse bug em um arquivo de teste. É isso aí.

Em que condições é permitido legalmente aplicar seu patch (escolhendo seus commits, por exemplo, preservando a data e o nome do autor + email nos metadados do git)?

a) Precisamos modificar nosso LICENSEarquivo para adicionar seu aviso de direitos autorais?

b) Ou ainda estamos cumprindo a licença BSD se mantivermos um AUTHORSarquivo atualizado e mantivermos o repositório git que rastreia especificamente quais commits foram contribuídos por quais autores.

O que não gosto na opção a) é que, se todos os 450 colaboradores exigissem isso, precisaríamos manter essencialmente o conteúdo do AUTHORSarquivo no LICENSEarquivo, juntamente com a Copyrightpalavra e os anos. O Git é muito melhor em manter os anos (e até dias e minutos), bem como quais linhas foram modificadas por cada autor e como. Depois, temos um LICENSEarquivo simples que não muda e mantemos a lista de autores AUTHORS(e temos um script que o mantém sincronizado com a lista de autores do git).


4
Estou votando para encerrar esta questão como fora de tópico, porque ela pede aconselhamento jurídico que vai além do que se espera que um programador saiba. Você deve pedir uma camada.
Bart van Ingen Schenau

11
ou um advogado ...;)
Erik Eidt 31/01

7
Os programadores não devem saber disso, mas podem. Seria uma idéia melhor remover os comentários que basicamente dizem "você deveria conversar com um advogado", que é uma resposta muito usada. Os programadores compreendem o licenciamento de software, provavelmente mais do que a maioria dos advogados do mundo. Meu voto é manter isso aqui.
moorepants

2
Meu entendimento é que, quando alguém faz uma solicitação pull ao SymPy, está implicitamente licenciando-a sob a licença SymPy.
asmeurer 31/01

2
@asmeurer certo. Minha pergunta é se o autor não cria uma solicitação de recebimento. Ou seja, sob quais condições você pode escolher os patches publicados em um fork do seu repositório, licenciado sob a mesma licença, mas com aviso de direitos autorais modificado.
Ondřej Čertík 31/01

Respostas:


3

Você pode incorporar qualquer código que tenha uma licença compatível.

Dito isto, a menos que o novo código seja licenciado especificamente sob uma licença compatível, se você quiser inserir as alterações na sua base de código, estará se abrindo para a possibilidade de algumas dificuldades.

Em particular, a menos que o código indique especificamente que as novas contribuições estão sob uma licença compatível, a licença padrão "todos os direitos reservados" é aplicável a ele. Puxar o código seria uma violação de direitos autorais.

Também existe a possibilidade de o novo código ser licenciado sob uma licença compatível com você (e você precisaria manter essa licença para o código), mas incompatível com muitos de seus usuários. Por exemplo, se você estiver usando a cláusula BSD 2 e alguém licenciar as contribuições de uma bifurcação sob a cláusula BSD 3, provavelmente poderá inseri-la no seu código sem muita dificuldade. No entanto, como a cláusula BSD 3 não é compatível com a GPL, isso tornaria a GPL do seu projeto incompatível.

Se você decidir mudar de BSD para GPL posteriormente (por exemplo), e as solicitações pull atribuírem os direitos necessários para alterar a licença como parte do contrato de licença do colaborador, você extrairá o código de outros projetos que não concordaram em o CLA pode causar algumas dores de cabeça.

Esse é o caso geral ...

Para o caso específico em que o arquivo de licença mudou ... não sei. Desde a simples leitura do arquivo de licença:

Copyright (c) 2006-2015 SymPy Development Team,  
              2015-2016 John Doe

All rights reserved.

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:

uma. As redistribuições do código-fonte devem manter o aviso de direitos autorais acima ,
   esta lista de condições e o aviso de isenção de responsabilidade a seguir.

Esse bit parece indicar que, se você deseja obter essas alterações, também precisará alterar seu arquivo de licença.

Infelizmente, você não tem um CLA bem definido no momento. Felizmente, neste momento, você só tem 450 pessoas para perguntar.


Então, do ponto de leitura "a". parece que "o aviso de direitos autorais acima" para o código SymPy original é mantido por John Doe e que John Doe está licenciando as novas contribuições para a bifurcação sob a mesma licença, mas que as novas adições são de propriedade de John Doe.
moorepants

2
@ moorepants para esta instância, esse parece ser o caso. E assim, se o SymPy quiser licenciá-los novamente em seu código, também precisará seguir essa declaração no licenciamento e manter o aviso de direitos autorais de John Doe.

Obrigado @MichaelT pela resposta. O que preciso pedir às 450 pessoas? Parece que tudo o que preciso fazer é copiar a licença da bifurcação (incluindo a declaração de direitos autorais de John Doe) e apenas anexá-la ao NOTICESarquivo, onde armazenaríamos todas as licenças de terceiros.
Ondřej Čertík

11
@ OndřejČertík, se você quiser alterar a licença no SymPy (isso está funcionando no pressuposto de que todos os que enviaram uma solicitação pull estão bem em licenciá-la sob o BSD) para dizer ... GPL, você precisa da permissão de todos que contribuiu, pois somente eles podem decidir licenciá-lo sob outra licença. O Apache possui um CLA bastante envolvido . Muitos projetos grandes têm um CLA de um tipo ou de outro para garantir que o projeto esteja dentro dos seus direitos de distribuir o código enviado

11
Eu sugiro olhando para o primeiro ponto de CLA discurso :You grant to "The Company" (Civilized Discourse Construction Kit, Inc.) a non-exclusive, irrevocable, worldwide, royalty-free, sublicenseable, relicenseable, transferable license under all of Your relevant intellectual property rights, to use, copy, prepare derivative works of, distribute and publicly perform and display "The Contributions" on any licensing terms, including without limitation: (a) open source licenses like the GNU General Public (v2.0) license; ...

2

Se houver código-fonte licenciado pela BSD e alguém forçar a adição de patches adicionais, esse novo código-fonte no novo repositório deverá incluir o arquivo de licença BSD exato do repositório original e os novos patches deverão ser licenciados sob uma nova licença (ou até a mesma licença). Portanto, o fork deve ter uma ou duas licenças no repositório. Não é aceitável editar a licença original, pois isso viola os termos da licença BSD.

Agora, se o repositório original quiser escolher os remendos do garfo, então uma cópia da nova licença do garfo deve ser adicionada ao repositório original. Por fim, ambos os repositórios terão cada licença, uma cobrindo cada conjunto de patches.

O SymPy também deve exigir que os colaboradores renunciem seus direitos autorais ao projeto SymPy. É potencialmente muito problemático permitir que os colaboradores mantenham seus direitos autorais sobre patches individuais no envio. É necessário um acordo de contribuinte explicando isso para esclarecer o que está acontecendo.


Obviamente, se não houver licença adicional na bifurcação, as contribuições não serão licenciadas sob outra coisa que não seja a licença reservada padrão de todos os direitos.

11
Não acredito que isso seja necessariamente verdade. Se nenhuma licença for especificada nos novos patches na bifurcação, haverá uma ambiguidade potencial. Por padrão na lei dos EUA, o criador do conteúdo possui os direitos autorais, se nada for declarado. Portanto, se nenhuma licença adicional estiver listada, é possível que o criador dos patches na bifurcação possua os direitos autorais dos novos patches. Mas é ambíguo porque o criador teve que deixar a licença original na bifurcação, para que isso possa se aplicar a todos os seus patches. As instruções de licença por arquivo ajudam a esclarecer essa ambiguidade, mas você raramente vê uma instrução "por patch".
moorepants
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.