Usar código bajo la licencia Apache 2.0 en mi programa usando la licencia MIT

7

Estoy usando el código fuente de un ejemplo de código que está licenciado bajo la Licencia Apache 2.0 en mi programa. Ahora me gustaría publicar ese programa y código fuente en GitHub usando la Licencia MIT. He leído lo siguiente en la licencia:

Debe hacer que los archivos modificados lleven avisos destacados que indiquen que cambió los archivos;

Pero no cambié ninguno de los archivos, simplemente copié las partes relevantes del código en mis archivos fuente.

Ahora aquí están mis preguntas:

Sé que tengo que agregar una copia de la licencia Apache 2.0 a mi proyecto, pero ¿tengo que poner algo en mis archivos fuente para publicar correctamente mi programa / código fuente?

Como se trata de un programa de línea de comandos, ¿debo agregar un interruptor de licencia y mostrar la licencia o debo agregar la salida "USAGE"?

¿Tengo que poner la licencia MIT en cada uno de mis archivos de origen o es suficiente para tener una copia en el proyecto?

¡Gracias por adelantado!

MemphiZ
fuente
¿Puede poner las partes que tomó del proyecto con licencia de Apache en su propio archivo? Luego puede incluir los términos de licencia de Apache allí. No tiene que agregar un aviso a la parte "Uso" de su programa.
Brandin
Desafortunadamente no puedo porque es básicamente una cuestión de cliente / servidor y rompería el código si tuviera que hacerlo.
MemphiZ
Supongo que podría poner en la parte superior del archivo una explicación de qué partes se encuentran bajo qué licencias. Pero eso probablemente será confuso. Personalmente, me esforzaría más por separar ese código de otra licencia a otro archivo. Esto probablemente se reduce a una cuestión técnica de cómo implementar eso en el lenguaje de programación que está utilizando. Por ejemplo, si es Python, puede ponerlo fácilmente en su propio paquete y luego llamarlo desde su propio código.
Brandin
"Pero no cambié ninguno de los archivos, simplemente copié las partes relevantes del código en mis archivos fuente". Entonces lo cambiaste; eliminaste las partes que no necesitabas. Por lo tanto, debe dejar en claro que esas piezas de código son una versión modificada del código original. También debe dejar en claro que su biblioteca está cubierta por las licencias MIT y Apache.
David Arno
¿Hay alguna razón por la que no desea utilizar la licencia de Apache para su trabajo? Apache y MIT son funcionalmente casi iguales. (La licencia de Apache tiene algunos derechos de patente que la licencia del MIT falta). Tener una sola licencia hará las cosas mucho más fáciles para usted y para cualquier usuario potencial.
Craig

Respuestas:

3

Como partes de las fuentes tienen licencia bajo una licencia (Apache 2.0) y partes tienen una licencia diferente (MIT), es importante que cada archivo lleve un aviso que indique qué licencia se aplica al contenido de ese archivo.

Se recomienda encarecidamente tener solo una licencia para cada archivo fuente, por lo que debe tener el código que copió de la biblioteca de terceros en un archivo fuente separado (o en varios archivos fuente separados). Estos archivos deben tener un aviso de copyright que haga referencia a la licencia de Apache y declarar que copió el código de la biblioteca de terceros.

Para su propio código que desea publicar bajo la licencia MIT, se recomienda colocar la licencia MIT en su totalidad en un comentario en la parte superior de sus archivos.
La licencia MIT no es tan larga y evitará toda confusión sobre la licencia bajo la cual se encuentra el código, incluso si el archivo se separa del resto del proyecto.


Si no es factible separar el código bajo las diferentes licencias en archivos separados, entonces puede proceder de esta manera (suponiendo que una pequeña porción de un archivo esté bajo la licencia de Apache):

  • Ponga su archivo fuente bajo la licencia MIT
  • Directamente debajo de las declaraciones de derechos de autor y licencia, agregue un comentario de que partes del archivo están bajo una licencia diferente.
  • Inmediatamente encima del código que está bajo la licencia de Apache, agregue un bloque de comentarios que proporcione los derechos de autor y los detalles de la licencia para el código que lo sigue.
    Para evitar confundir completamente a los demás, esto debe hacerse con la granularidad de una función.
Bart van Ingen Schenau
fuente
¿Qué sucede si no puedo separar el código de la licencia de Apache del resto porque lo rompería por completo o lo haría ilegible?
MemphiZ
1
@MemphiZ ¿Qué lenguaje de programación es? Tal vez deberías publicar una pregunta en SO. "Tengo este código aquí, ¿cómo puedo ponerlo en su propio archivo?"
Brandin
@MemphiZ: se agregó lo que puede hacer si no puede separar las funciones en diferentes archivos.
Bart van Ingen Schenau