¿Poner licencia en cada archivo de código? [cerrado]

93

Lo encuentro innecesariamente duplicado para tenerlo en cada archivo de código, pero lo veo en la mayoría de los proyectos de código abierto. ¿Debería hacer lo mismo o simplemente incluir una única licencia fuera del código?

Joan Venge
fuente
1
Debe excluir la garantía en cada archivo de origen, de lo contrario, podría quedar atrapado. (Tenga en cuenta que un editor adecuado, como Vim, se puede configurar fácilmente para doblar la placa de caldera de exclusión de garantía automáticamente para que no la vea).
Evgeni Sergeev

Respuestas:

74

¡Uno solo fuera del código, por favor! No sé sobre los demás, pero odio ver lo mismo en la parte superior de cada archivo.

Creo que lo he leído unas cuantas veces, simplemente al pasar página a través de él.

Torre
fuente
10
No estoy de acuerdo con Zifre. Cualquier licencia repetida en la parte superior me irrita.
extraño
49
Es razonable y sensato identificar con qué licencia se publicó cada archivo de origen, porque el archivo puede estar separado del resto del código (reutilización, recomendada, en general, por Open Source), y si el archivo no contiene información sobre la licencia. , es más complicado rastrear hasta la licencia correcta. Pero la licencia completa en cada archivo - no; eso sería grotesco para GPL o LGPL. Como ya se sugirió, para las licencias cortas, es una molestia tener el texto de la licencia real en el archivo, pero es una decisión de criterio. Pero es sensato identificar bajo qué licencia se publica.
Jonathan Leffler
14
Acabo de actualizar los encabezados de los archivos en mi proyecto para que solo tengan tres líneas: derechos de autor, nombre de la licencia y una URL del texto de la licencia. Acortó mis encabezados de 26 líneas (BSD) a 3 líneas. :)
Esko Luontola
3
@Esko: ¿Puedes publicar una muestra? No sé qué ha escrito por los derechos de autor. Gracias.
Joan Venge
6
Esta respuesta está marcada como solución, pero en mi opinión, la pregunta sigue abierta mientras no tengamos evidence for the legal situation. Perhaps a lawyer can add a link to a court decision.
Jonas Stein
25

EULA es el término incorrecto aquí, ya que las personas que miran el código fuente generalmente no son usuarios finales.

Legalmente, tampoco importa; los derechos de autor no necesitan declararse explícitamente.

Básicamente, todo lo que logra es un menor riesgo de que las personas violen accidentalmente los términos de su licencia. Tendrá que decidir qué tan importante es eso para usted.

Yo diría que el mejor compromiso es poner un encabezado muy corto que contenga un enlace (URL absoluta y relativa dentro del proyecto) al texto completo de la licencia en cada archivo de código fuente. De esa manera, cualquiera que se preocupe por la licencia sabrá dónde encontrarla (idealmente, personas que estén dispuestas a pagar tarifas de licencia masivas; ¡ciertamente desea que esas personas puedan comunicarse con usted!)

Michael Borgwardt
fuente
Es posible que los derechos de autor no tengan que ser explícitos, pero ¿qué pasa con el copy-left?
Kekoa
1
@kekoav: el copyleft es menos restrictivo que el copyright. De forma predeterminada, no puede realizar trabajos derivados.
Zifre
3
En una disputa, ese no sería un argumento válido. Si le dicen que hay una licencia y cómo recuperarla, no puede ubicar las barreras técnicas que son su culpa y que le impidieron ver la licencia.
Lasse V. Karlsen
1
"Copyleft" es una jerga para la idea básica de la GPL de "subvertir" las restricciones de derechos de autor desde adentro, es decir, usar sus derechos como titular de derechos de autor para otorgar una licencia a cualquier persona para usar su código libremente, pero obligarlos a publicar SU código, que es basado en el suyo bajo la misma licencia.
Michael Borgwardt
2
Correcto; pero en este contexto, como dijo Zifre, no importa. Si no conoce la licencia bajo la cual se publicó un fragmento de código en particular, debe asumir que no está autorizado a usarlo en absoluto. Entonces, como editor, no tiene que hacer más esfuerzos para que la gente lea la licencia.
Michael Borgwardt
14

