Come gestire gli avvisi di copyright dei partecipanti a un progetto su licenza BSD


9

Abbiamo la seguente licenza BSD nel LICENSEfile:

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 di origine tramite git ( https://github.com/sympy/sympy ), e quindi ogni autore possiede le patch che ha creato. Abbiamo quindi un AUTHORSfile in cui elenchiamo tutte le persone che hanno contribuito con le patch (attualmente circa ~ 450 circa). In genere gli autori eseguono il fork del repository su github e aggiungono le patch mentre git commette.

Un autore ha modificato il repository, ma ha aggiunto il suo nome al LICENSEfile 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 solo un file e rimuovere 19 caratteri da una riga e aggiungere 18 caratteri in un'altra riga nello stesso file. Aggiunge anche un test a 5 righe per questo bug in un file di test. Questo è tutto.

In quali condizioni è legalmente autorizzato ad applicare la sua patch (selezionando i suoi commit, ad esempio preservando la data e il nome dell'autore + e-mail nei metadati git)?

a) Dobbiamo modificare il nostro LICENSEfile per aggiungere la sua nota sul copyright?

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

Quello che non mi piace dell'opzione a) è che se tutti e 450 i contributori lo richiedessero, allora dovremmo mantenere essenzialmente il contenuto del AUTHORSfile nel LICENSEfile, insieme alla Copyrightparola e agli anni. Git è molto meglio nel mantenere gli anni (e anche i giorni e i minuti), nonché le linee modificate da ciascun autore e come. Quindi abbiamo un semplice LICENSEfile che non cambia e manteniamo l'elenco degli autori AUTHORS(e abbiamo uno script che lo mantiene sincronizzato con l'elenco degli autori di git).


4
Sto votando per chiudere questa domanda come fuori tema perché la domanda richiede una consulenza legale che va oltre ciò che ci si può aspettare da un programmatore. Dovresti chiedere un livello.
Bart van Ingen Schenau,

1
o un avvocato ...;)
Erik Eidt,

7
I programmatori non dovrebbero saperlo, ma possono. Sarebbe una buona idea rimuovere i commenti che sostanzialmente dicono "dovresti parlare con un avvocato", che è una risposta troppo usata. I programmatori hanno una conoscenza delle licenze software, probabilmente più della maggior parte degli avvocati del mondo. Il mio voto è di tenerlo qui.
moorepants

2
La mia comprensione è che quando qualcuno fa una richiesta pull a SymPy, lo implicano in licenza implicitamente con la licenza SymPy.
asmeurer

2
@asmeurer giusto. La mia domanda è se l'autore non crea una richiesta pull. Vale a dire a quali condizioni è possibile selezionare le patch pubblicate in un fork del repository, concesse in licenza con la stessa licenza, ma modificate le informazioni sul copyright.
Ondřej Čertík,

Risposte:


3

È possibile incorporare qualsiasi codice che disponga di una licenza compatibile.

Detto questo, a meno che il nuovo codice non sia specificamente concesso in licenza con una licenza compatibile se si desidera inserire le modifiche nella propria base di codice, ci si sta aprendo alla possibilità di alcune difficoltà.

In particolare, a meno che il codice non specifichi espressamente che i nuovi contributi sono coperti da una licenza compatibile, la licenza predefinita "tutti i diritti riservati" è applicabile ad esso. L'estrazione del codice sarebbe una violazione del copyright.

Esiste anche la possibilità che il nuovo codice sia concesso in licenza con una licenza 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 in base alla clausola BSD 3, è possibile che sia possibile inserirlo nel codice senza troppe difficoltà. Tuttavia, poiché la clausola BSD 3 non è compatibile con la GPL, ciò renderebbe incompatibile la GPL del progetto.

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

Questo è il caso generale ...

Per il caso specifico in cui il file della 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:

un. Le ridistribuzioni del codice sorgente devono conservare la suddetta nota sul copyright ,
   questo elenco di condizioni e il seguente disclaimer.

Quel po 'sembra indicare che, se si vuole tirare quei cambiamenti, è anche necessario modificare il file di licenza.

Sfortunatamente, al momento non hai un CLA ben definito. Fortunatamente, in questo momento hai solo 450 persone da chiedere.


Quindi dal punto di lettura "a". sembra che "la suddetta nota sul copyright" per il codice SymPy originale sia mantenuta da John Doe e che John Doe stia concedendo in licenza i nuovi contributi al fork con la stessa licenza ma che le nuove aggiunte sono protette da copyright a John Doe.
moorepants

2
@moorepants per questa istanza, questo sembrerebbe essere il caso. E così, se SymPy vuole acquistare la licenza quelli di nuovo nel suo codice, sarebbe anche necessario seguire questa affermazione nella concessione di licenze e mantenere la nota di copyright di John Doe.

Grazie @MichaelT per la risposta. Cosa devo chiedere alle 450 persone? Sembra che tutto ciò che devo fare sia copiare la licenza dal fork (inclusa la dichiarazione sul copyright di John Doe) e semplicemente aggiungerla in un NOTICESfile, dove archiveremmo tutte le licenze di terze parti.
Ondřej Čertík,

1
@ OndřejČertík se mai vuoi cambiare la licenza su SymPy (questo sta lavorando sul presupposto che tutti coloro che hanno inviato una richiesta pull siano d'accordo con la licenza sotto il BSD) per dire ... GPL, hai bisogno del permesso di tutti coloro che ha contribuito poiché solo loro possono decidere di riconsegnarlo con un'altra licenza. Apache ha un CLA piuttosto coinvolto . Molti grandi progetti hanno un CLA di qualche tipo o altro per assicurarsi che il progetto rientri nei suoi diritti di distribuzione del codice inviato

1
Suggerirei di guardare il primo punto del discorso CLA :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 esiste un codice sorgente con licenza BSD e qualcuno lo richiede aggiungendo patch aggiuntive, questo nuovo codice sorgente nel nuovo repository dovrebbe includere l'esatto 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, il fork dovrebbe avere una o due licenze nel repository. Non è accettabile modificare la licenza originale, poiché ciò viola i termini della licenza BSD.

Ora, se il repository originale desidera selezionare patch dalla forcella, è necessario aggiungere una copia della nuova licenza della fork al repository originale. Alla fine entrambi i repository avranno ciascuna licenza, una relativa a ciascuna serie di patch.

SymPy dovrebbe anche richiedere ai partecipanti di rinunciare al proprio copyright sul progetto SymPy. È potenzialmente molto problematico lasciare che i partecipanti mantengano il loro copyright su singole patch al momento dell'invio. Per chiarire cosa sta succedendo è necessario un accordo con i collaboratori che lo spieghi chiaramente.


Naturalmente, se sul fork non è presente alcuna licenza aggiuntiva, i contributi non sono, in effetti, concessi in licenza in base a qualsiasi altro diritto diverso dalla licenza riservata di tutti i diritti.

1
Non credo sia necessariamente vero. Se non viene specificata alcuna licenza per le nuove patch nel fork, allora c'è potenziale ambiguità. Per impostazione predefinita nella legge degli Stati Uniti, il creatore del contenuto possiede il copyright se non viene indicato nulla. Pertanto, se non viene elencata alcuna licenza aggiuntiva, è possibile che il creatore delle patch nel fork possieda il copyright delle nuove patch. Ma è ambiguo perché il creatore ha dovuto lasciare la licenza originale nel fork, quindi potrebbe applicarsi a tutte le loro patch. Le dichiarazioni di licenza per file aiutano a chiarire un po 'questa ambiguità, ma raramente vedi un'istruzione "per patch".
moorepants
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.