Introducción
El uso de las licencias Open source (código abierto) es un aspecto clave en el desarrollo de software que muy a menudo suele pasarse por alto. Estas licencias son el marco legal que regula el uso, la modificación y la distribución del software que se libera bajo código libre.
Cualquier persona involucrada en el uso, la creación o la gestión de este tipo de software ha de entender su funcionamiento para evitar problemas futuros. ☹️
En este post, explicaré en detalle los aspectos más importantes que hay que conocer sobre las licencias Open source.
1. Aspectos clave para Desarrolladores
-
Protección legal: Entender que tipo de licencia tiene un proyecto open source puede proteger a los desarrolladores de problemas legales serios. Muchos tipos de licencia requieren que cualquier modificación sobre el código original ha que ser liberada también como código libre. Si el desarrollador no tiene en cuenta este aspecto y hace una modificación propietaria, podría incurrir en futuros problemas legales.
-
Colaboración y Contribución: Si un desarrollador quiere hacer contribuciones de código en un proyecto open source es necesario entender el tipo de licencia de este proyecto. La licencia puede dictar como han de ser las distribuciones y como tienen que ser distribuidas.
-
Desarrollo profesional: El conocimiento sobre licencias de código abierto es una habilidad muy valorada por las empresas. Las empresas usan regularmente software open source y tener conocimiento sobre todos los aspectos legales de estas licencias puede hacer que esta habilidad sea muy valorada por los responsables de recursos humanos.
2. Aspectos clave para empresas
-
Gestión del riesgo: Las empresas que usan software de código libre deben cumplir con los términos de la licencia para evitar problemas legales. Esto incluye obligaciones, como compartir el código fuente o incluir notas informativas del uso de este software en los productos finales. Entender estos requerimientos es crucial para la gestión del riesgo.
-
Ahorro de costes: El software open source normalmente se puede usar libremente haciendo que sea una solución de bajo coste. De todas maneras, el coste de una solución open source no es cero. Algunas licencias requieren que las empresas contribuyan con la comunidad del proyecto lo que implica costes en términos de tiempo y recursos.
-
Ayuda en la toma de decisiones estratégicas: Entender las licencias open source puede ayudar a tomar decisiones empresariales estratégicas. Por ejemplo, una empresa podría tomar la decisión de usar un software con una licencia permisiva si desea que las modificaciones hechas en el software sean propietarias.
-
Manejo de la reputación: Las empresas que no cumplen con la legalidad de las licencias de código abierto pueden sufrir un daño reputacional irreparable. La comunidad open source valora la transparencia y la colaboración así que las empresas que no respetan estos principios sufren de rechazo y oposición.
3. Fundamentos de las licencias de Código Abierto
En el contexto del software de código abierto, una licencia es un acuerdo legal que especifica como se puede usar un software, modificarlo y distribuirlo. Hay dos tipos de licencias open source: permisivas y copyleft.
-
Licencias permisivas: Las licencias permisivas, como su nombre sugiere, son menos restrictivas y permiten que el software pueda usarse de cualquier tipo de forma, aunque su destino final sea un software propietario. Ejemplos de este tipo de licencias son la MIT y las licencias Apache.
-
Licencias Copyleft: Las licencias Copyleft requieren que cualquier modificación o derivado del software también sea distribuido con la misma licencia. En este caso encontramos la conocida GNU General Public License (GPL) en la que esta basada el sistema operativo Linux.
4. Resumen de las licencias de Código Abierto más populares
Existen muchos tipos de licencias open source, cada una con sus normas y restricciones.
A continuación voy a detallar las mas conocidas que son las licencias MIT, GNU GPL y Apache.
4.1 Licencia MIT
La licencia MIT es una de las más permisivas que existen.
Permite casi cualquier tipo de uso, incluyendo cualquier tipo de uso comercial. Es una licencia muy flexible que no pone restricciones en el uso que se vaya a hacer del código fuente. No existe copyleft en la licencia, así que un software propietario que contenga código en este tipo de licencia puede ser usado sin redistribuir los cambios realizados. Esto permite que los proyectos licenciados bajo una licencia MIT sean un auténtica joya para muchas empresas ya que se obtiene un código libre que otras personas han desarrollado y que es posible usar en el software propietario de la empresa sin ser necesario redistribuir los cambios realizados.
4.2 Licencia General GNU (GPL)
GPL es una licencia copyleft lo que significa que cualquier cambio que se haga sobre un software bajo esta licencia también debe licenciarse como GPL. Esto asegura que las modificaciones sigan siendo abiertas y accesibles.
GPL y todas sus versiones y variantes representan en la actualidad el 21% de todas las licencias de proyectos open source en el año 2021.
La version 3 de GPL, comparada con la versión 2, se adapta mejor siendo más exhaustiva a como se distribuye y se desarrolla código actualmente.
GPL añade 3 cláusulas principales:
- Una cláusula de compatibilidad para que sea fácil mezclar diferentes licencias en el mismo proyecto.
- Una cláusula de gestión de derechos digitales creada especialmente para evitar el uso de software GPL en productos que infringen la privacidad de los usuarios.
- Una cláusula de patente que garantiza que cualquier usuario que tenga código patentando pueda favorecerse de su protección.
4.3 Licencia Apache
La licencia Apache es muy permisiva y incluye derechos de patente en el código desarrollado por los contribuidores del software. Esto proporciona una protección legal adicional para los usuarios que la usen. Ofrece la libertad para poder descargar, usar, modificar, distribuir y vender el software desarrollado ya sea para uso de carácter personal, interno o comercial. Estos derechos incluyen copyrights y patentes. Por este motivo, cualquier persona que haya contribuido en un proyecto bajo esta licencia cede todos los derechos de patente que están en el código fuente.
4.4 La licencia Apache y las patentes
Vamos a profundizar un poco sobre el tema de las patentes y ver la conexión que existe entre la licencia Apache y sus patentes.
Una patente es un documental legal otorgado por un organismo gubernamental y que proporciona al propietario los derechos exclusivos sobre un invento, producto o proceso durante un periodo de tiempo determinado. Esto quiere decir que cualquiera que use el invento debe tener el permiso del propietario de la patente para su uso y pagar por ello.
Algunos puntos claves sobre las patentes son:
-
Objetivo de la patente: Las patentes pueden ser concedidas para una nueva innovación. Esto incluye nuevas tecnologías, máquinas, procesos o mejoras de software.
-
Requisitos: Para que se pueda patentar una nueva invención, se debe cumplir:
- Novedad: La invención debe ser nueva y que no conocida por el público antes de la reclamación de autoría por parte del inventor.
- No obvia: La invención no debe ser una modificación o combinación de otras ya conocidas.
- Útil: La invención debe ser de utilidad y tener una función práctica.
-
Proceso de aplicación: Para obtener una patente, se debe presentar una solicitud en la oficina de patentes. La forma de registro y el organismo es diferente en cada país. La solicitud debe incluir una una descripción detallada del invento y el alcance de la protección que se quiere obtener de la invención.
-
Verificación: Una vez presentada la solicitud, un funcionario especialista en patentes realizará el trabajo de revisión. Este trabajo implica la verificación de que la invención cumple todos los requisitos para ser patentable. Si esta revisión es positiva, la solicitud será aprobada y se concederá la patente.
-
Explotación: Tener una patente no impide que otras organizaciones o personas ajenas al propietario puedan explotar su uso. Ser el propietario de la patente concede al titular el derecho a iniciar acciones legales contra aquellos que infrinjan la patente. Si alguien utiliza la invención que está patentada sin el permiso de su titular, este puede emprender acciones legales por daños y perjuicios.
-
Vencimiento: La concesión de una patente no es perpetua. Normalmente las patentes tienen una vigencia de 20 años desde su concesión. Después de este período de tiempo, la invención patentada es de dominio público y cualquier persona o organización puede usarla sin ningún tipo de penalización.
-
Naturaleza Territorial: Las patentes tienen un naturaleza territorial, lo que significa que el ámbito de su protección será el país o región donde se concede. Si el inventor desea que la protección alcance múltiples países o regiones, debe presentar una solicitud en cada uno de los países.
La Licencia Apache 2.0 incluye provisiones específicas relacionadas con las patentes. Estas provisiones están diseñadas para prevenir cualquier litigio que se pueda producir y garantiza que las contribuciones no afecten a los usuarios de forma negativa, es decir, evitar que sean demandados por infringir patentes que no son de su propiedad.
La licencia proporciona los siguientes beneficios:
-
Concesión de la patente: Cuando un desarrollador realiza una contribución de código a un proyecto bajo la Licencia Apache 2.0, concede una licencia de patente a cualquier persona que reciba el código. Esta licencia permite a otros usuarios la posibilidad en su totalidad de “hacer, haber hecho, utilizar, ofrecer a la venta, vender, importar y transferir el trabajo”. Para ser más precisos, si un desarrollador al contribuir en código genera una patente, concede la licencia de uso de esa patente a los demás usuarios.
-
Terminación defensiva: La Licencia Apache 2.0 incluye una medida de protección conocida como terminación defensiva. Esta cláusula establece que si un usuario de software (licenciado) inicia una demanda de infracción de patente contra un desarrollador por su contribución al proyecto, la licencia de patente concedida al usuario para esa contribución será terminada. Esta cláusula actúa como un protector defensivo contra las demandas de patente; si se inicia una demanda de infracción de patente, se pierde el derecho a utilizar la tecnología patentada en el software.
-
Protección para los usuarios: La concesión de la patente y la cláusula de terminación defensiva, garantiza a los usuarios que usan la licencia Apache 2.0 el uso, modificación y distribución del software, sin temor a las demandas por infracción de patentes.
-
Contribuciones: A menos que de manera expresa se especifique lo contrario, cualquier contribución realizada por un desarrollador será bajo los términos de la Licencia Apache sin que se requieran términos y condiciones adicionales. Sin embargo, esto no impide que existan otros acuerdos entre el desarrollador y el proyecto con respecto a las contribuciones que podrían incluir condiciones específicas relacionadas con la propiedad intelectual.
4.5 BSD License
La licencia BSD es un tipo de licencia muy permisiva. Fue creada en 1969 por el “Berkeley Source Distribution project”, conocido como BSD. Existen diferentes variantes, pero la gran mayoría conceden la descarga, uso, modificación y redistribución del software siempre y cuando se incluya la información de la licencia y el copyright. La licencia BSD no obliga a la distribución del software bajo los términos de la licencia BSD. Aunque tanto la licencia MIT como la BSD son licencias de software de código abierto muy permisivas, existen algunas diferencias entre ellas:
- Número de cláusulas:
- Licencia MIT: Consta únicamente de una cláusula que detalla los derechos que se conceden a los usuarios, junto con información de la garantía.
- Licencia BSD: Existen varias versiones, siendo las más populares la de 2,3 y 4 cláusulas. Cada versión tiene unas condiciones diferentes de obligado cumplimiento.
- Cláusula de mención:
- Licencia MIT: No tiene una cláusula de mención.
- Licencia BSD: Originalmente contiene 4 cláusulas. Esta cláusula requiere una mención al producto original en todos los materiales que incluyan las características del software o hagan publicidad de él. Desde su creación, esta cláusula generó problemas, especialmente en la distribución de software de a gran escala, y llevó a la creación de la Licencia BSD de 3 cláusulas, que no contiene este requisito.
- Cláusula de aprobación:
- Licencia MIT: No tiene esta cláusula.
- Licencia BSD de 3 cláusulas: Contiene una cláusula con expresa prohibición del uso del nombre de los autores o desarrolladores para promocionar productos derivados del software sin obtener un permiso escrito previo.
- Condiciones explícitas:
- Licencia MIT: A diferencia de las licencias BSD, la licencia MIT es más concisa y no menciona detalladamente las condiciones. Se argumenta que la licencia MIT implícitamente concede derechos que las licencias BSD mencionan explícitamente.
- Licencia BSD: Las licencias BSD, especialmente las versiones 2 y 3, mencionan explícitamente las condiciones para la redistribución del código fuente y el formato binario.
- Derechos de patente:
- Licencia MIT: Aunque la licencia MIT no menciona explícitamente los derechos de patente que concede, los permisos de utilizar, copiar, modificar, fusionar, publicar, distribuir y/o vender suelen ser interpretados como un derecho implícito de patente.
- Licencia BSD: Al igual que la licencia MIT, las licencias BSD no mencionan explícitamente los derechos de patente, pero los permisos concedidos son interpretados como una inclusión implícita del derecho de patente.
4.6 Licencia Creative Commons
Aunque no suele usarse para el desarrollo de software, la licencia Creative Commons se usa para licenciar otro tipo de contenido, como por ejemplo, documentación o archivos multimedia.
Ofrece un rango amplio de opciones, que van de poco a muy permisivas. La licencia Creative Commons permite a los usuarios usar contenido con Copyright sin tener un contrato que autorice al uso o a como debe usarse. Existen seis tipos de licencia:
-
Attribution (BY): Esta licencia permite a los usuarios distribuir, adaptar y su uso, incluso comercialmente, siempre que se haga referencia al autor original de la creación. Es la licencia más común de todas.
-
Attribution-ShareAlike (BY-SA): Esta licencia permite a los usuarios distribuir, adaptar y su uso, incluso comercialmente, siempre que se haga referencia al autor original de la creación y que la nueva creación que salga de ello se sea licenciada bajo los mismos términos que la original. Esta licencia es a menudo comparada con la el tipo de licencia de código abierto copyleft.
-
Attribution-NoDerivatives (BY-ND): Esta licencia permite la redistribución, comercial o no comercial, siempre y cuando se distribuya tal cual se recibió, sin modificaciones adicionales y con crédito al autor original.
-
Attribution-NonCommercial (BY-NC): Esta licencia permite a los usuarios distribuir, adaptar y su uso de manera no comercial y obliga a las creaciones derivadas seguir siendo no comerciales, aunque no siendo necesario licenciar la nueva creación bajo los mismos términos.
-
Attribution-NonCommercial-ShareAlike (BY-NC-SA): Esta licencia permite la redistribución, comercial o no comercial, siempre y cuando se haga referencia al autor original y la licencia de la nueva creación sea idéntica a los términos de la original.
-
Attribution-NonCommercial-NoDerivatives (BY-NC-ND): Es la más restrictiva de las 6 licencias. Sólo permite a los usuarios descargar el trabajo y compartirlo con otros siempre y cuando exista una referencia al autor principal. No se puede alterar la obra original de ninguna forma y no se puede usar comercialmente.
5. Elección de una licencia de Código Abierto
Cuando se ha de seleccionar una licencia open source para un proyecto, existen algunos factores a considerar. Estos factores incluyen los objetivos del proyecto, la audiencia del mismo, los requisitos legales y las restricciones. Es también muy importante considerar las implicaciones de la licencia en la comunidad de desarrolladores del proyecto. Seleccionar una licencia de código abierto es una decisión crucial que puede afectar al futuro del proyecto en términos de uso, desarrollo y comunidad.
Algunos factores que hay que considerar son:
-
Objetivos del proyectos: Si se desea promocionar el uso comercial y la distribución, una licencia permisiva como la MIT o Apache es la más adecuada. Si desea asegurarse que el trabajo derivado del proyecto también sea open source, una licencia copyleft como GPL es la mejor opción.
-
Compatibilidad: Si el proyecto se va a usar junto con otros proyectos de código abierto, hay que usar una licencia que sea totalmente compatible con esos proyectos. Por ejemplo, si el proyecto va a usar software con licencia GPL, hay que usar una licencia compatible con GPL.
-
Contribuciones: Si se quieren aceptar contribuciones de otras personas, hay que considerar como la elección de la licencia va a afectar a los contribuidores del proyecto. Si se escoge una licencia incorrecta otros colaboradores no podrán colaborar en el proyecto.
-
Protección legal: Algunas licencias ofrecen más protección legal que otras. Por ejemplo, la licencia Apache incluye protección de derecho de patente, que puede proteger de litigios legales en el ámbito de las patentes.
-
Simplicidad y comprensibilidad: Algunas licencias son más fáciles de comprender que otras. Una licencia que sea simple y clara puede hacer que se facilite la colaboración.
-
Uso corporativo: Si se necesita que el proyecto sea usado comercialmente por las empresas, se ha de seleccionar una licencia permisiva. Algunas empresas no usaran el proyecto si la licencia implica obligaciones muy restrictivas.
Recuerda que siempre es necesario contar con el consejo de un experto legal cuando se va a seleccionar una licencia para un proyecto. La elección del tipo de licencia depende de los objetivos específicos del proyecto.
6. Normas de cumplimiento y buenas prácticas de uso
El uso de software open source de manera responsable implica cumplir con los términos de las licencias. Esto implica indicar de forma clara y atribuir el mérito a los creadores originales, distribuir el código fuente para las modificaciones necesarias y respetar los derechos de los autores originales.
También es importante actualizar y revisar regularmente la información de la licencia para asegurarse que sigue siendo precisa y actualizada. El cumplimiento de la licencia es fundamentar para evitar cualquier problema legal y mantener una buena reputación dentro de la comunidad open source.
Es recomendable seguir las siguientes prácticas para el cumplimiento de la licencia:
-
Entender la Licencia: Antes de usar, modificar o distribuir software de código abierto, hay que asegurarse de entender los términos de la licencia. Para ello es necesario consultar con un experto legal. Hay que recordar que los diferentes tipos de licencias implican diferentes restricciones y requisitos.
-
Proporcionar atribución y créditos: La mayoría de las licencias open source requieren la mención y el crédito a los autores originales del proyecto. Esto implica la inclusión de una copia de la licencia y el copyright. Hay que asegurarse que se sigue estrictamente con los requerimientos de la licencia.
-
Distribución del código fuente: Si la licencia es del tipo copyleft, como por ejemplo la GPL, existe la obligación de distribuir el código fuente del software, incluyendo cualquier modificación que se realice sobre el código original. Esto permite a otros usuarios beneficiarse de los cambios.
-
Respetar las Marcas Comerciales: Usar software open source no garantiza el derecho a utilizar las marcas comerciales del proyecto o de los autores originales.
-
Revisar la Compatibilidad de forma regular: A medida que un proyecto evoluciona e incorpora software de código abierto hay que revisar de forma periódica la compatibilidad con todas las licencias aplicables.
-
Uso de herramientas para gestionar la compatibilidad: Existen diversas herramientas para ayudar en la gestión del cumplimiento de las licencias open source. A través de su uso, es posible detectar automáticamente las licencias de software que se está usando y notificar sobre posibles incumplimientos de la licencia. Algunos ejemplos son:
-
FOSSA: Herramienta para la gestión de cumplimiento y seguridad. Ayuda a las empresas a identificar y gestionar las licencias open source en la base de todo su código fuente, asegurándose que se cumple con los requisitos legales. También proporciona herramientas para la gestión de la seguridad del proyecto.
-
SPDX: Herramienta que facilita el cumplimiento con las licencias open source al estandarizar el modo de compartir la información de las licencias a lo largo de la evolución del proyecto. Reduce el trabajo necesario al proporcionar un formato común para que los usuarios y las empresas compartan información importante sobre los derechos de autor y las licencias de software, lo que permite una optimización en el cumplimiento de las licencias.
-
-
Establecer Políticas de código abierto: Es una buena práctica establecer una política clara para el uso del software de código abierto. Esto incluye la realización de formación para los empleados, la inclusión de procesos para aprobar el uso del nuevo sofware y realizar auditorías periódicas para el uso de software open source.
Conclusion
Las licencias open source son un aspecto muy importante en el desarrollo de un proyecto de código abierto. Entender los diferentes tipos de licencias y sobre todo sus implicaciones es fundamental para un desarrollador o una empresa en la toma de decisiones sobre el uso y la contribución en proyectos de código abierto. Si eres un desarrollador, una empresa o simplemente un usuario que desea usar software libre, entender todos los tipos de licencias puede ayudarte a mejorar y sobre todo a no tener problemas legales en el futuro.
Espero que este artículo te haya aclarado todas las dudas sobre las ventajas e inconvenientes de las licencias de código abierto.
Enlaces y vídeos de interés
Artículos de interés
Posts que te pueden interesar:
- #5 - Los mejores enlaces sobre programación, SEO y ciencia de datos (15-05-2024)
- #4 - Los mejores enlaces sobre programación, SEO y ciencia de datos (08-05-2024)
- #3 - Los mejores enlaces sobre programación, SEO y ciencia de datos (02-05-2024)
- Convertir CSV a JSON usando la herramienta Miller (mlr)
- #2 - Los mejores enlaces sobre programación y ciencia de datos de la semana (24-04-2024)