Come gestire le informazioni sul copyright dai contributori a un progetto con licenza BSD

9

Abbiamo la seguente licenza BSD nel file LICENSE :

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.

Gestiamo il repository sorgente tramite git ( link ), e quindi ogni autore possiede le patch che ha creato. Abbiamo quindi un file AUTHORS in cui vengono elencate tutte le persone che hanno contribuito con le patch (attualmente circa ~ 450 o giù di lì). In genere gli autori assegnano il repository su github e aggiungono patch come commit git.

Un autore ha biforcuto il repository, ma ha aggiunto il suo nome nel file LICENSE stesso come avviso di copyright come segue (ho cambiato il 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.

L'autore ha sviluppato una patch che corregge un bug. La correzione consiste nel toccare un solo file e rimuovere 19 caratteri da una riga e aggiungere 18 caratteri su un'altra riga nello stesso file. Aggiunge anche un test di 5 righe per questo bug in un file di test. Questo è tutto.

In quali condizioni legalmente siamo autorizzati ad applicare la sua patch (selezionando i suoi commit con la ciliegia, ad esempio mantenendo la data e il nome dell'autore + email nei metadati git)?

a) Abbiamo bisogno di modificare il nostro file LICENSE per aggiungere la sua nota sul copyright?

b) O stiamo ancora rispettando la licenza BSD se teniamo un file AUTHORS aggiornato e manteniamo il repository git che traccia in modo specifico quali commit sono stati forniti da quali autori.

Ciò che non mi piace dell'opzione a) è che se tutti i 450 o più contributori lo richiedessero, allora avremmo bisogno di mantenere essenzialmente il contenuto del file AUTHORS nel file LICENSE , insieme con il Copyright parola e gli anni. Git è molto più bravo a mantenere gli anni (e persino i giorni e i minuti) e le linee modificate da ciascun autore e in che modo. Quindi abbiamo un semplice file LICENSE che non cambia e manteniamo la lista di autori in AUTHORS (e abbiamo uno script che lo mantiene sincronizzato con la lista di autori di git).

    
posta Ondřej Čertík 31.01.2016 - 17:54
fonte

2 risposte

3

Puoi incorporare qualsiasi codice che abbia una licenza compatibile ad esso.

Detto questo, a meno che il nuovo codice non sia specificamente concesso sotto una licenza compatibile se devi inserire le modifiche nella tua base di codice, ti stai aprendo alla possibilità di alcune difficoltà.

In particolare, a meno che il codice specifichi espressamente che i nuovi contributi sono sotto una licenza compatibile, la licenza predefinita "tutti i diritti riservati" è applicabile ad essa. Tirare il codice sarebbe una violazione del copyright.

C'è anche la possibilità che il nuovo codice sia concesso in licenza con una licenza che sia compatibile con te (e che tu debba mantenere quella licenza per il codice), ma incompatibile con molti dei tuoi utenti. Ad esempio, se si utilizza la clausola BSD 2 e qualcuno concede in licenza i contributi di un fork sotto la clausola BSD 3, è possibile inserirlo nel codice senza troppe difficoltà. Tuttavia, poiché la clausola BSD 3 non è compatibile con la GPL, ciò renderebbe incompatibile il tuo progetto GPL.

Se dovessi decidere di passare da BSD a GPL in un secondo momento (ad esempio), e le richieste di pull assegnano i diritti necessari per modificare la licenza come parte del contratto di licenza del contributore, stai tirando il codice da altri progetti che hanno " t accettato per il CLA potrebbe causare alcuni mal di testa.

Questo è il caso generale ...

Per il caso specifico in cui il file di licenza è cambiato ... Non lo so. Dalla semplice lettura del file di licenza:

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.

Questo bit sembra indicare che se vuoi inserire queste modifiche, anche devi modificare il file di licenza.

Al momento non disponi di un CLA ben definito. Fortunatamente, in questo momento hai solo 450 persone da chiedere.

    
risposta data 01.02.2016 - 03:06
fonte
2

Se esiste un codice sorgente con licenza BSD e qualcuno aggiunge altre patch, questo nuovo codice sorgente nel nuovo repository dovrebbe includere il file di licenza BSD dal repository originale e le nuove patch dovrebbero essere concesse in licenza con una nuova licenza ( o anche la stessa licenza). Pertanto, la fork dovrebbe avere una o due licenze nel repository. Non è accettabile modificare la licenza originale, in quanto viola i termini della licenza BSD.

Ora se il repository originale vuole selezionare le patch dal fork, allora una copia della nuova licenza della fork deve essere aggiunta al repository originale. In definitiva entrambi i repository avranno ciascuna licenza, una che copre ciascuna serie di patch.

SymPy dovrebbe anche richiedere che i contributori rinuncino al copyright del progetto SymPy. È potenzialmente molto problematico lasciare che i contributori mantengano i loro diritti d'autore su singole patch al momento dell'invio. È necessario un accordo di contribuzione che chiarisca ciò che sta accadendo.

    
risposta data 01.02.2016 - 01:42
fonte

Leggi altre domande sui tag