La frase en cuestión
El aviso recomendado de las licencias GNU contiene la siguiente frase.
either version 3 of the License, or (at your option) any later version.
Con esta frase, quien lo recibe puede elegir cumplir las condiciones de la versión indicada o de cualquier versión que la FSF publique más adelante. Eso es 'or later' (SPDX GPL-3.0-or-later). Si se quita la parte 'or later' y solo se indica una versión concreta, pasa a ser 'only' (GPL-3.0-only).
La sección 14 de GPL-3.0 y la sección 9 de GPL-2.0 establecen esta estructura. En particular, la sección 9 de GPL-2.0 dispone que, si un programa no indica ningún número de versión, se puede elegir cualquier versión publicada por la FSF. Por eso, si solo se pone el archivo LICENSE sin aclarar la cláusula de versión, puede interpretarse de forma distinta a la intención.
Por qué incluir 'or later'
La FSF recomienda 'or later'. El motivo es la compatibilidad futura. Cuando cambian las leyes o el entorno técnico y sale una nueva GPL, el código 'or later' puede combinarse de forma natural con la nueva versión. De hecho, el código GPL-2.0-or-later pudo entrar tal cual en proyectos GPL-3.0, mientras que el código GPL-2.0-only no pudo.
La sección 14 de GPL-3.0 va un paso más allá y permite designar un 'representante (proxy)'. Si la persona designada por el titular decide públicamente si se aceptan versiones posteriores, esa decisión surte efecto.
Por qué elegir 'only'
'or later' también supone aceptar de antemano una licencia que aún no está escrita. Si la FSF publica en el futuro una versión con condiciones distintas a tu voluntad, quien reciba tu código podrá elegir esa versión para usarlo.
El kernel de Linux es el caso representativo. El kernel es GPL-2.0-only. Linus Torvalds ha expresado públicamente su oposición a la cláusula de información de instalación de GPL-3.0 (la llamada protección contra la tivoización) y, además, el kernel mezcla el copyright de miles de contribuidores, así que en la práctica no podría cambiar de licencia.
Efecto en la compatibilidad
En resumen, la matriz de compatibilidad de las preguntas frecuentes sobre las licencias GNU es la siguiente.
| Código que incorporas → mi proyecto | GPL-2.0-only | GPL-2.0-or-later | GPL-3.0 |
|---|---|---|---|
| GPL-2.0-only | Sí | Sí (la obra combinada es 2.0-only) | No |
| GPL-2.0-or-later | Sí | Sí | Sí |
| GPL-3.0 | No | Sí (la obra combinada es 3.0) | Sí |
| LGPL-3.0 | No | Sí (la obra combinada es 3.0) | Sí |
La clave es que GPL-2.0-only y GPL-3.0 no pueden aceptarse mutuamente. Cada una exige 'no añadir restricciones adicionales', y las condiciones añadidas de la otra (las cláusulas de patentes e información de instalación de la 3.0, etc.) son restricciones adicionales desde el punto de vista contrario. Puedes consultar más combinaciones en el comprobador de compatibilidad.
Criterios de elección
- Seguir al ecosistema: si el código va a entrar en el kernel de Linux, debe ser GPL-2.0-only (o compatible: GPL-2.0-or-later o una licencia permisiva).
- Importa la compatibilidad futura: si es probable que intercambies código con varios proyectos GPL, or-later es más flexible.
- Importa el control: si no quieres dejarlo en manos de las decisiones futuras de la FSF, usa only o designa quién decide mediante el representante de la sección 14 de GPL-3.0.
Cómo indicarlo
- En
LICENSE(oCOPYING) pon tal cual el texto de la versión correspondiente. El texto en sí no distingue entre only y or-later. - Indica la cláusula de versión con el aviso de cada archivo y el identificador SPDX. En la pestaña Cabecera de archivo del generador, al elegir 'only' u 'or-later' se generan a la vez el aviso oficial de GNU y la línea SPDX.
- Indícalo también en una línea del README (p. ej., 'Licensed under GPL-3.0-or-later').
Este artículo es información general y no constituye asesoramiento jurídico. Para decisiones importantes, consulta con un profesional.
Fuentes
- Preguntas frecuentes sobre las licencias GNU, VersionThreeOrLater · AllCompatibility — https://www.gnu.org/licenses/gpl-faq.html
- GNU, How to Use GNU Licenses for Your Own Software — https://www.gnu.org/licenses/gpl-howto.html
- Reglas de licencia del kernel de Linux — https://www.kernel.org/doc/html/latest/process/license-rules.html
- SPDX License List — https://spdx.org/licenses/