Cómo gestionar los avisos de copyright de los contribuyentes a un proyecto con licencia BSD

9

Tenemos la siguiente licencia BSD en el LICENSEarchivo:

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.

Gestionamos el repositorio de origen por git ( https://github.com/sympy/sympy ) y, por lo tanto, cada autor posee los parches que creó. Luego tenemos un AUTHORSarchivo donde enumeramos todas las personas que contribuyeron con parches (actualmente alrededor de ~ 450 más o menos). Por lo general, los autores bifurcan el repositorio en github y agregan parches a medida que git confirma.

Un autor bifurcó el repositorio, pero agregó su nombre en el LICENSEarchivo como un aviso de copyright de la siguiente manera (cambié el nombre):

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.

El autor desarrolló un parche que corrige un error. La solución consiste en tocar solo un archivo y eliminar 19 caracteres de una línea, y agregar 18 caracteres en otra línea en el mismo archivo. También agrega una prueba de 5 líneas para este error en un archivo de prueba. Eso es.

¿En qué condiciones se nos permite legalmente aplicar su parche (seleccionando sus confirmaciones, por ejemplo, preservando la fecha y el nombre del autor + correo electrónico en los metadatos git)?

a) ¿Necesitamos modificar nuestro LICENSEarchivo para agregar su aviso de copyright?

b) ¿O seguimos cumpliendo con la licencia BSD si mantenemos un AUTHORSarchivo actualizado y mantenemos el repositorio git que rastrea específicamente qué compromisos contribuyeron los autores?

Lo que no me gusta de la opción a) es que si los 450 contribuyentes lo requirieran, entonces deberíamos mantener esencialmente el contenido del AUTHORSarchivo en el LICENSEarchivo, junto con la Copyrightpalabra y los años. Git es mucho mejor para mantener los años (e incluso días y minutos), así como qué líneas fueron modificadas por cada autor y cómo. Luego tenemos un LICENSEarchivo simple que no cambia y guardamos la lista de autores AUTHORS(y tenemos un script que lo mantiene sincronizado con la lista de autores de git).

Ondřej Čertík
fuente
44
Estoy votando para cerrar esta pregunta como fuera de tema porque la pregunta pide asesoramiento legal que vaya más allá de lo que se espera que un programador sepa. Debes pedir una capa.
Bart van Ingen Schenau el
1
o un abogado ...;)
Erik Eidt
77
No se espera que los programadores sepan esto, pero pueden. Sería una mejor idea eliminar los comentarios que básicamente dicen "debe hablar con un abogado", que es una respuesta muy usada. Los programadores tienen conocimiento de las licencias de software, probablemente más que la mayoría de los abogados del mundo. Mi voto es mantener esto aquí.
moorepants
2
Tengo entendido que cuando alguien hace una solicitud de extracción a SymPy, la licencia implícitamente se otorga bajo la licencia de SymPy.
asmeurer
2
@asmeurer a la derecha. Mi pregunta es si el autor no crea una solicitud de extracción. Es decir, bajo qué condiciones puede elegir los parches publicados en una bifurcación de su repositorio, con licencia bajo la misma licencia, pero con aviso de copyright modificado.
Ondřej Čertík

Respuestas:

3

Puede incorporar cualquier código que tenga una licencia compatible.

Dicho esto, a menos que el nuevo código tenga una licencia específica bajo una licencia compatible si desea incorporar los cambios a su base de código, se está abriendo a la posibilidad de algunas dificultades.

En particular, a menos que el código establezca específicamente que las nuevas contribuciones están bajo una licencia compatible, se le aplicará la licencia predeterminada "todos los derechos reservados". Tirar del código sería una infracción de derechos de autor.

También existe la posibilidad de que el nuevo código tenga licencia bajo una licencia que sea compatible con usted (y necesitaría mantener esa licencia para el código), pero incompatible con muchos de sus usuarios. Por ejemplo, si está utilizando la cláusula BSD 2, y alguien licencia las contribuciones de una bifurcación bajo la cláusula BSD 3, probablemente podría incluir eso en su código sin demasiada dificultad. Sin embargo, como la cláusula BSD 3 no es compatible con la GPL, eso haría que su proyecto GPL sea incompatible.

