¿Tiene que incluir un aviso de licencia con cada archivo fuente?

97

He estado buscando varias licencias que puedo usar para un proyecto de código abierto mío, pero todos los proyectos que he visto, con todo tipo de licencias, parecen tener un gigante, desagradable (en mi opinión) aviso en cada archivo de origen que indica que el archivo se encuentra bajo una licencia determinada. No creo que haya encontrado un proyecto de una sola fuente que no sea de dominio público y que no tenga un aviso como ese.

Esto simplemente parece una pérdida de tiempo y espacio de archivos. Planeo poner las etiquetas @license y @author en mis proyectos, pero no veo por qué necesito enumerar un aviso tan gigante en cada archivo individual si no quiero hacer mi código de dominio público.

¿Hay alguna razón por la que me gustaría incluir un aviso de este tipo en mis proyectos o simplemente incluir un aviso en la etiqueta README y una etiqueta @license sería lo suficientemente bueno? ¿Afecta esto a la regla "claramente establecida" de la mayoría de las licencias, o es una exageración para que las personas no discutan?

    
pregunta RétroX 18.12.2011 - 17:19

7 respuestas

39

En mi opinión, la GPLv3 sugiere enérgicamente (o incluso tal vez requiera, al menos, cómo entiendo el texto Cómo aplicar estos términos a sus nuevos programas , después de su sección 17), un aviso de copyright en cada archivo fuente. Dice

  

Para hacerlo, adjunte los siguientes avisos al programa. Es lo mas seguro   adjúntelos al inicio de cada archivo de origen para indicar de manera más efectiva   la exclusión de la garantía; y cada archivo debe tener al menos la   Una línea de "copyright" y un puntero donde se encuentra el aviso completo.

<one line to give the program's name and a brief idea of what it does.>
Copyright (C) <year>  <name of author>

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program.  If not, see <http://www.gnu.org/licenses/>.

Y los proyectos GNU que son propiedad de FSF, como GCC, tienen un aviso en cada archivo.

También conozco un programa (el sistema CAIA de J.Pitrat) que se ha rechazado en un sitio web de la comunidad de software libre porque no tenía ningún aviso en cada archivo.

No soy abogado , pero creo que dicha notificación es prácticamente obligatoria en todos los archivos fuente de un programa GPLv3 .

(si usa otra licencia, especialmente una que no sea de FSF, lea detenidamente cómo aplicarla; YMMV; sin embargo, AFAIK escribir un aviso en cada archivo no resultará perjudicial).

    
respondido por el Basile Starynkevitch 18.12.2011 - 17:51
31

He visto muchos proyectos que solo mencionan la licencia en README o en un archivo de LICENCIA o COPIA.

Su software está cubierto automáticamente por derechos de autor, según lo acordado en la ley internacional. (A menos que esté trabajando para el gobierno de EE. UU. O alguna otra organización para la que no se apliquen los derechos de autor).

Si alguien usa su software, debe asegurarse de cumplir con el acuerdo de licencia o de seguir las restricciones de uso justo en lo que puede hacer.

Suponga que esa persona desea usar uno de los archivos en su distribución de código, lo que por supuesto requiere una copia y, por lo tanto, se aplica la ley de derechos de autor. Por defecto, NO tienen el derecho de usar su software bajo la ley de derechos de autor. Es solo cuando saben y siguen las restricciones de la licencia que se les permite usarlo.

Entonces, si usan un archivo sin una licencia de software, están infringiendo la ley de derechos de autor. Dado que todas las licencias dicen algo como "El aviso de copyright anterior y este aviso de permiso se incluirán en todas las copias o partes sustanciales del Software", están obligados a colocar esa licencia en algún lugar.

Puede estar en el propio archivo, o cuando he usado el código como biblioteca, coloco las partes relevantes en su propio directorio y agregué un "README" o "LICENCIA" en ese subdirectorio.

En resumen, no es necesario colocar la licencia en cada archivo. Creo que es una exageración. No hay protección legal adicional al hacerlo. Ayuda un poco al usuario intermedio, pero no mucho.

Creo que la tradición de muchos metadatos basados en comentarios (licencia, fecha de creación de cada función, registro de cambios, etc.) son tradiciones muy antiguas que existen porque son fáciles de hacer y que son más un talismán que útiles.

Por ejemplo, la plantilla predeterminada de Eclipse agrega lo que yo considero metadatos inútiles antes de cada función, que creo que el control de versiones captura mucho mejor. Pero esa práctica es común en muchas tiendas.

    
respondido por el Andrew Dalke 18.12.2011 - 17:50
10

El problema es que es muy fácil desagrupar un solo archivo de código fuente de su proyecto más grande, como alguien que solo está revisando, enviando un correo electrónico, descargando un archivo, sin el resto que contiene los derechos de autor completos. Y luego ese archivo puede pasar hasta el infinito publicitario en el tiempo, a N-partes que no tengan idea de los orígenes de los archivos.

El aviso de derechos de autor en la parte superior le recuerda a cualquier persona que se encuentre con ese archivo aislado que, de hecho, tiene derechos de autor, no de dominio público, y por lo tanto alguna licencia puede o no estar involucrada en su distribución o uso. Versus dejando que el buscador haga sus propias suposiciones aleatorias.

    
respondido por el hotpaw2 19.12.2011 - 04:15
8

No hay una reunión secreta de superpotencias en un bunker subterráneo que diga lo que debes poner en cada archivo fuente.

Le deja claro al usuario que este archivo está bajo cualquier licencia y, de hecho, la mayoría del software GPL contiene un breve preámbulo que dice leer license.txt. Recuerde que los proyectos se dividen y los archivos se reutilizan, por lo que no es una buena idea colocar el mensaje en un solo archivo.

