Compatibilidad es 'poder distribuirlos juntos'
Que dos licencias sean compatibles significa que, al combinar en un solo programa código bajo cada una de ellas y distribuirlo, se pueden cumplir a la vez las condiciones de ambas. Si una prohíbe las condiciones de la otra, no son compatibles. Por ejemplo, la GPL exige 'no añadir restricciones adicionales', así que el código bajo una licencia con condiciones adicionales que la GPL no permite no puede entrar en un programa GPL.
La compatibilidad tiene dirección
El código permisivo puede entrar en proyectos copyleft, pero no al revés.
- Código MIT → proyecto GPL: sí. Si conservas el aviso MIT, puedes distribuir toda la obra combinada bajo la GPL.
- Código GPL → proyecto MIT: toda la obra combinada debe seguir las condiciones de la GPL, así que no puede seguir siendo un 'proyecto MIT'.
Por eso las tablas de compatibilidad siempre deben leerse como 'qué código → en qué proyecto'.
Combinaciones típicas
Apache-2.0 y GPL
La FSF considera que Apache-2.0 es compatible con GPL-3.0, pero no con GPL-2.0, porque sus cláusulas de terminación de patentes e indemnización son condiciones adicionales que GPL-2.0 no contempla. GPL-3.0 se diseñó para resolver este problema. Así, un proyecto GPL-2.0-or-later puede usar código Apache-2.0 si distribuye la obra combinada bajo GPL-3.0.
MPL-2.0 y las licencias GNU
La sección 1.12 de MPL-2.0 define GPL-2.0, LGPL-2.1, AGPL-3.0 y sus versiones posteriores como 'Secondary License', y la sección 3.3 permite distribuir bajo la licencia GNU un Larger Work que combine código MPL con código bajo esas licencias. La excepción es cuando el autor original añadió el Exhibit B ('Incompatible With Secondary Licenses').
Bibliotecas LGPL y aplicaciones cerradas
Una biblioteca LGPL puede usarse en aplicaciones cerradas. A cambio, el usuario debe poder sustituirla por una versión modificada (lo más fácil es el enlace dinámico) y hay que ofrecer el código fuente de la parte de la biblioteca y el aviso de licencia. Si copias y mezclas código LGPL en el código de la aplicación, la situación cambia y la obra combinada debe seguir las condiciones de la LGPL/GPL.
GPL-3.0 y AGPL-3.0
Ambas permiten expresamente combinarse mediante su respectiva sección 13. En la obra combinada, la parte GPL sigue las condiciones de la GPL y la parte AGPL sigue las de la AGPL, incluida la de ofrecer el código fuente por red.
EPL-2.0 y GPL
En principio EPL-2.0 no es compatible con la GPL, pero si el autor original designa GPL u otras como Secondary License mediante el Exhibit A, la combinación es posible.
| Código que incorporas | Aplicación cerrada | Proyecto MIT | GPL-2.0-only | GPL-3.0 |
|---|---|---|---|---|
| MIT·BSD·ISC | Sí (aviso) | Sí | Sí | Sí |
| Apache-2.0 | Sí (aviso·NOTICE) | Sí | No | Sí |
| MPL-2.0 | Con condiciones (publicar archivos) | Con condiciones | Con condiciones (Secondary) | Con condiciones (Secondary) |
| LGPL-3.0 | Con condiciones (enlace) | Con condiciones (enlace) | No | Sí |
| GPL-3.0 | No | No | No | Sí |
Hasta dónde llega la 'combinación'
Los problemas de compatibilidad surgen cuando el código se combina en un solo programa. La FSF considera un único programa lo que se enlaza en el mismo ejecutable o comparte estructuras de datos internas complejas, mientras que la comunicación habitual entre programas independientes, como tuberías, sockets o argumentos de línea de comandos, suele considerarla un 'agregado (aggregate)' de programas distintos. No obstante, este límite no está fijado por jurisprudencia y las interpretaciones varían. Incluir varios programas en una misma distribución no es, por sí solo, una combinación.
Pasos en la práctica
- Obtén la lista de dependencias (con la función de informes de licencias del gestor de paquetes o herramientas SBOM).
- Anota la licencia de cada dependencia con su identificador SPDX.
- Comprueba en primera instancia las combinaciones con la licencia de tu proyecto en el comprobador de compatibilidad.
- En las combinaciones 'con condiciones', verifica las condiciones (aviso, forma de enlace, existencia de Secondary License) en el texto original.
- Si hay combinaciones imposibles, cambia la dependencia, separa el programa o ajusta tu licencia.
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 (matriz de compatibilidad, MereAggregation) — https://www.gnu.org/licenses/gpl-faq.html
- FSF, Various Licenses and Comments about Them — https://www.gnu.org/licenses/license-list.html
- Apache Software Foundation, GPL Compatibility — https://www.apache.org/licenses/GPL-compatibility.html
- Mozilla, MPL 2.0 FAQ — https://www.mozilla.org/en-US/MPL/2.0/FAQ/
- Eclipse Foundation, EPL 2.0 FAQ — https://www.eclipse.org/legal/epl-2.0/faq/