¿Por qué tengo que mantener mi licencia de software de código abierto en la raíz?

10

Casi todas las licencias de software de código abierto requieren (o al menos los abogados generalmente sugieren que requieren) que los usuarios incluyan la licencia completa en la raíz del proyecto que están protegiendo.

Un abogado con el que hablé sugiere que este es un legado de la era del CD, cuando era necesario que se incluyera una licencia completa en un caso de joyas.

Pero hoy, estamos viviendo en la era de las nubes. ¿Por qué no puedo, por ejemplo, simplemente alojar la licencia completa en mi sitio web e incluir el título + URL de esa licencia en el encabezado de mis archivos fuente?

Bonificación: si generalmente se acuerda que las licencias establecidas deben mantenerse intactas en la raíz, ¿por qué el OSI de FSF no ha aprobado una licencia a la que pueda referirse por URL y qué impide que alguien cree esa licencia?

samthebrand
fuente
44
Un problema que me viene a la mente es que las URL pueden cambiar o suspenderse.
Aaron Kurtzhals
66
'La Internet no es omnipresente' sería la razón más obvia (incluso si alguien tiene Internet cuando descarga su software, es posible que no esté disponible cuando quiera extenderlo / modificarlo).
TZHX
99
¿Se pregunta por qué TODA LA LICENCIA DEBE INCLUIRSE en la raíz, o por qué toda la licencia debe incluirse EN LA RAÍZ?
DougM
Solo señalando que parece que estamos hablando de una falsa dicotomía aquí; Pregunta por qué la licencia debe estar en la raíz y por qué no puede estar en línea en una URL. Hay una tercera opción que no se menciona a nadie; la licencia se incluye con el software pero en un directorio "docs" o algo así y el comentario en el encabezado de los archivos de código refleja eso. Estoy de acuerdo con las buenas razones por las cuales la Licencia debe incluirse con el software, pero eso no se detiene en un directorio de documentos.
James
44
La razón por la que casi siempre está en la raíz es que es fácil de encontrar. Cuando descargo su proyecto, busco en la raíz, y una de las primeras cosas que veo es la licencia.
Tan

Respuestas:

24

De las preguntas frecuentes de GPL (pero el consejo es aplicable a todas las licencias):

¿Por qué la GPL requiere incluir una copia de la GPL con cada copia del programa?

Incluir una copia de la licencia con el trabajo es vital para que todos los que obtengan una copia del programa puedan saber cuáles son sus derechos.

Puede ser tentador incluir una URL que haga referencia a la licencia, en lugar de la licencia en sí. Pero no puede estar seguro de que la URL seguirá siendo válida dentro de cinco o diez años. Dentro de veinte años, es posible que las URL como las conocemos hoy ya no existan.

La única manera de asegurarse de que las personas que tienen copias del programa continúen viendo la licencia, a pesar de todos los cambios que sucederán en la red, es incluir una copia de la licencia en el programa.

(énfasis mío)

En el momento en que el sitio que aloja su licencia deja de funcionar o cambia sus rutas de URL, las personas que tienen copias de su software ya no pueden verificar qué derechos pueden ejercer de forma segura. Suponga que incluso de alguna manera podría garantizar que esa URL exacta estará siempre en línea: la capacidad de los usuarios de verificar que su uso de su software sea legal aún depende de la capacidad de conectarse a esa URL en particular. Si bien este requisito puede no ser oneroso en su ciudad / país / planeta en particular, puede ser oneroso en otros lugares. No debe imponer este requisito, especialmente cuando la solución (incluido el texto completo de la licencia) es trivial.

Puede responder a esta queja diciendo: "¿Y qué? Si la URL se cae o no es accesible, un descriptor inequívoco como 'GNU GPL v3' debería ser suficiente. Las copias de texto completo de la GPL son abundantes; los usuarios pueden buscar la licencia ellos mismos ". Se me ocurren algunos problemas de inmediato:

  1. Esto no se generaliza a los identificadores de licencia que son menos claros (me viene a la mente la frase "licencia BSD").

  2. Esto no se generaliza bien a las licencias que son menos comunes o que se han personalizado (viene a la mente "GPL con excepciones de enlace": ¿qué excepciones de enlace?). ¿Qué tan común debe ser una licencia antes de que sea razonable esperar que un usuario la encuentre de manera confiable por su nombre?

  3. Esto aún requiere que los usuarios tengan una conexión a Internet, lo cual puede no ser el caso, incluso si tenían una conexión en el momento en que obtuvieron el software. (Y es posible que no hayan tenido acceso a Internet cuando obtuvieron el software: "la edad de los CD" aún no ha terminado en muchas partes del mundo. Como un caso adicional, considere las poblaciones nacionales que tienen acceso generalizado a Internet pero censuran grandes partes de él). .) Una consecuencia del software libremente redistribuible es que un destinatario no puede recibir una copia de su software directamente de usted o a través de un canal de distribución que originalmente anticipó.

El comentario de MichaelT a continuación señala un argumento final contra los enlaces de licencia: podría permitirle cambiar la licencia de forma dinámica y retroactiva. Esto podría hacerse intencionalmente, pero también podría hacerse por accidente, si cambia la licencia entre las versiones del software, pero utiliza el mismo enlace de licencia para ambas versiones, lo que impide la existencia de su licencia anterior. Tal cambio agregaría dificultad para las personas que necesitan demostrar que obtuvieron su copia anterior con una licencia diferente a la versión actual.

Entonces, ¿por qué tengo que mantener la licencia en la raíz del proyecto?

No soy abogado, pero nunca he visto ningún argumento convincente de que usted no necesita tener licencias en la raíz del proyecto. Incluso la GPL, que especifica que la licencia debe acompañar a cada copia del trabajo, no menciona cómo debe acompañar el trabajo. (Esto puede deberse a que la GPL podría aplicarse en contextos que no son de software, donde la noción de "directorio raíz" no tiene sentido).

