Los desarrolladores no suelen prestar atención a las licencias al usar diversos proyectos de código abierto. A menudo podemos utilizar proyectos, partes de un proyecto o funciones para nuestras aplicaciones y programas sin pensar en cómo podría afectar el futuro.
¿Necesitas mantener los derechos de autor? ¿Cuáles son los requisitos y obligaciones de diferentes licencias? En este artículo, quiero destacar el tema de elegir licencias para el proyecto y los detalles de usar proyectos con diferentes tipos de licencias.
Disclaimer: La información en esta guía no debe considerarse asesoramiento legal.
Licencia
Licencias de código abierto
Una licencia para proyectos de código abierto es un contrato legal que regula la relación entre el autor o autores y el usuario. Describe los términos de uso del proyecto/código, incluso en programas comerciales. La licencia define lo que se puede y no se puede hacer con los componentes de software, las obligaciones y las características de uso. Además, la licencia regula la responsabilidad de los autores y colaboradores del proyecto. Los tribunales de diferentes países han dictaminado que una licencia de código abierto es un contrato ejecutable.
En las licencias, a menudo luchan el pragmatismo y la ideología del software libre. Cuando escuchamos «código abierto», podemos pensar que es posible usar o modificar proyectos sin problemas. Sin embargo, como se mencionó anteriormente, cada licencia impone ciertas obligaciones desde el momento de su uso, al menos mantener los derechos de autor. Licencias específicas pueden requerir que se publique el código fuente del proyecto completo en el que se utilizó el código, por ejemplo, al usar un proyecto bajo la licencia GPL.
Las licencias se pueden dividir en:
Copyleft
- GNU GPL (Licencia Pública General de GNU)
- Microsoft Public License (Licencia Pública de Microsoft)
Permisivas
- Apache
- MIT
- BSD (Distribución de Origen de Berkeley)
Copyleft Débil
- Eclipse
- GNU Lesser General Public License (LGPL)
Algunas licencias notables incluyen:
- Creative Commons
- Licencia de Gobierno Abierto – Canadá
- Business Source License 1.1
Licencias Populares
GNU General Public License (GPL)
La GPL es generalmente considerada una licencia «agresiva» y a veces es incompatible con otras licencias de copyleft. Esta licencia a veces se llama «licencia viral» porque se transfiere de proyecto a proyecto. Si usas proyectos con licencia GPL en tu software, entonces todo tu software se considera una «obra basada en» la GPL.
GNU Lesser General Public License (LGPL)
Hasta 1999, esta licencia se llamaba Licencia General Pública de Biblioteca GNU. Se creó para que los desarrolladores puedan utilizar esta licencia para sus bibliotecas y scripts sin violar los principios del software libre. También permite que otros desarrolladores y empresas usen los proyectos relevantes con la licencia LGPL sin afectar la licencia del proyecto principal o derivado.
Apache
A diferencia de otras licencias permisivas, la Licencia Apache tiene una cláusula sobre patentes. La cláusula regula el uso de patentes: los participantes otorgan permiso para utilizar cualquiera de sus patentes que puedan estar relacionadas con su contribución. También puedes solicitar una nueva licencia si has modificado partes de los archivos/código, y señalar todos los archivos que han sido modificados.
MIT
La licencia MIT te permite hacer lo que quieras con el código; el único requisito es mantener la licencia original y la información de atribución. Si tienes que elegir entre licencias permisivas para tu proyecto, te recomendaría la MIT. Es sencilla, no requiere archivos NOTICE adicionales y puedes utilizar los derechos de autor de cualquier organización y marca registrada.
BSD
La Licencia BSD (Berkeley Source Distribution) es una licencia de código abierto permisiva que conserva las notificaciones de licencia y derechos de autor. Permite la distribución de obras derivadas sin publicar el código fuente y bajo otros términos de licencia. La Licencia BSD de 2 Cláusulas es muy similar a la Licencia MIT. La versión modificada de 3 Cláusulas BSD te protege de que tu nombre sea utilizado en el proyecto si no lo deseas, gracias a la cláusula de no respaldo.
Creative Commons
La licencia Creative Commons permite a los usuarios distribuir y copiar las obras del autor. En plataformas como StackOverflow, todo el contenido creado se licencia bajo Attribution-ShareAlike 4.0 International (CC BY-SA 4.0). La licencia también se utiliza en YouTube para creadores de videos.
Otras Licencias Interesantes
- Licencia «Do What The F*ck You Want To Public License» (DWTFYWTPL) – No requiere comentarios, y en realidad, la licencia se puede clasificar como permisiva.
- Licencia de Gobierno Abierto – Canadá: una licencia gubernamental canadiense para código abierto que puede clasificarse como permisiva, pero está sujeta a «Crown Copyright».
- Business Source License 1.1: una licencia de MariaDB Corporation que limita el uso del proyecto a proyectos no comerciales durante un período de tiempo específico. Es la licencia adoptada por HashiCorp para su software.
Más licencias Open Sources
Proyectos Sin Licencia
Si un proyecto se publica sin licencia, no significa que se pueda utilizar. Por defecto, el software está protegido por derechos de autor exclusivos, y sin una licencia, su uso es ilegal, incluso si el proyecto se publica. Solo la licencia otorga permiso para usar, copiar, distribuir o modificar el software sin riesgo de infracción si se cumplen los términos.
La mayoría de las organizaciones y empresas tampoco publican sus proyectos sin licencia.
Compatibilidad de Licencias
Cada aplicación o programa generalmente involucra muchas bibliotecas y proyectos diferentes, cada uno con su propia licencia y condiciones. Entonces, ¿cómo puedes asegurarte de que todas las licencias que utilizas son compatibles y cumplen?
Según Black Duck Audit Services, el 53% de las bases de código auditadas en 2021 contenían código de código abierto con licencias conflictivas. El 20% tenía proyectos de código abierto sin licencia o con licencias personalizadas. En general, el 97% del código comercial contiene partes y proyectos de código abierto. La mayoría de las licencias protegen a los autores de posibles demandas o daños que puedan ocurrir durante el uso de componentes y proyectos de código abierto en productos comerciales.
Cambio de Licencia
¿Puedo cambiar la licencia de un proyecto? Sí, la licencia se puede cambiar, pero el cambio de licencia debe ser acordado con todos los colaboradores del proyecto. Incluso si alguien contribuyó al archivo Readme. Es mejor hacerlo al principio cuando eres el único colaborador. Incluso puedes cambiar la licencia a una licencia propietaria, pero dicho cambio no es retroactivo. Por lo tanto, todas las versiones/lanzamientos anteriores pueden utilizarse con las licencias vigentes en ese momento.
Hay casos en los que se transfieren los derechos (derechos de autor, derechos morales) a una organización, una entidad legal que posee los derechos del proyecto. En este caso, los propietarios de los derechos relevantes pueden cambiar la licencia sin el consentimiento de los colaboradores. Consulta el Acuerdo de Licencia del Colaborador (CLA).
Acuerdo de Licencia del Colaborador (CLA)
CLA es el documento que regula la propiedad intelectual de las contribuciones de los usuarios. En algunos casos, los propietarios/mantenedores de proyectos de código abierto solicitan firmar un Acuerdo de Colaborador, lo que puede afectar a los derechos de autor y otras reglas. Por lo tanto, firmar el CLA es un requisito para revisar tu solicitud de extracción o fusión.
Hay dos opciones disponibles:
- Licencia de Derechos de Autor: los colaboradores retienen los derechos de autor de sus contribuciones.
- Cesión de Derechos de Autor: los colaboradores transfieren los derechos de autor de sus contribuciones al proyecto.
Licencias Amigables para Software Propietario
Para las empresas comerciales, siempre surge la pregunta de qué productos se pueden utilizar en software comercial/propietario (soluciones) y cuáles son las excepciones para esto. Aunque en muchos casos, la mayoría de las licencias se pueden usar en software comercial, también debes considerar si no estás violando otros derechos, incluyendo derechos de marcas registradas y patentes.
A menudo, las licencias permisivas se llaman «amigables para comercializar». Sin embargo, si la aplicación/dispositivo utiliza una parte con licencia bajo GPL, entonces surgirá la cuestión de publicar todo el código fuente, como lo requiere la GPL. Muchas organizaciones comerciales y no comerciales han creado sus propias licencias de código abierto con nombres apropiados.
Políticas de Código Abierto en Empresas Comerciales
Algunas empresas crean sus políticas de licencia. Estas políticas describen los procedimientos y requisitos para publicar proyectos. Además, pueden haber requisitos para las licencias de proyectos que se pueden utilizar en la empresa. También puede haber listas de licencias válidas e inválidas (por ejemplo, listas de bloqueo y listas de permitidos).
Casos Legales Interesantes
GOOGLE LLC vs. ORACLE AMERICA, INC.
Google compró Android, que utilizaba métodos de la API de Java. Oracle presentó una demanda alegando infracción de patentes y derechos de autor relacionados con Java SE. El caso se resolvió en varias etapas, con reinicio de audiencias en varios tribunales. La Corte Suprema de EE. UU. decidió que su uso se considera «uso justo».
GitHub Copilot
Si estás entrenando una red neuronal o tu producto incluye modelos con licencia bajo una licencia de contenido gratuito, ¿qué obligaciones surgen en este caso?
GitHub Copilot se entrenó en repositorios, incluyendo aquellos con licencias de copyleft que estipulan que los proyectos basados en y/o que incorporan el software se licencian bajo la misma licencia de copyleft.
Faker
Hubo un caso interesante que no está directamente relacionado con las licencias, pero planteó varias preguntas sobre la responsabilidad de los desarrolladores de proyectos de código abierto, así como sobre la distribución y el uso de proyectos de código abierto por parte de empresas comerciales.
La biblioteca NPM Faker se publicó bajo la licencia MIT y se utilizó en muchas empresas comerciales y otros proyectos de código abierto. Sin embargo, en un momento dado, el desarrollador decidió realizar cambios que, cuando se actualizaron, afectaron el funcionamiento regular de las aplicaciones en las que se utilizaba el proyecto.
Uso de Plantillas de Licencia (GitHub, GitLab)
Anteriormente, muchos proyectos de código abierto se publicaban sin licencia. La situación cambió después de que se implementaran funciones relacionadas en GitHub/GitLab. Al crear un repositorio, puedes elegir una plantilla de licencia relacionada. Y en el texto de la licencia se incluirá el derecho de autor correspondiente (si la licencia lo permite). Normalmente, es tu nombre o el nombre de la organización. Sin embargo, incluso al usar plantillas, aún debes realizar algunas cosas manualmente. Por ejemplo, para Apache 2.0, el derecho de autor debe agregarse a un archivo NOTICE por separado, pero el archivo no se crea automáticamente.
Conclusión
El mundo de las licencias de código abierto es complejo y diverso. Las decisiones sobre qué licencia elegir para tu proyecto y cómo cumplir con las obligaciones de la licencia pueden tener un impacto significativo en el desarrollo y el uso de software. Es importante comprender las diferencias entre las licencias y seguir buenas prácticas para garantizar el cumplimiento legal y la convivencia armoniosa de los proyectos de código abierto en el ecosistema del software.