Si en el improbable caso de que alguna vez fuera a la corte, podría tener más reclamos si hubiera marcado claramente cada archivo como su trabajo y en qué licencia se encontraba: entonces nadie podría decir que pensaron que este archivo no estaba cubierto. / p>     

respondido por el Martin Beckett 18.12.2011 - 17:27
5

Hay una diferencia entre licencia y preámbulo .

En algunos de mis proyectos estoy usando la Licencia Pública General de GNU, Versión 3.0 . La GNU GPL hace necesario tener un preámbulo en cada archivo de código fuente:

  

El preámbulo y las instrucciones son partes integrales de la GPL de GNU y no se pueden omitir.

Fuente: enlace

Entonces esto es lo que hago:

1. Añadir License.txt

Para seguir las reglas, coloco un LICENSE.txt en la raíz del repositorio de mi proyecto. GitHub también sugiere esto (consulte " ¿Dónde vive la licencia ").

2. Añadir preámbulo utilizando plegado automático

A continuación, incluyo el preámbulo de la GPL sobre cada archivo de código fuente PERO para que sea difícil de molestar y lo escondo en el IDE. La mayoría de los IDE tienen una función para plegar automáticamente los bloques de código. NetBeans admite Custom Plegado de Código y WebStorm admite también comentarios .

Así es como se ve:

//<editor-fold desc="Preamble">
/*
 * Company Name
 * Copyright (C) 2016 Company Name
 * 
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * ...
 */
//</editor-fold>

console.log('Here is my licensed JavaScript code.');

Creo que este es un muy buen compromiso entre comodidad y seguridad legal.

Si tiene muchos proyectos en los que necesita agregar una licencia, enlace puede ser de ayuda.

Tenga en cuenta: Mi consejo se refiere a GPLv3. Es posible que otros tipos de licencia no requieran un preámbulo.

    
respondido por el Benny Neugebauer 12.07.2016 - 18:52
3

Casi publiqué una pregunta muy similar. Menos sobre las molestias y más sobre los tecnicismos. TL; DR: Creo que la respuesta es una cuestión de prioridades del autor. Tal vez la intención sea más precisa que las prioridades ...

Creo que está bien hacer referencia a una licencia en su fuente, dependiendo de su definición de "bien". Estamos de acuerdo en que el término "no acompañado" indica un archivo fuente que forma parte de un proyecto que se ha separado sin piedad de su base de código cariñoso. Dicho archivo contiene una línea como esta:

# This file is covered by the LICENSING file in the root of this project.

O una línea mucho más genial como esta:

* @license OMGBBQ <http://goodlics.com/bbq>

"¡Pero espera!" exclama: "¡acabas de decir que el archivo se separó de su proyecto! ¡Y goodlics.com se redirige a un dominio ilegal! ¡Deja de estar en trixy!" Tienes razón, dije eso, pero podría estar bien y dejar de gritarme. Aquí está mi razonamiento de no abogado:

  • Casi todos los países han aceptado el [sentir el] Convenio de Berna, que AFAIK significa que si creas algo, tienes derechos de autor sobre él, y punto. No necesitas una (c) línea o cualquier otra mierda así, pero eso (más un VCS de terceros como GitHub) hace que sea más fácil demostrar que lo creaste y cuando lo creaste.
  • Por lo tanto, si publica algún código 1337 jugoso en línea que creó, tiene derechos de autor sobre él. A nadie se le permite (legalmente) copiarlo. Es raro y sorprendente, lo sé, pero he escuchado que las personas a veces infringen la ley. Eso sigue siendo posible.
  • El increíble archivo nyancat-bcminer-algo.qbasic que escribiste y publicaste en LiveJournal es, lo creas o no, no del dominio público. No, a menos que usted diga su dominio público. Por defecto es solo tuyo. Es ... Precioso . (Al menos por más de 25-50 años, a menos que seas Disney).
  • Las personas convencionalmente comunican esta intención (haciendo que algunos o todos los derechos no sean solo tuyos y tuyos) a través de licencias, pero debes anunciar esa intención; es opt-in opt-out (¿HAHA GET IT? optando por excluirse de sus derechos de autor? AWESOME). ¡Saca tus boletos, ya casi llegamos!
  • Si está bien que los archivos no acompañados mencionados anteriormente sean de dominio privado, es decir, que no se puedan copiar legalmente, entonces usar una referencia potencialmente dañada es perfectamente correcto. Sin embargo, si no está bien , creo que debe incluir el texto de la licencia en cada archivo fuente. De esa manera, los archivos no acompañados todavía tienen la licencia de la forma en que priori- pretendía . Sí, eso es mejor.

Este razonamiento hace dos suposiciones épicas y probablemente no válidas:

  • Una referencia de licencia "rota" recae en el comportamiento predeterminado (con derechos de autor), lo que puede no ser una suposición válida.
  • El sitio en el que publicaste no tiene algún tipo de política de publicación (como StackExchange) que hace que todo sea de dominio público.

Gracias por montar las vías aéreas mono-cerebro.

Descargo de responsabilidad: esto me parece lógico porque estoy 90% seguro de que estoy 100% equivocado.

    
respondido por el Josh 08.07.2016 - 03:50
1

Hay otra forma práctica que aún no se menciona aquí.

Etiqueta SPDX-License-Identifier . enlace

Usándolo, su "placa de referencia legal" en cada encabezado de archivo fuente se reduce a solo dos líneas:

/* SPDX-License-Identifier: (GPLv3-or-later AND LGPL-2.0-only) WITH bison-exception */
/* Copyright © 1234 Project Author */
    
respondido por el ulidtko 23.11.2018 - 10:13

Lea otras preguntas en las etiquetas