Mantener la licencia en el directorio raíz es probablemente una buena idea porque maximiza la probabilidad de que el usuario la vea y, por lo tanto, minimiza tanto la frustración del usuario como la posibilidad de quejas en su contra por intentar ocultar la licencia en algún directorio oscuro. Si tiene muchas licencias, podría tener más sentido colocarlas todas en su propia carpeta e incluir un archivo README obvio que contenga rutas de archivos para encontrar la licencia para cada componente.

Colocar su licencia en la raíz del directorio es una práctica útil también porque puede desambiguar las licencias de los módulos que tienen una licencia diferente a la del trabajo en su conjunto. Supongamos que mi proyecto FooProj usa el módulo independiente BarMod. FooProj podría tener licencia GPL, mientras que el módulo independiente podría tener licencia MIT. Cuando abro por primera vez FooProj, veo una copia de la GPL en la raíz y entiendo que el trabajo en su conjunto tiene licencia GPL. Cuando desciendo a la carpeta de BarMod, veo un nuevo archivo de licencia allí y entiendo que el contenido de esta carpeta tiene licencia MIT. Por supuesto, esto es solo una ayuda útil; siempre debe indicar la licencia de sus módulos explícitamente en un archivo README, NOTICE o similar.

En resumen, usar la raíz del archivo es una cuestión de conveniencia y claridad. No he visto ningún texto de licencia de código abierto legalmente vinculante que lo requiera, ni sé de ninguna razón por la cual sería legalmente requerido. Su licencia debe ser razonablemente fácil de descubrir para el destinatario; incluir la licencia en la raíz del proyecto es suficiente, pero no necesario, para satisfacer este criterio.

apsillers
fuente
3
Considere también la posibilidad de que se vincule a un sitio remoto para site.com/foo/license.txt que obtuvo bajo una licencia BSD, pero desde entonces se ha vuelto a licenciar bajo GPL v3 y eso es lo que site.com/foo/license. txt ahora contiene. Pero la versión que descargaste tiene diferentes derechos.
Marqué esta respuesta como correcta ya que parece exponer la sabiduría convencional y legal sobre las licencias de OSS. Dicho esto , este pensamiento me parece un poco paranoico para este mundo respaldado y controlado por versiones en el que vivimos. No estoy seguro de que el riesgo de alteración del contenido de la URL canónica sea mayor que el riesgo de que alguien elimine accidentalmente una parte de una licencia contenida dentro de la raíz. E incluso si el riesgo es mayor, soy escéptico de que sea tan bueno obligar a los desarrolladores a incluir licencias completas en su software, en lugar de, por ejemplo, citar licencias alojadas externamente en comentarios de código.
samthebrand
Para su información, tal vez una señal de lo que vendrá para la licencia de OSS: Creative Commons 4.0 permite a los licenciatarios enlazar a una página separada que incluye información de atribución.
samthebrand
6

Pero hoy, estamos viviendo en la era de las nubes. ¿Por qué no puedo, por ejemplo, simplemente alojar la licencia completa en mi sitio web e incluir el título + URL de esa licencia en el encabezado de mis archivos fuente?

Existen licencias que lo permiten. Apache 2.0, por ejemplo. Apache 2.0 solo requiere que cada archivo fuente contenga un pequeño encabezado que apunte a la URL canónica de la Licencia Apache 2.0. No es necesario reproducir la licencia completa en el árbol de origen.

Desde la propia licencia de Apache 2.0:

APPENDIX: How to apply the Apache License to your work

To apply the Apache License to your work, attach the following boilerplate
notice, with the fields enclosed by brackets "[]" replaced with your own 
identifying information. (Don't include the brackets!) The text should be  
enclosed in the appropriate comment syntax for the file format. We also 
recommend that a file or class name and description of purpose be included 
on the same "printed page" as the copyright notice for easier identification 
within third-party archives.

    Copyright [yyyy] [name of copyright owner]

    Licensed under the Apache License, Version 2.0 (the "License");
    you may not use this file except in compliance with the License.
    You may obtain a copy of the License at

        http://www.apache.org/licenses/LICENSE-2.0

    Unless required by applicable law or agreed to in writing, software
    distributed under the License is distributed on an "AS IS" BASIS,
    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    See the License for the specific language governing permissions and
    limitations under the License.
Chadversary
fuente
Creo que el apéndice está incompleto o al menos funciona con el supuesto de que ya está incluyendo una copia de la licencia. Del texto 2.0 en sí , al distribuir el trabajo con licencia Apache:4.(a) You must give any other recipients of the Work or Derivative Works a copy of this License;
apsillers
3

No hay requisito de que deba estar en la raíz del proyecto. Es simplemente el lugar más común y, por lo tanto, el primer lugar donde las personas buscarán para encontrar la licencia. Para el caso, incluso si no fuera común, es probable que sea el primer lugar donde la gente busque. Dado que la licencia existe para informar, ocultar la información no tiene mucho sentido.

Si lo oculta detrás de una URL, no hay garantía absoluta de que esa URL siempre esté disponible. Si es un archivo en la raíz del proyecto, por definición, siempre estará disponible.

En resumen, este es el lugar más efectivo y fácil de usar para ponerlo.

Bryan Oakley
fuente
La raíz del proyecto es el primer lugar donde se vería: es la parte superior del árbol, la raíz de la jerarquía de carpetas. Toda la documentación de nivel superior debe ir allí: léame, licencia, etc. Esos archivos pueden dirigir al lector a profundizar en otra parte del proyecto, pero la raíz es el primer lugar donde busco algo.