Comment gérer les avis de copyright des contributeurs à un projet sous licence BSD

9

Nous avons la licence BSD suivante dans le LICENSEfichier:

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.

Nous gérons le référentiel source par git ( https://github.com/sympy/sympy ), et donc chaque auteur possède les correctifs qu'il a créés. Nous avons ensuite un AUTHORSfichier où nous listons toutes les personnes qui ont contribué des correctifs (actuellement environ ~ 450 environ). En règle générale, les auteurs bifurquent le référentiel sur github et ajoutent des correctifs lorsque git s'engage.

Un auteur a créé le référentiel, mais a ajouté son nom dans le LICENSEfichier lui-même en tant qu'avis de droit d'auteur comme suit (j'ai changé le nom):

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'auteur a développé un patch, qui corrige un bug. Le correctif consiste à toucher un seul fichier et à supprimer 19 caractères d'une ligne, et à ajouter 18 caractères sur une autre ligne du même fichier. Il ajoute également un test de 5 lignes pour ce bogue dans un fichier de test. C'est ça.

Dans quelles conditions sommes-nous légalement autorisés à appliquer son patch (en sélectionnant ses commits, par exemple en conservant la date et le nom de l'auteur + e-mail dans les métadonnées git)?

a) Faut-il modifier notre LICENSEfichier pour ajouter sa notice de copyright?

b) Ou respectons-nous toujours la licence BSD si nous conservons un AUTHORSfichier à jour et conservons le référentiel git qui suit spécifiquement quels commits ont été apportés par quels auteurs.

Ce que je n'aime pas dans l'option a), c'est que si les quelque 450 contributeurs l'exigeaient, nous devrions conserver essentiellement le contenu du AUTHORSfichier dans le LICENSEfichier, ainsi que le Copyrightmot et les années. Git est bien meilleur pour garder les années (et même les jours et les minutes) ainsi que les lignes modifiées par chaque auteur et comment. Ensuite, nous avons un LICENSEfichier simple qui ne change pas et nous conservons la liste des auteurs AUTHORS(et nous avons un script qui le maintient synchronisé avec la liste des auteurs de git).

Ondřej Čertík
la source
4
Je vote pour fermer cette question comme hors sujet, car la question demande des conseils juridiques qui vont au-delà de ce qu'un programmeur peut être censé savoir. Vous devriez demander une couche.
Bart van Ingen Schenau
1
ou un avocat ...;)
Erik Eidt
7
Les programmeurs ne sont pas censés le savoir, mais ils le peuvent. Il serait préférable de supprimer les commentaires qui disent essentiellement "vous devriez parler à un avocat", ce qui est une réponse trop utilisée. Les programmeurs ont une compréhension des licences de logiciels, probablement plus que la plupart des avocats du monde. Mon vote est de garder cela ici.
moorepants
2
D'après ce que je comprends, lorsque quelqu'un fait une demande d'extraction à SymPy, il octroie implicitement une licence sous la licence SymPy.
asmeurer
2
@asmeurer à droite. Ma question est de savoir si l'auteur ne crée pas de pull request. C'est-à-dire dans quelles conditions pouvez-vous sélectionner les correctifs publiés dans une fourchette de votre référentiel, sous licence sous la même licence, mais modification de la notice de copyright.
Ondřej Čertík

Réponses:

3

Vous pouvez incorporer tout code doté d'une licence compatible.

Cela dit, à moins que le nouveau code ne soit spécifiquement sous licence sous une licence compatible si vous souhaitez insérer les modifications dans votre base de code, vous vous ouvrez à la possibilité de certaines difficultés.

En particulier, à moins que le code n'indique spécifiquement que les nouvelles contributions sont sous une licence compatible, la licence par défaut "tous droits réservés" lui est applicable. Tirer le code serait une violation du droit d'auteur.

Il est également possible que le nouveau code soit autorisé sous une licence compatible avec vous (et vous devrez conserver cette licence pour le code), mais incompatible avec un grand nombre de vos utilisateurs. Par exemple, si vous utilisez la clause BSD 2 et que quelqu'un concède sous licence la contribution d'un fork sous la clause BSD 3, vous pouvez probablement insérer cela dans votre code sans trop de difficulté. Cependant, comme la clause BSD 3 n'est pas compatible avec la GPL, cela rendrait votre projet GPL incompatible.

