¿Realmente hace falta la cabecera de la licencia en cada fichero de código fuente?

Antes que nada, IANAL. Prosigamos.

Las instrucciones para usar una licencia GPL te dicen que debes incluir un comentario gigante como cabecera de cada fichero de tu código fuente, tal que así:

This file is part of Foobar.

<one line to give the program’s name and a brief idea of what it does.>

Copyright (C) <year> <name of author>

Foobar 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.

Foobar 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 Foobar. If not, see <http://www.gnu.org/licenses/&gt;.

Lo cual es horrible, porque aparte de molestar un montón para leer un fichero (hay algunos cuyo código fuente es inferior a la propia cabecera), encima tienes que incluir el nombre del programa, con lo que si le cambias el nombre más adelante, o si cambias la licencia, tienes que hacer un trabajo de chinos para reemplazar todo.

También, si intentas buscar una palabra en todo tu proyecto, y casualmente su nombre es una palabra de la licencia (copy, por ejemplo), te aparecerán coincidencias en cada uno de tus ficheros, y será difícil encontrarlo.

Es la antítesis de los principios DRY y KISS.

Como ejemplo, Odoo hace tiempo que unificó el copyright y la licencia en un solo fichero (antes de decidir cambiar a la licencia LGPLv3). El commit explica las bases legales para hacerlo, e imagino que deben tener buenos abogados; pero sigue quedando la posibilidad de que un fichero de tu código fuente sea leído desde fuera del árbol de código, con lo que el lector no pueda o quiera ver la licencia. ¿Qué cabecera podríamos colocar entonces?

Analicemos el texto de la licencia

This file is part of Foobar.

<one line to give the program’s name and a brief idea of what it does.>

¿A quién le importa a qué programa pertenezca este fichero fuente? Al poner una cabecera a un fichero, estoy poniéndole la licencia a ese fichero, no al proyecto entero. Para eso ya están los ficheros README y LICENSE/COPYING.

Copyright (C) <year> <name of author>

OK, poner el copyright y el año es necesario. Pero si nuestro fichero está codificado en UTF-8, podemos abreviarlo con el caracter internacionalmente reconocido como copyright así: © <YEAR(S)> <AUTHOR(S)>

Foobar 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.

O lo que es lo mismo: License: GPL-3.0 or later.

Foobar 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.

Si en la licencia da más detalles, ¿por qué tengo que incluirlos aquí?

You should have received a copy of the GNU General Public License along with Foobar. If not, see <http://www.gnu.org/licenses/&gt;.

O sea que aunque no hayas recibido una copia de la licencia, eso no le quita validez porque se puede consultar online. Entonces bastaría con poner un enlace a la licencia.

Reduciendo la cabecera

Visto lo que hemos visto arriba, nuestra nueva cabecera podría quedar así, tal como hace tiempo se decidió hacer en la OCA:

© <YEAR(S)> <AUTHOR(S)>
License GPL-3.0 or later (http://www.gnu.org/licenses/gpl-3.0).

Sigue siendo molesto, pero al menos ya no tanto…

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s