Código de GitHub en un producto comercial: licencias y qué comprobar
MarkdownLicencias permisivas MIT, Apache y BSD; licencias copyleft GPL/AGPL; la ausencia de un archivo LICENSE; y la comprobación del origen del código añadido por IA.
Leer el artículo completo
Estás desarrollando un producto y encuentras algo listo para usar en GitHub: una biblioteca, una plantilla, un proyecto entero que hace exactamente lo que necesitas. Claude te sugiere incorporarlo a tu proyecto. Entonces te paras a pensar: el código parece estar disponible públicamente, pero ¿puedes usarlo de verdad, y mucho menos vender un producto que lo incluya? ¿Podría el autor reclamarte algo más adelante?
Lo explicaré en orden: por qué el código abierto en GitHub no implica por sí solo una autorización, qué licencias te permiten usar código y vender un producto, qué condiciones copyleft pueden exigir fuente correspondiente de una obra cubierta y cómo comprobar una licencia en un minuto antes de usar el código. Sin «depende de la situación».
En la documentación encontrarás información práctica sobre cómo trabajar con Ailoot.
Atención
Este material es orientativo; no soy abogado. A continuación describo las condiciones de las licencias y reglas más populares, con enlaces a las fuentes primarias, pero comprueba tu caso concreto con el texto de la licencia y, si el producto es grande y comercial, también con un abogado. Tú tomas la decisión.
¿Es cierto que, si un código está en GitHub, puedes usarlo gratis?
Lo más importante
No. Que se pueda ver un código no significa que tengas permiso para usarlo en tu propio trabajo. Por defecto, todo código está protegido por derechos de autor y no puedes usarlo salvo que el autor te haya concedido permiso por separado. Publicarlo en GitHub solo permite que otras personas vean el repositorio y hagan una copia dentro de GitHub. El derecho a incluir ese código en tu producto proviene de la licencia que el autor adjuntó al repositorio. GitHub no te lo concede.
La principal trampa aquí es la palabra «abierto». Puedes ver el código fuente y parece que, como no está oculto, tienes permiso para usarlo. Ese razonamiento es erróneo. «Abierto para leer» y «con licencia para usar» son cosas distintas.
Por defecto, toda obra creativa, incluido el código, está protegida por derechos de autor desde el momento en que se crea. Hasta que el autor conceda permiso explícitamente, no puedes usarla. Así lo describe GitHub en su propia página de referencia sobre licencias.
Cuando creas una obra creativa (y el código también lo es), esta queda protegida por derechos de autor exclusivos de forma predeterminada. Si no adjuntas una licencia que indique lo contrario, nadie más puede copiar, distribuir ni modificar tu obra sin arriesgarse a una reclamación o una demanda.
La segunda parte es el propio GitHub. Hay quien piensa que, por haber aceptado las reglas de GitHub al publicar código, también puede usar el código de otras personas que encuentra allí. Las reglas dicen exactamente lo contrario. Al hacer público un repositorio, el autor solo permite a los demás verlo y hacer un fork, es decir, crear una copia dentro del propio GitHub. Eso no autoriza a usar el código en tu propio trabajo.
Al hacer público un repositorio, concedes a otros usuarios una licencia mundial y no exclusiva para usar, mostrar y reproducir (mediante forks) tus materiales a través del servicio y dentro de las funciones de GitHub. Puedes conceder derechos adicionales adjuntando una licencia.
Las palabras clave están en la última frase: «dentro de las funciones de GitHub» y «los derechos adicionales se conceden mediante una licencia». Un fork permanece dentro de GitHub. En cuanto quieras usar el código en tu propio producto, y más aún venderlo, necesitas una licencia independiente del autor. Sin licencia, no hay derecho, aunque el código esté a la vista de todos.
¿De qué depende que puedas usar el código de otra persona?
Lo más importante
Depende del archivo de licencia del repositorio, que suele llamarse LICENSE o LICENSE.md. Es el permiso del autor y especifica qué puedes y qué no puedes hacer con el código. La licencia responde a tres preguntas: ¿puedes usar el código en un producto comercial?, ¿puedes modificarlo? y ¿tienes que abrir después el código fuente de tu producto o puedes mantenerlo cerrado? Cada licencia responde de forma distinta; por eso, lo primero que debes comprobar es este archivo y solo después abrir el código en sí.
Todo se reduce a un archivo. Un repositorio bien mantenido incluye un archivo de licencia, normalmente llamado LICENSE, a veces LICENSE.md, o una mención directamente en el README. Es el permiso del autor y establece las condiciones en las que puedes usar el código. GitHub suele mostrar el nombre de la licencia en la barra lateral de la página del repositorio, incluso antes de que abras el archivo.
Para no perderte en el lenguaje jurídico, conviene leer la licencia planteándote tres preguntas sobre tu situación:
- ¿Puedes usar este código en un producto comercial por el que la gente paga?
- ¿Puedes modificar el código para adaptarlo a tus necesidades?
- ¿Tienes que abrir después el código fuente de tu producto, o puedes mantenerlo cerrado?
Casi todas las diferencias entre licencias se reducen a distintas respuestas a la tercera pregunta. A las dos primeras, las licencias abiertas más populares suelen responder «sí»: úsalo, modifícalo, véndelo. El tropiezo llega al averiguar si la licencia te obligará a abrir tu propio código. A continuación repasaremos los tipos principales con estas tres preguntas.
¿Qué licencias te permiten usar código y vender un producto?
Lo más importante
Las licencias más convenientes para un producto comercial son las permisivas: MIT, Apache 2.0 y BSD. Permiten casi todo: usar el código, modificarlo, vender el producto y mantener cerrado tu propio código fuente. Hay una obligación: conservar el texto de la licencia y la atribución. Apache 2.0 también protege frente a reclamaciones de patentes y exige marcar los archivos modificados. Si el código de otra persona tiene una de estas licencias, puedes usarlo sin problema en un producto comercial.
Empecemos con una buena noticia. Para quien desarrolla un producto para vender, la mejor opción es un grupo de licencias llamadas permisivas. Hay varias, pero tres son las más comunes: MIT, Apache 2.0 y BSD. Las tres responden «sí» a las dos primeras preguntas y te permiten mantener cerrado tu propio código fuente.
La más común y sencilla es MIT. Su texto cabe en un solo párrafo.
Por la presente se concede, sin coste alguno, permiso a cualquier persona que obtenga una copia de este software para utilizarlo sin restricciones, incluidos los derechos de usar, copiar, modificar, fusionar, publicar, distribuir, sublicenciar y vender copias, siempre que el aviso de derechos de autor anterior y este aviso de permiso se incluyan en todas las copias.
En términos más sencillos, MIT te permite hacer casi cualquier cosa con el código, incluso vender el producto y mantener cerrado tu propio código fuente. La única obligación es incluir el texto de la licencia y la línea de atribución. Babel, .NET y Rails, por ejemplo, se publican bajo MIT, así que casi seguro que ya has usado código con esta licencia.
Apache 2.0 funciona de forma parecida, pero añade dos puntos importantes. Primero, una protección explícita frente a reclamaciones de patentes: los autores del código se comprometen a no demandarte por patentes relacionadas con ese código. Segundo, algunos requisitos formales adicionales para su uso.
Puedes reproducir y distribuir copias de la obra o de obras derivadas en cualquier medio, con o sin modificaciones, siempre que entregues a los destinatarios una copia de esta licencia, marques los archivos modificados, conserves los avisos de derechos de autor y de patentes, e incluyas una copia legible del archivo NOTICE, si existe.
BSD (en sus versiones de 2 y 3 cláusulas) es básicamente similar a MIT: usar, modificar, vender y conservar el aviso de derechos de autor. He reunido las tres en una tabla para que veas la diferencia de un vistazo.
| Licencia | Vender el producto | Mantener cerrado el código fuente | Qué debes hacer | Protección de patentes |
|---|---|---|---|---|
| MIT | sí | sí | conservar el aviso de derechos de autor y el texto de la licencia | no incluye cláusula |
| Apache 2.0 | sí | sí | aviso de derechos de autor, archivo NOTICE, marcar las modificaciones | sí |
| BSD (2 y 3 cláusulas) | sí | sí | conservar el aviso de derechos de autor | no |
Cómo interpretar esto en tu caso: si el código de otra persona tiene una licencia MIT, Apache 2.0 o BSD, puedes estar tranquilo: puedes usarlo en un producto comercial, modificarlo y mantener cerrado tu propio código fuente. Solo tienes que evitar eliminar el archivo de licencia y la atribución de la parte que has usado.
¿Cómo se aplican las obligaciones de código fuente de GPL y AGPL?
Lo más importante
GPL y AGPL permiten uso comercial. Las obligaciones de fuente de GPL surgen al transmitir una obra cubierta; usarla en un servidor sin transferir copias no es ese desencadenante. AGPLv3 añade la obligación de ofrecer fuente a quienes interactúan remotamente con una versión modificada. Determina qué obra combinada queda cubierta: no incluye automáticamente todos los componentes separados e independientes.
El copyleft mantiene una obra cubierta y sus derivadas bajo la misma licencia cuando se cumplen las condiciones pertinentes. Con GPLv3, distribuir copias de fuente u objeto de una obra cubierta o derivada combinada exige cumplir licencia y obligaciones de fuente correspondiente. No se aplica automáticamente a todo programa independiente del mismo producto o servidor.
En el ejemplo del servicio web, alojar una biblioteca GPL en tu servidor sin entregar copias no exige por sí solo publicar todo el servicio. Distribuir una aplicación combinada cubierta a clientes puede activar obligaciones GPL: revisa integración y licencia antes de decidir qué fuente debe acompañarla. Un cliente de navegador entregado a usuarios plantea una distribución separada.
AGPLv3 añade una condición de red: si modificas el programa y los usuarios interactúan remotamente con esa versión, debe ofrecerles de forma visible su fuente correspondiente. Es más preciso que decir que alojar cualquier componente AGPL abre todas las partes independientes del servicio.
Para un producto propietario, examina la obra cubierta, la combinación de componentes, si se distribuyen copias y si se aplica interacción de red AGPL. Elige una alternativa permisiva compatible u obtén permiso separado si no puedes cumplir las obligaciones. El uso comercial está permitido; la cuestión es cumplir la licencia y la integración reales.
¿Qué debes hacer si el repositorio no tiene ningún archivo de licencia?
Lo más importante
Si no hay archivo de licencia, no puedes usar el código. Eso no significa que sea «gratis»: al contrario, sin licencia, el código sigue protegido por todos los derechos de autor de su autor y no tienes derecho a usarlo, copiarlo ni modificarlo. El permiso para verlo y hacer un fork dentro de GitHub no sirve en este caso: no te da derecho a incluir el código en tu producto. Si realmente necesitas el código, la única opción correcta es escribir al autor y pedirle permiso, o esperar a que añada una licencia.
Un error común es suponer que, si no hay licencia, no hay restricciones y puedes usar el código libremente. Es justo lo contrario. No tener licencia no significa tener permiso; por defecto, significa que no hay permiso. El código sin licencia sigue protegido por todos los derechos de autor de su autor y no puedes tocarlo.
Se vuelve a aplicar la regla que vimos al principio: por defecto, el código está protegido por derechos de autor y, sin permiso explícito, no puedes copiarlo, modificarlo ni distribuirlo. Poder verlo y hacer un fork dentro de GitHub no supera esa barrera ni te concede el derecho a utilizar el código en tu propio producto.
Qué hacer en la práctica si el código no tiene licencia pero realmente lo necesitas:
- Escribe al autor. Pregunta directamente en la sección de debates del repositorio o por correo electrónico si puedes usar el código y bajo qué condiciones. A veces el autor simplemente olvidó añadir una licencia y la añadirá si se lo pides.
- Busca un reemplazo. Para casi cualquier tarea hay un segundo, un tercero y un décimo repositorio similar: encontrarás alguno que tenga una licencia MIT o Apache adecuada.
- No lo uses. Si no tienes permiso y no hay reemplazo, el código no es tuyo y no puedes incluirlo en un producto que piensas vender. La tentación de pensar «¿quién se va a enterar?» acaba mal justo cuando el producto empieza a generar ingresos y a llamar la atención.
¿Y si Claude añadió al proyecto el código de otra persona?
Lo más importante
Este es un caso distinto, que no debes confundir con copiar directamente un repositorio. Si tú mismo tomas código de un repositorio concreto, tienes que cumplir su licencia. Cuando Claude u otra IA genera código como respuesta a tu petición, normalmente produce texto propio, compuesto para esa tarea, en lugar de copiar el archivo de otra persona; entonces la cuestión pasa a ser qué derechos hay sobre el código generado. Pero si la IA reprodujo claramente una parte reconocible del código con licencia de otra persona, las condiciones de esa licencia siguen aplicándose. Conviene comprobar el origen en ambos casos.
Aquí hay otra dimensión que es fácil confundir con la primera. Una cosa es visitar un repositorio y copiar un archivo: en ese caso, todo lo explicado anteriormente sobre la licencia es una obligación directa para ti. Otra es que Claude escriba código para ti como respuesta a una petición.
En los casos habituales, la IA produce texto propio, compuesto para tu tarea, en lugar de copiar el archivo de otra persona. Entonces la cuestión pasa a otro ámbito: ¿quién es titular del código generado y puedes venderlo? Es un tema amplio por sí mismo, que traté en un artículo sobre quién es titular del código escrito por IA.
Pero hay una excepción que conviene tener presente. A veces, la IA genera casi palabra por palabra una parte reconocible del código de otra persona, como una función entera de una biblioteca conocida. En ese caso, la licencia de la biblioteca sigue aplicándose, independientemente de quién haya pulsado las teclas. Por eso, debes comprobar los grandes bloques listos para usar que Claude haya incorporado íntegramente, igual que si los hubieras copiado tú.
Cómo comprobar una licencia antes de usar código: pasos que debes seguir
Lo más importante
El proceso es el siguiente: abre la página del repositorio y comprueba el nombre de la licencia en la barra lateral, abre el propio archivo LICENSE, identifica el tipo —permisiva (MIT, Apache, BSD) o copyleft (GPL, AGPL)—, compáralo con tu situación y decide si vas a usar el código o buscar un reemplazo. Si no hay licencia, no uses el código. La comprobación lleva un par de minutos y debe hacerse antes de incorporar el código a tu proyecto, no después.
Resumamos todo en una breve lista de comprobación para revisar cualquier código de terceros antes de incorporarlo a tu proyecto. Sigue los pasos de arriba abajo.
Busca el nombre de la licencia en la página del repositorio
Abre el repositorio en GitHub. El nombre de la licencia suele aparecer en la columna de la derecha o debajo de la lista de archivos; por ejemplo, «MIT License», «Apache-2.0» o «GPL-3.0». Si no aparece nada y no hay archivo de licencia, ya es una señal de alerta; vuelve a comprobarlo en el último paso.
Abre el propio archivo de licencia
Busca LICENSE, LICENSE.md o COPYING en la lista de archivos y ábrelo. Asegúrate de que el nombre coincida con lo que aparece en la barra lateral y de que la licencia se aplique al código que vas a usar, no solo a una parte separada del repositorio.
Identifica el tipo: permisiva o copyleft
MIT, Apache 2.0 y BSD son permisivas; puedes usar el código en un producto comercial cerrado. GPL y AGPL son copyleft: revisa obra cubierta, distribución y condición de red AGPL antes de determinar obligaciones de fuente. El nombre no establece qué componentes independientes quedan cubiertos.
Compárala con tu situación
Responde a tres preguntas: ¿vendes el producto?, ¿modificas el código?, ¿quieres mantener cerrado el código fuente? MIT, Apache y BSD son adecuadas para un producto cerrado que se vende. Para GPL y AGPL, determina qué obra cubierta o combinada necesita fuente correspondiente y cuándo se activa la obligación; evalúa si puedes cumplirla.
Si no hay licencia, no lo uses
Si no hay archivo de licencia y el README no dice nada sobre los permisos, no puedes usar el código. Escribe al autor para pedir permiso o busca un equivalente con una licencia adecuada. «Está disponible públicamente» no significa que tengas permiso.
Esta comprobación parece tediosa hasta la primera vez que tu producto crece, empieza a generar ingresos y alguien pregunta por el código de terceros que contiene. Dedicar dos minutos al principio cuesta menos que afrontar una disputa más adelante. En otro artículo explico qué hacer después con tu producto para que no se estanque tras el lanzamiento: He creado un producto con IA; ¿qué viene después?.
Preguntas frecuentes
¿Puedes vender un producto que contenga código de otra persona de GitHub?
Sí, si el código tiene una licencia permisiva: MIT, Apache 2.0 o BSD. Estas licencias permiten usar el código en un producto comercial, venderlo y mantener cerrado tu propio código fuente; solo exigen que conserves el texto de la licencia y la atribución. GPL y AGPL también permiten uso comercial, pero las obligaciones de fuente dependen de la obra cubierta y de la distribución o condición de red AGPL aplicable. Si no hay archivo de licencia, no puedes usar el código.
¿Qué significa que un repositorio de GitHub no tenga licencia?
Significa que no puedes usar el código. Por defecto, no tener licencia significa no tener permiso; no significa «gratis». El código sigue protegido por todos los derechos de autor de su autor. Poder ver y hacer un fork del repositorio dentro de GitHub no te da derecho a utilizar el código en tu producto. Si lo necesitas, escribe al autor y pídele permiso, o encuentra un equivalente con una licencia abierta.
¿En qué se diferencian MIT y GPL para mi producto?
MIT te permite usar y modificar el código, vender el producto y mantener cerrado tu propio código fuente; la única obligación es conservar el texto de la licencia. GPL también permite uso comercial, pero transmitir una obra combinada o derivada cubierta exige cumplir sus obligaciones de fuente correspondiente y misma licencia. Alojar sin transferir una copia es distinto y los componentes independientes no quedan cubiertos automáticamente.
¿Tengo que hacer algo si uso código bajo la licencia MIT?
Sí, una pequeña cosa: conserva el texto de la licencia MIT y la línea de atribución del código que hayas usado en tu proyecto. Normalmente se trata del mismo archivo LICENSE adjunto al original. MIT no exige nada más: puedes modificar el código, vender el producto y mantener cerrado tu código fuente.
¿Y si Claude añadió el código de otra persona y no yo?
Aun así, debes comprobar el origen. La IA suele producir texto propio para tu tarea, y entonces la cuestión pasa a ser qué derechos hay sobre el código generado, un tema aparte. Pero si la IA reprodujo casi palabra por palabra una parte reconocible del código de otra persona de una biblioteca conocida, la licencia de esa biblioteca sigue aplicándose. Comprueba los grandes bloques listos para usar que se hayan incorporado íntegramente igual que revisarías algo que hubieras copiado y pegado tú.
Fuentes
- choosealicense.com - Proyecto de referencia de GitHub para elegir una licencia
- choosealicense.com - Qué significa no tener licencia
- Términos del servicio de GitHub, sección D (concesión de licencia a otros usuarios)
- Licencia MIT (opensource.org)
- Licencia Apache 2.0 (apache.org)
- GNU General Public License v3.0 (gnu.org)
- GNU Affero General Public License v3.0 (gnu.org)
Más detalles
Preguntas sobre el diseño y publicación de proyectos con IA
¿Alojar una biblioteca GPL obliga a publicar todo mi servicio web?
Alojarla sin transferir copias no activa por sí solo la distribución GPL. Si distribuyes una aplicación combinada o derivada cubierta, pueden aplicarse obligaciones de código fuente a esa obra; los componentes independientes no quedan cubiertos automáticamente.
¿Qué condición adicional añade AGPLv3 a un servicio web?
Un programa AGPL modificado que permite interacción remota por red debe ofrecer su código fuente correspondiente a esos usuarios. Comprueba programa cubierto e integración sin suponer ni que no hace falta fuente ni que deban abrirse todos los servicios independientes.