No, no tiene que poner la licencia en cada archivo de código fuente.

Si observa más de cerca, la mayoría de las aplicaciones FOSS tampoco lo hacen. Ponen una declaración de derechos de autor en la parte superior de cada archivo y una oración corta que le indica en qué licencia se encuentra el archivo y dónde puede encontrar el texto completo de la licencia. Por lo general, le dirigen al archivo COPIA o LICENCIA que contiene el texto completo de la licencia y / o un sitio web que contiene el texto completo (en caso de que el archivo COPIA ya no esté allí).

Como dijo Michael Borgwardt en sus respuestas, legalmente no tienes que hacer esto. Pero es recomendable para el código fuente que tiene la intención de distribuir, ya que la gente puede ver inmediatamente quién tiene los derechos de autor y cuál es la licencia.

Sander Marechal
fuente
1
Esta. El aviso de derechos de autor debe incluir una referencia al nombre de la licencia (si es estándar) y una descripción de cómo encontrar el archivo de licencia en el árbol de fuentes.
jmucchiello
13

Podría depender de la licencia. La GPL distingue entre preambleylicense . Establece claramente que el preámbulo (molesto) debe ser parte del código :

¿Puedo omitir el preámbulo de la GPL, o las instrucciones sobre cómo utilizarlo en sus propios programas, para ahorrar espacio?

El preámbulo y las instrucciones son partes integrales de GNU GPL y no se pueden omitir. De hecho, la GPL está protegida por derechos de autor y su licencia solo permite la copia literal de toda la GPL. (Puede utilizar los términos legales para crear otra licencia, pero no será la GNU GPL). (1)

Fuente: 1) http://www.gnu.org/licenses/gpl-faq.html#GPLOmitPreamble

Consulte también http://softwarefreedom.org/resources/2012/ManagingCopyrightInformation.html

Un libro electrónico gratuito de ifrOSS explica y comenta la GPL 2 en idioma alemán. Hay otro para GPL 3

Para obtener una respuesta bien fundamentada, debe solicitar un asesoramiento legal que no está disponible en sx. Si no puede encontrar un abogado para su proyecto (de código abierto), consulte la red legal de la FSFE .

Jonas Stein
fuente
7
El preámbulo y las instrucciones son parte de la licencia completa , pero nada dice que tenga que poner la licencia completa en cada archivo. [...] attach the following notices to the program.- los siguientes avisos son solo una pequeña sección de la licencia completa. safest to attach them to the start of each source file- más seguro pero no obligatorio. each file should have at least the "copyright" line and a pointer to where the full notice is found. - El único requisito es la línea de copyright con un puntero al resto. Está bien poner la licencia completa en un archivo separado.
Toxalot
3
Y yo diría que debería ! = Must .
Toxalot
7

Creo que el razonamiento detrás de ponerlo en cada archivo es legal. Si el acuerdo está en cada archivo, no hay posibilidad de que alguien se encuentre con un fragmento de código sin estar expuesto a la licencia.

Puede que no sea bueno, pero todos los grandes lo usan, así que si es solo dolor visual, buscaría una mejor razón para no hacer lo mismo.

Si está usando GPL, esto es un problema mayor, pero si está usando licencias de dominio público como BSD o MIT, no creo que realmente le importe lo que la gente haga con el código de todos modos. Supongo que depende de lo estricta que sea su licencia.