Si vous décidez de passer de BSD à GPL ultérieurement (par exemple) et que les demandes d'extraction attribuent les droits nécessaires pour modifier la licence dans le cadre de l'accord de licence du contributeur, vous extrayez le code d'autres projets qui n'ont pas accepté le CLA pourrait vous causer des maux de tête.

C'est le cas général ...

Pour le cas spécifique où le fichier de licence a changé ... je ne sais pas. De la simple lecture du fichier de licence:

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:

une. Les redistributions du code source doivent conserver l'avis de copyright ci-dessus ,
   cette liste de conditions et l'avertissement suivant.

Ce bit semble indiquer que si vous souhaitez intégrer ces modifications, vous devrez également modifier votre fichier de licence.

Malheureusement, vous n'avez pas de CLA bien défini pour le moment. Heureusement, pour le moment, vous n'avez que 450 personnes à demander.


la source
Donc, à partir du point de lecture "a". il semble que "la notice de copyright ci-dessus" pour le code SymPy original soit conservée par John Doe et que John Doe octroie des licences pour les nouvelles contributions à la branche sous la même licence mais que les nouveaux ajouts sont protégés par copyright pour John Doe.
moorepants
2
@moorepants pour cette instance, cela semble être le cas. Et donc, si SymPy veut autoriser ceux-ci à nouveau dans son code, il devra également suivre cette déclaration dans la licence et conserver la notice de copyright de John Doe.
Merci @MichaelT pour la réponse. Que dois-je demander aux 450 personnes? Il semble que tout ce que je dois faire est de copier la licence à partir de la fourche (y compris la déclaration de copyright de John Doe), et de simplement l'ajouter dans le NOTICESfichier, où nous stockons toutes les licences tierces.
Ondřej Čertík
1
@ OndřejČertík si jamais vous voulez changer la licence sur SymPy (cela fonctionne sur l'hypothèse que tous ceux qui ont soumis une pull request sont d'accord avec une licence sous BSD) pour dire ... GPL, vous avez besoin de l'autorisation de tous ceux qui a contribué car ils sont les seuls à pouvoir décider de l'octroyer à nouveau sous une autre licence. Apache a une CLA plutôt impliquée . De nombreux grands projets ont un CLA d'une sorte ou d'une autre pour s'assurer que le projet est en droit de distribuer le code soumis
1
Je suggère de regarder le premier point du discours 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

S'il y a du code source sous licence BSD et que quelqu'un l'ajoute des correctifs supplémentaires, alors ce nouveau code source dans le nouveau référentiel doit inclure le fichier de licence BSD exact du référentiel d'origine et les nouveaux correctifs doivent être sous licence sous une nouvelle licence (ou même la même licence). Ainsi, le fork doit avoir une ou deux licences dans le référentiel. Il n'est pas acceptable de modifier la licence d'origine, car cela viole les termes de la licence BSD.

Maintenant, si le dépôt d'origine veut sélectionner les correctifs de la fourche, une copie de la nouvelle licence de la fourche doit être ajoutée au dépôt d'origine. En fin de compte, les deux référentiels auront chaque licence, une couvrant chaque ensemble de correctifs.

SymPy devrait également exiger que les contributeurs renoncent à leurs droits d'auteur sur le projet SymPy. Il est potentiellement très problématique de laisser les contributeurs conserver leurs droits d'auteur sur les correctifs individuels lors de la soumission. Un accord des contributeurs expliquant cela est nécessaire pour être clair sur ce qui se passe.

moorepants
la source
Bien sûr, s'il n'y a pas de licence supplémentaire sur la fourche, les contributions ne sont, bien sûr, pas sous licence autre que la licence par défaut tous droits réservés.
1
Je ne pense pas que ce soit nécessairement vrai. Si aucune licence n'est spécifiée sur les nouveaux correctifs dans le fork, alors il y a une ambiguïté potentielle. Par défaut dans la législation américaine, le créateur du contenu détient le droit d'auteur si rien n'est indiqué. Donc, si aucune licence supplémentaire n'est répertoriée, il est possible que le créateur des correctifs dans le fork possède le droit d'auteur sur les nouveaux correctifs. Mais c'est ambigu car le créateur a dû laisser la licence d'origine dans la fourchette, ce qui peut s'appliquer à tous leurs correctifs. Les déclarations de licence par fichier aident à lever cette ambiguïté, mais vous voyez rarement une déclaration "par patch".
moorepants