¿Cuál es la forma correcta de bifurcar / reutilizar código de un proyecto de código abierto?

22

Digamos que estoy trabajando en un proyecto de código abierto y quiero reutilizar una función de utilidad trivial de otro proyecto de código abierto (por ejemplo, una función de búsqueda / reemplazo de archivos). ¿Es legal copiar la función y simplemente escribir un pequeño aviso de copyright en la parte superior del archivo? ¿Debo incluir su nombre como titulares de derechos de autor de todo el proyecto en la licencia?

Del mismo modo, digamos que bifurco un proyecto de código abierto. ¿Dónde y cómo especifico que los derechos de autor se comparten entre el titular original y yo?

Supongo que la respuesta debe variar de acuerdo con la licencia de código abierto, pero me gustaría una respuesta general tanto como sea posible.

PD: Me preocupa sobre todo el aspecto legal, pero siéntase libre de incluir su punto de vista ético.

Olivier Lalonde
fuente
1
¿Cuál es la licencia del proyecto en cuestión y el proyecto que está lanzando? Sí, puede usar el código, pero sea más específico para que podamos informarle mejor sobre sus requisitos bajo la licencia que se está utilizando.
Tim Post
1
@Tim Post: es principalmente una pregunta teórica, pero si puede ayudar, supongamos que ambos proyectos tienen una licencia GPL, ya que es muy común.
Olivier Lalonde

Respuestas:

25

Estoy tratando de hacer esta respuesta lo más 'meta' aplicable posible.

Usando fragmentos / bits de otros proyectos

Marque claramente el código con los derechos de autor del autor original. Asegúrese de que su licencia de elección sea totalmente compatible con la licencia del código que está utilizando. Necesitará permiso del autor para mover el código a una licencia diferente (a menos que específicamente le permitan hacerlo, es decir, "GPL 2 o cualquier versión posterior")

Su programa debe tener un archivo de AUTORES (o similar), donde enumere todos los contribuyentes y cosas que utilizó de otros proyectos.

Bifurcando un proyecto

Para cada módulo que cambie sustancialmente , agregue sus derechos de autor debajo del autor original. Lo mismo ocurre con las licencias, usted está sujeto a los términos de la licencia que estaba vigente cuando la bifurcó. Si el proyecto dice "solo GPL2", debe respetar eso, no puede ir a GPL3 sin su permiso.

Esto varía, en gran medida, dependiendo de la licencia en cuestión. El QPL dice que solo puede distribuir cambios en el formato de parche, por ejemplo, así que asegúrese de comprender los términos que le permiten distribuir versiones modificadas del software.

Más allá de eso, siempre preservar los derechos de autor. Si agrega sus propios derechos de autor a lo que existe, asegúrese de marcar claramente lo que está reclamando.

Tim Post
fuente
Puede, a veces, agregar licencias. Supongamos que desea utilizar una función BSD en un proyecto GPL: no puede eliminar la licencia BSD, pero es compatible con la GPL, por lo que puede emitir todo el proyecto bajo la GPL y tener en cuenta que la función también está bajo la BSD licencia. Sería educado publicar cualquier cambio que realice en el código con licencia BSD bajo BSD.
David Thornley
@David: el OP quería una respuesta genérica (de ahí mi urgencia de investigar las licencias). Tienes toda la razón. SIN EMBARGO, es 'agradable' doble licenciar cualquier cambio que haya realizado en el código BSD, por lo que los autores originales pueden usarlo si lo desean.
Tim Post
1
¿En qué momento el archivo de licencia principal debe tener su aviso de copyright por encima de los autores originales? ¿Cuándo sus SLOC exceden el 200% de los SLOC originales del proyecto? 300%? Si el proyecto que bifurcó termina siendo una de las muchas bibliotecas o módulos dentro de su proyecto?
placas
@hobs imo, el orden de aviso de copyright no es una indicación de la magnitud de la contribución, sino que detalla cronológicamente los orígenes.
@TechnikEmpire El orden cronológico tiene sentido, pero para una lista de contribuyentes en lugar de un aviso de copyright. Pensé que los avisos de copyright podrían estar mejor organizados de acuerdo con las secciones de código a las que se aplican y el valor / cantidad de esas secciones en el paquete. Es útil tener una lista de las personas con las que necesita contactar, en orden de prioridad, si desea cambiar algo sobre la licencia. Entonces, si obtiene permiso de los primeros, pero no del último, tiene una cantidad menor de código para recrear si está decidido a realizar el cambio. Me pregunto qué hace Linus.
Placas