
La GNU General Public License (conocida como "GPL") es una de las licencias de software de código abierto más relevantes. Establece que, al usar, modificar o distribuir código, el código fuente debe permanecer abierto y compartirse bajo los mismos términos. La GPL es una de las licencias más influyentes dentro del ecosistema open source.
Una "licencia de código abierto" determina las condiciones bajo las que el autor permite el uso y modificación del código, similar a compartir una receta y aceptar mejoras. La GPL exige que cualquier versión mejorada de esa "receta" también se publique y comparta bajo reglas idénticas. Este principio recíproco garantiza que la comunidad se beneficie de todas las mejoras.
La GPL se basa en el concepto de "copyleft", entendido como "derechos de autor recíprocos": si utilizas o modificas código abierto de terceros, toda distribución de tus cambios debe ser igualmente abierta y debes conservar los avisos de derechos de autor y el texto de la licencia originales.
Los principios principales son:
El kernel de Linux utiliza GPL-2.0 desde hace años (a 2025), siendo uno de los referentes más conocidos de la GPL.
La GPL determina si puedes distribuir software que use código abierto en formato cerrado, o si debes publicar tu código fuente al distribuir tu proyecto. En Web3, las obligaciones de la GPL pueden aplicarse a clientes de nodos, monederos, frontends y smart contracts.
Por ejemplo, si el frontend de tu dApp integra un componente bajo GPL y distribuyes una versión ejecutable, podrías estar obligado a publicar el código fuente del frontend y mantener todos los avisos originales. Esto fomenta la transparencia en la colaboración, pero puede limitar los modelos de negocio propietarios.
En la blockchain, las prácticas open source mejoran la auditabilidad y la seguridad. Muchos equipos publican el código crítico para generar confianza, pero analizan cuidadosamente la compatibilidad de licencias con su estrategia de producto.
Los smart contracts suelen desarrollarse en Solidity, indicando la licencia en la cabecera de los archivos mediante SPDX-License-Identifier (ejemplo: "SPDX-License-Identifier: GPL-3.0-or-later"). Las exigencias de licenciamiento recíproco de la GPL implican varias consideraciones para smart contracts:
Primero, distribución: Compilar y desplegar un contrato en la blockchain se considera distribución pública. Si tu contrato incluye o modifica código GPL, el despliegue puede obligarte a publicar tus modificaciones. Si esto constituye distribución depende del contexto, por lo que debe analizarse en la fase de diseño.
Segundo, vinculación y derivación: Heredar contratos o utilizar librerías suele considerarse obra derivada. Si heredas de un contrato GPL, tu contrato distribuido debe cumplir la misma licencia.
Tercero, práctica habitual: Muchos equipos prefieren licencias permisivas como MIT o Apache para los contratos principales, reduciendo obligaciones posteriores. Si empleas la GPL, proporciona el código fuente completo, los avisos de derechos de autor y las instrucciones de compilación en el repositorio para facilitar la auditoría y la reutilización.
La diferencia principal entre GPL, MIT y Apache reside en el alcance de sus requisitos recíprocos.
En resumen: elige GPL para máxima colaboración y obligación de compartir mejoras; MIT o Apache para mayor flexibilidad entre comercialización abierta y cerrada.
Paso 1: Incluye el archivo LICENSE (texto íntegro de la GPL) en el directorio raíz del repositorio e indica los detalles de la licencia en el README.
Paso 2: Añade un encabezado SPDX-License-Identifier (ejemplo: "SPDX-License-Identifier: GPL-3.0-or-later") en la cabecera de cada archivo fuente para que las herramientas reconozcan la licencia.
Paso 3: Conserva los avisos originales de derechos de autor y licencia; marca tus cambios con fecha, autor y resumen.
Paso 4: Proporciona acceso al código fuente de cualquier ejecutable distribuido, por ejemplo, publicando el código, scripts de compilación y documentación de dependencias para asegurar la reproducibilidad.
Paso 5: Revisa las dependencias externas para verificar la compatibilidad de licencias; si es necesario, opta por LGPL (más adecuada para librerías).
Paso 6: Realiza una revisión de cumplimiento antes de lanzar el proyecto; consulta asesoría legal si hay uso comercial para minimizar riesgos.
Las versiones principales son v2 y v3:
"Or later" vs. "Only": Elegir "GPL-3.0-or-later" permite adoptar futuras versiones con mayor flexibilidad; "only" fija la versión para gestionar la compatibilidad.
Asimismo, LGPL está pensada para librerías (permitiendo vinculación bajo condiciones más permisivas), mientras que AGPL amplía las obligaciones open source al software ofrecido en red; los servicios backend y las interacciones frontend en Web3 deben valorar los desencadenantes de AGPL.
Sí, la GPL permite el uso comercial. No obstante, al distribuir derivados con código GPL, debes publicar tu código y conservar los avisos. Las estrategias empresariales habituales incluyen:
Algunos conceptos erróneos frecuentes son:
Los riesgos incluyen infracciones y disputas de cumplimiento, que pueden afectar financiación, listados o asociaciones. Los proyectos que gestionan fondos o seguridad de contratos deben definir la licencia y auditar el código fuente desde el inicio.
Si buscas fomentar la colaboración comunitaria, asegurar la contribución de mejoras y mantener la auditabilidad, la GPL es una opción robusta. Si necesitas mayor libertad para modelos cerrados o doble licencia, MIT o Apache ofrecen más flexibilidad. Mantén una gestión de licencias consistente y trazable en smart contracts y frontends: incluye archivos LICENSE y encabezados SPDX en los repositorios y estandariza la distribución del código fuente. Considera las diferencias de versión, la compatibilidad de dependencias y si tu caso implica distribución o derivación. Realiza revisiones de cumplimiento y consulta asesoría legal antes de comercializar. Con una estrategia clara, lograrás colaboración fiable y cumplimiento regulatorio en el ecosistema Web3.
Sí, pero debes publicar tu código derivado como open source. El carácter "viral" de la GPL implica que, si desarrollas y vendes un producto basado en código GPL, estás obligado a publicar tu código fuente bajo los mismos términos. Este requisito lo hace incompatible con modelos de negocio propietarios. Si tu empresa depende de mantener el código privado, considera librerías bajo licencia Apache o MIT.
El principal riesgo es la acción legal de los autores originales por infracción de derechos de autor. Aunque la legislación sobre smart contracts evoluciona, muchos tribunales reconocen la exigibilidad de la GPL; incumplirla puede acarrear sanciones. Además, si buscas financiación o adquisición, los inversores pueden ser reticentes por los riesgos asociados a la GPL. Consulta asesoría legal o escoge licencias menos restrictivas para reducir la exposición.
Es una expresión habitual para describir el efecto "viral" de la GPL. Si incluyes código GPL en tu proyecto, aunque sea indirectamente, puede que todo el proyecto deba cumplir la GPL (en ciertos casos). Para quienes desean mantener el código propietario, esta "apertura forzada" se percibe como “contaminación”. No es un defecto, sino un diseño deliberado para proteger los principios del software libre.
Depende de la interacción y de la versión de la GPL. Si solo haces llamadas dinámicas (por ejemplo, a servicios externos), normalmente no debes abrir tu proyecto. Sin embargo, la vinculación estática o modificar y usar código GPL sí exige publicar el código bajo GPL. Consulta a un abogado especializado en open source para aclarar qué es “obra derivada” y evitar ambigüedades legales.
Debes cumplir ambas licencias, lo que puede ser complejo. La GPL exige publicar todo el derivado como open source; MIT permite uso cerrado, pero estos términos son incompatibles. En la práctica, tu proyecto debe ajustarse a la licencia "más estricta" (GPL) para ser compatible. Evita mezclar licencias o separa los módulos por tipo para simplificar el cumplimiento.