Si decide cambiar de BSD a GPL más adelante (por ejemplo), y las solicitudes de extracción asignan los derechos necesarios para cambiar la licencia como parte del acuerdo de licencia de contribuyente, está sacando el código de otros proyectos que no han acordado El CLA podría causarle dolores de cabeza.

Ese es el caso general ...

Para el caso específico donde cambió el archivo de licencia ... No lo sé. De la simple lectura del archivo de licencia:

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. Las redistribuciones del código fuente deben conservar el aviso de copyright anterior ,
   esta lista de condiciones y el siguiente descargo de responsabilidad.

Ese bit parece indicar que si desea obtener esos cambios, también deberá cambiar su archivo de licencia.

Desafortunadamente, no tiene un CLA bien definido en este momento. Afortunadamente, en este momento solo tienes 450 personas para preguntar.


fuente
Entonces, desde el punto de lectura "a". parece que John Doe conserva "el aviso de copyright anterior" para el código SymPy original y que John Doe está otorgando licencias de las nuevas contribuciones a la bifurcación bajo la misma licencia, pero que las nuevas adiciones tienen derechos de autor de John Doe.
moorepants
2
@moorepants para esta instancia, ese parece ser el caso. Y por lo tanto, si sympy quiere licenciar los de vuelta en su código, que también tendría que seguir esa declaración en el otorgamiento de licencias y conservar el aviso de derechos de autor por John Doe.
Gracias @MichaelT por la respuesta. ¿Qué necesito pedirle a las 450 personas? Parece que todo lo que necesito hacer es copiar la licencia de la bifurcación (incluida la declaración de derechos de autor de John Doe), y simplemente agregarla al NOTICESarchivo, donde almacenaríamos todas las licencias de terceros.
Ondřej Čertík 01 de
1
@ OndřejČertík si alguna vez desea cambiar la licencia en SymPy (esto funciona suponiendo que todos los que han enviado una solicitud de extracción están de acuerdo con la licencia bajo el BSD) para decir ... GPL, necesita el permiso de todos los que ha contribuido ya que solo ellos pueden decidir volver a licenciarlo bajo otra licencia. Apache tiene un CLA bastante complicado . Muchos grandes proyectos tienen un CLA de algún tipo u otro para asegurarse de que el proyecto tenga derecho a distribuir el código enviado
1
Sugeriría mirar la primera viñeta del discurso 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

Si hay un código fuente con licencia BSD y alguien lo bifurca agregando parches adicionales, entonces este nuevo código fuente en el nuevo repositorio debe incluir el archivo de licencia BSD exacto del repositorio original y los nuevos parches deben tener licencia bajo una nueva licencia (o incluso la misma licencia) Por lo tanto, la bifurcación debe tener una o dos licencias en el repositorio. No es aceptable editar la licencia original, ya que eso viola los términos de la licencia BSD.

Ahora, si el repositorio original quiere seleccionar los parches de la bifurcación, se debe agregar una copia de la nueva licencia de la bifurcación al repositorio original. Finalmente, ambos repositorios tendrán cada licencia, una que cubrirá cada conjunto de parches.

SymPy también debería exigir que los contribuyentes renuncien a sus derechos de autor del proyecto SymPy. Es potencialmente muy problemático permitir que los contribuyentes retengan sus derechos de autor a parches individuales al enviarlos. Se necesita un acuerdo de contribuyentes que explique esto para aclarar lo que está sucediendo.

moorepants
fuente
Por supuesto, si no hay una licencia adicional en la bifurcación, entonces las contribuciones, bueno, no se otorgan bajo otra licencia que no sea la licencia predeterminada de todos los derechos reservados.
1
No creo que eso sea necesariamente cierto. Si no se especifica una licencia en los nuevos parches en la bifurcación, existe una posible ambigüedad. Por defecto en la ley de los Estados Unidos, el creador del contenido posee los derechos de autor si no se indica nada. Por lo tanto, si no se incluye una licencia adicional, es posible que el creador de los parches en la bifurcación posea los derechos de autor de los nuevos parches. Pero es ambiguo porque el creador tuvo que dejar la licencia original en la bifurcación, por lo que puede aplicarse a todos sus parches. Las declaraciones de licencia por archivo ayudan a aclarar esa ambigüedad, pero rara vez se ve una declaración "por parche".
moorepants