Kekoa
fuente
1
Bueno, en ese caso, solo señale en cada archivo que al continuar con él, acepta la licencia en el archivo licence.txt. Pero no copie / pegue el mismo texto en cada archivo. A veces encuentro archivos con código más corto que la licencia.
Torre
Sí, estoy de acuerdo en que funciona igual de bien de esa manera, especialmente para licencias largas. A pesar de que puede no ser legalmente esencial, o incluso admitido en un tribunal, una referencia a su licencia es al menos buena para informar a las personas sin que tengan que buscar en qué licencia se encuentra el código.
Kekoa
3

IANAL,

Suponiendo que está hablando de licencias, no de un EULA, puede colocar la licencia afuera. Esto casi siempre se hace con licencias realmente largas como la GPL. Sería una tontería poner la licencia GPL completa en cada archivo. Por lo general, solo tendrá algún tipo de aviso que indique dónde puede encontrar la licencia real. Esto es perfectamente legal. Sin embargo, con licencias realmente cortas como BSD / Apache / MIT / lo que sea, es más sencillo incluir una licencia en cada archivo, ya que el aviso que dice dónde encontrar la licencia sería casi tan largo como la licencia en sí.

Zifre
fuente
2

Depende de lo que dicte la licencia. La GPL, por ejemplo, le indica que ponga un aviso breve en cada archivo fuente, incluya la licencia completa en algún lugar de su distribución fuente y ponga su distribución fuente a disposición de cualquiera que obtenga una copia de la distribución binaria.

Si no está de acuerdo con esto y es SU código, puede elegir una licencia más aceptable o crear la suya propia.

Mark Jones
fuente
1

Si su código se va a compilar, por lo que solo está distribuyendo un binario, entonces realmente no importa. Porque cuando crea un binario, los comentarios se eliminan antes de que tenga lugar el proceso de compilación. Solo importa si va a distribuir el código fuente real, ya sea de código abierto o de código cerrado. Esto es típico si va a distribuir una aplicación en un lenguaje de programación que no se compila.

adimitri
fuente
Gracias. Será de código abierto.
Joan Venge
Puede crear una cadena codificada para contener la licencia, por lo que aparecerá en el binario, pero probablemente sea demasiado :).
Liran Orevi
1

No lo necesita para la licencia, un solo archivo externo servirá siempre que esté claro qué archivos cubre.

Sin embargo, para los derechos de autor , debe tener el aviso de derechos de autor en cada fragmento de texto.

James Anderson
fuente
Gracias, ¿entonces los derechos de autor son diferentes?
Joan Venge
INAL pero una licencia es un contrato entre usted y el usuario / cliente. El derecho de autor es una afirmación de propiedad de una pieza de un trabajo escrito. Alguien podría recoger un fragmento de su código y razonablemente afirmar que no tiene derechos de autor porque falta el aviso. No se preocupe, aunque "Copyright Joe Soap (Cleansoft Inc.)" es todo lo que necesita.
James Anderson
10
Estás tan equivocado en eso. Si bien en general es bueno agregar avisos de derechos de autor en todas partes solo para que quede claro, pero eso no significa que sea un juego justo "asumir que no estaba protegido por derechos de autor" porque sabes que TODO está protegido por derechos de autor. Cuando alguien obtiene el código fuente, puede encontrar una declaración de licencia que le permita usarlo, o puede descubrir que es de dominio público por una razón u otra. Si no lo hace, tiene derechos de autor y no se puede copiar. Los derechos de autor son algo automático y es bueno mencionarlo, pero no hacerlo no significa que lo pierda ...
Jasper
1

Lo que hago es poner un comentario de dos líneas en la parte superior del archivo, indicando el nombre de mi empresa, la última fecha de revisión y el nombre de la licencia que tiene el archivo fuente, luego, en la parte inferior del archivo, una versión corta del archivo. licencia.

Por supuesto, la licencia completa (todas ellas en caso de licencias múltiples) siempre se incluye en el archivo de origen y en los directorios de versiones.

GaiusSensei
fuente
3
¿Cómo se automatiza la fecha de la última revisión?
Dustin Getz