Manténgase el control de sus licencias de software de código abierto

Agregar nuevos paquetes de código abierto a las aplicaciones ahora es más simple y accesible que nunca.

Ha habido un aumento continuo en el uso de recursos de software de código abierto dentro del desarrollo de los softwares. En este momento, hay más de 40 millones de cuentas en GitHub, con una proyección de que llegará a 100 millones de usuarios hasta 2025.

Sin embargo, un crecimiento tan explosivo conlleva un riesgo: no administrar adecuadamente la cadena de suministro de software mediante el seguimiento de los componentes, sus dependencias y licencias, puede tener consecuencias desastrosas.

Usar y compartir bloques de construcción reutilizables para acelerar el ciclo de desarrollo de software es hoy una práctica muy común. Como resultado, los ecosistemas de desarrollo como npm (Node Package Management) han aumentado su dependencia de bibliotecas de terceros.

Npm es el cliente de JavaScript ferozmente más utilizado en el mundo y es lugar de referencia para que los desarrolladores obtengan paquetes de JavaScript y reutilicen el código para acelerar el proceso de desarrollo. El registro de npm ya ha alcanzado un hito de mil millones de descargas diarias

“Había 1,5 millones de paquetes npm solo en el registro público en febrero de 2021”

Pero, parece que los desarrolladores, los equipos de seguridad, legales y los propietarios de negocios están mayormente en la oscuridad cuando se trata de sus obligaciones de licencia.

¿Qué es una licencia de software de código abierto?

¿Qué es una licencia de software de código abierto?

Las licencias de software de código abierto (OSS) permiten a los desarrolladores compartir su código fuente (componentes, bibliotecas y más) como código abierto. Otros desarrolladores pueden entonces libremente (en diferentes grados según se define en la licencia específica) usar estos componentes en su propio trabajo.

Cuando utiliza componentes de código abierto, está firmando implícitamente un contrato legal que se puede hacer cumplir. Lo vincula a usted (es decir, desarrollador o empresa) y al autor sobre cómo utilizará su código. Dependiendo del tipo de licencia, puede haber una gran disparidad en los derechos que otorgan y las obligaciones que hacen cumplir.

¿Por qué son necesarias las licencias? ¿No es el código abierto de uso gratuito?

El código fuente abierto es gratuito y está disponible para que lo use cualquier persona, pero existen limitaciones. Para cada licencia de código abierto en particular, existen términos y condiciones que restringen a los usuarios lo que pueden o no pueden hacer. Luego, depende de cada desarrollador o empresa mantener el cumplimiento.

¿Qué podría salir mal?

Cada componente de código abierto, así como cualquier componente del que dependa, también tendrá términos y condiciones únicos que deben cumplirse.

En la industria del software, las empresas se adhieren al ciclo de vida del desarrollo de software (SDLC) para garantizar un software totalmente probado y listo para la producción. Seguir el proceso paso a paso elimina las trampas típicas de los proyectos de desarrollo de software.

Pero, el cumplimiento de la licencia debe verificarse desde el principio del proceso SDLC. Cuanto más tarde lo deje, mayor será la probabilidad de interrupciones que podrían afectar la distribución de su software.

¿Cómo afectan las licencias al trabajo derivado?

Es importante que los desarrolladores comprendan cómo los enlaces estáticos frente a los dinámicos pueden afectar la concesión de licencias para trabajos derivados. Esta distinción es fundamental cuando se trata de interpretar los requisitos de licencia.

Una vez que se publica el código modificado, si no se cumplen los términos y condiciones apropiados de la licencia, existe una posibilidad real de verse obligado a distribuir todo su software propietario desarrollado internamente.

¿Cuáles son las posibles consecuencias del incumplimiento?

  • Sanciones y restricciones sobre la venta del producto de software de su empresa hasta que se cumpla con el cumplimiento.
  • Una orden judicial puede impedir la distribución de un producto hasta que se publique el código fuente.
  • Cuanto más tarde se descubra una dependencia problemática, más costoso será resolverla.
  • Cobertura de prensa negativa por incumplimiento
  • Pérdida de reputación con los clientes.
  • Daño a la credibilidad con la comunidad de código abierto.
  • Costos de descubrimiento y diligencia debida en respuesta a una consulta de cumplimiento de un código fuente en particular.
  • Posibles costos legales externos para abordar un reclamo

Sin lugar a dudas, las consecuencias de las reclamaciones por incumplimiento han sido que los demandados finalmente han tenido que cumplir. Además, los costos de responder a un reclamo generalmente han superado los del tiempo y el dinero necesarios para seguir el cumplimiento básico.

Diferentes tipos de licencias con código abierto

Diferentes tipos de licencias con código abierto

¿Cuáles son las diferencias entre las licencias de software comercial y las licencias de software de código abierto?

Con la mayoría de las licencias comerciales, la obligación principal es limitar el derecho de usar o distribuir el software propietario a los usuarios autorizados, es decir, aquellos que han pagado por él (piense en Microsoft).

Los desarrolladores de software patentados utilizan los derechos de autor para quitarle la libertad al usuario, lo que va en contra del espíritu del código abierto. El licenciante conserva los derechos exclusivos y exclusivos para editar, inspeccionar, cambiar y mejorar el software.

Una licencia de código abierto no se compra, es gratis. El usuario puede modificar, mejorar y distribuir el código como mejor le parezca. Sin embargo, puede haber términos y condiciones que un usuario debe respetar y cumplir una vez que distribuye su software.

Dependiendo del tipo de licencia de código abierto, es posible que se requiera que el usuario reproduzca un texto de licencia específico, además de que su software esté disponible cuando se distribuya. La licencia está ahí para definir cuáles son las responsabilidades de aquellos que usan y distribuyen el software.

¿Sabe qué licencias de código abierto está utilizando?

Con miles de licencias de software diferentes existentes, hay más de 200 que se clasifican como licencias de código abierto. De estos, aproximadamente 80 están aprobados por la Open Source Initiative (OSI. Todas estas diferentes licencias tienen sus propios términos y condiciones, algunas con copia izquierda, otras permisivas y otras sin licencia alguna.

Hoy en día, las licencias permisivas superan con creces el número de copyleft. La comunidad de código abierto está adoptando aquellos componentes con licencias que son más fáciles de usar. Las licencias permisivas ofrecen una solución de cumplimiento más simple de seguir, lo que reduce el dolor de cabeza de las licencias.

El 90% del código en las aplicaciones modernas es código fuente abierto desarrollado por otros”

Comprender los diferentes tipos de licencias de código abierto

Las licencias de código abierto generalmente se pueden dividir en dos categorías principales: copyleft y permisivas. Esta división se basa en los requisitos y restricciones que un autor impone a los usuarios.

Una licencia permisiva impone restricciones mínimas sobre cómo otros pueden usar los componentes de código abierto. No requiere casi nada a cambio con respecto a las obligaciones en el futuro.

Una licencia copyleft proporciona el mismo permiso que una licencia permisiva, pero requiere que usted publique cualquier trabajo derivado que realice bajo los mismos términos de licencia copyleft. Muchas licencias de código abierto dictan cómo o si el software se puede utilizar en aplicaciones comerciales, y los requisitos y restricciones bajo los cuales se puede hacer.

Para un componente de software sin licencia, su uso no es gratuito. De forma predeterminada, está completamente protegido por derechos de autor, por lo que los desarrolladores no tienen derechos legales para usarlo, modificarlo o compartirlo.

Como comunidad, los desarrolladores de código abierto están haciendo todo lo posible para asegurarse de que el código abierto sea fácil de adoptar, usar y cumplir. Y las empresas también pueden aportar su granito de arena asegurándose de cumplir con los requisitos de licencia para el código que utilizan.

Compatibilidad de licencia

Combinar varias licencias diferentes juntas puede ser un desafío. Dado que los permisos y las condiciones de una licencia en particular pueden entrar en conflicto con los requisitos de otra.

En general, las licencias permisivas son compatibles entre sí, lo que las convierte en componentes populares para productos de software patentados. Y debido a que son permisivos, son compatibles con las licencias copyleft.

En general, las licencias copyleft son más problemáticas para el software comercial, ya que se las conoce como licencias recíprocas. Esto significa que los trabajos derivados también deben publicarse bajo una licencia copyleft compatible.

Basado en la premisa de que cualquiera puede beneficiarse libremente del trabajo anterior de otros, pero que cualquier modificación a ese trabajo también debería beneficiar a todos los demás y, por lo tanto, debe liberarse en términos similares.

¿Por qué es tan importante el cumplimiento de código abierto?

¿Por qué es tan importante el cumplimiento de código abierto?

¿Por qué tener licencias de código abierto?

Componentes de código abierto aceleran el ciclo de desarrollo de software. Respaldado por cientos y, a veces, miles de comunidades que representan a los desarrolladores de OSS.

Aunque el software es gratuito, los usuarios tienen la responsabilidad de garantizar el cumplimiento de las obligaciones que acompañan a una licencia.

El cumplimiento de código abierto es el proceso mediante el cual los usuarios y desarrolladores de OSS observan los avisos de derechos de autor y cumplen los términos y condiciones de la licencia.

Las licencias ayudan a las empresas a proteger su propia propiedad intelectual, la de proveedores externos y facilitan el uso de OSS en productos comerciales.

¿Cuáles son las consecuencias del incumplimiento?

El uso de un paquete sin licencia o con la licencia incorrecta puede provocar fallas de cumplimiento y, como consecuencia:

  • Añada tiempo y dinero a la eliminación de un componente.
  • Significa “volver al punto de partida” si necesitas reemplazar y volver a desarrollar un segmento de código.
  • Después de la liberación se enfrentan a un reclamo por infracción.
  • Poner en peligro la propiedad exclusiva de cualquier código propietario.
  • Como resultado de un incumplimiento de las obligaciones de la licencia, un licenciante puede solicitar al productor de software que se abstenga de distribuir sus componentes en el futuro.
  • O trabajar con un componente que tiene una licencia que nadie mantiene y que lo hace apto para su explotación.

El uso de una herramienta como Bytesafe puede identificar la información de la licencia en el software de código abierto que utiliza actualmente:

  • Los paquetes pueden tener varias licencias.
  • Úselo para restringir paquetes problemáticos o sin licencia.
  • Analizar todos los archivos del paquete y notificar cuando se identifiquen problemas de licencia.

Riesgos y obligaciones legales

Riesgos y obligaciones legales

El Efecto Copyleft

Copyleft dice que cualquiera que redistribuya el software, con o sin cambios, debe dejar la libertad de copiarlo y cambiarlo.

Modificación de OSS

En las distribuciones de versiones modificadas, algunas licencias requieren que dichos cambios se destaquen formalmente junto con la información adjunta sobre la fecha y el alcance de los cambios realizados, o requieren que se cambie el nombre de los componentes modificados para evitar confusiones con la versión original.

Licencia de Texto

La mayoría de las licencias de código abierto contienen obligaciones específicas relacionadas con la información y la documentación. En muchos casos, las licencias requieren que el texto de la licencia respectiva se entregue junto con el software cuando se distribuya.

Los textos de licencia faltantes son un caso clásico de infracción de licencia, que puede llevar a la pérdida de todos los derechos de uso en el caso de algunas licencias y que, en la práctica, a veces implica acciones de ejecución como una medida cautelar.

Además del texto de la licencia, en muchos casos también se requiere la provisión de un aviso de derechos de autor que menciona el nombre del autor.

Los avisos de derechos de autor generalmente se pueden encontrar en varias ubicaciones dentro del software. Algunos de ellos están contenidos en el archivo con los textos de la licencia. Además, los archivos de origen también pueden contener avisos de derechos de autor, a menudo distribuidos en cientos o miles de archivos.

Debida diligencia

Al invertir en una empresa, una parte fundamental del proceso de diligencia debida a menudo se relaciona con el software propietario y el uso de componentes de código abierto.

El OSS utilizado en un producto patentado puede tener ramificaciones regulatorias y de cumplimiento que deben evaluarse. Por lo tanto, se debe tener en cuenta el inventario de licencias de software de una empresa para identificar los componentes utilizados y garantizar el cumplimiento.

¿Cuándo se aplican las obligaciones de la licencia?

Normalmente, para que se apliquen las obligaciones, se requiere la distribución del software.

Composición de su base de código

Composición de su base de código

¿Dónde debe enfocar sus esfuerzos de cumplimiento?

No le sorprenderá saber que el código de un producto de software comercial típico actual es, en la mayoría de los casos, de código abierto.

A medida que el uso de código abierto continúa creciendo, es fundamental que los desarrolladores, las empresas, los equipos legales, etc. se esfuercen por conocer la composición del código base de su producto.

Cada componente y sus dependencias tienen restricciones de licencia y obligaciones que deben cumplirse, desde la permisiva “todo vale” hasta la licencia copyleft más restringida.

Pero para cumplir, necesitará saber qué componentes de código abierto se encuentran en la base de código. Permisivos, con copyleft o sin licencia, todos tienen consecuencias si no los cumple.

Y el hecho de que un componente no tenga licencia no le da carta blanca para hacer lo que quiere. Sin licencia significa que, de forma predeterminada, está bajo derechos de autor exclusivos, por lo que no puede usar, modificar o compartir el código.

Entonces tiene sentido enfocar los esfuerzos de cumplimiento en abordar primero las obligaciones de las licencias de software más restrictivas.

Hay varias organizaciones que brindan pautas y definiciones con respecto a las licencias de software.

The Free Software Foundation mantiene una lista no exhaustiva de licencias de software y la Open Source Initiative define una lista de unas 80 licencias de código abierto certificadas.

Escaneo de licencias

Escaneo de licencias

Cuando incorpora código abierto en su producto de software, es arriesgado asumir que la licencia principal del proyecto que conoce es la única licencia que debe cumplir.

Es posible que la licencia de un componente no se aplique necesariamente a cada archivo individual o cada línea de código dentro de un solo archivo. Esto se debe a que los proyectos de código abierto evolucionan a partir de las contribuciones de cientos o incluso miles de miembros de la comunidad, todos de diferentes fuentes.

Cualquier componente de código abierto podría depender de una gran cantidad de licencias que es posible que no pueda identificar sin realizar un escaneo. Con cada licencia puede haber diferentes condiciones y obligaciones impuestas.

Los paquetes almacenados en un registro Bytesafe se analizan en busca de información de licencia. A continuación, se muestran las licencias identificadas tanto para la última versión de un paquete como para las versiones de paquetes individuales.

La información de licencia escaneada permite a los usuarios identificar licencias problemáticas o recibir notificaciones de licencias sin licencia o no estandarizadas.

Plugin de escáner de licencias Bytesafe

Cuando está habilitado, el plugin escanea los archivos en todos los paquetes en un registro y marca posibles problemas de licencia. Las licencias identificadas para un paquete se muestran luego como insignias de licencia. Un paquete puede tener una o varias credenciales de licencia (los paquetes pueden tener varias licencias).

Además, si no se encuentra información de licencia para un paquete, esto se marcará como un posible problema de licencia. Los paquetes que no tienen licencia normalmente tienen derechos de autor y es posible que sea necesario realizar más investigaciones.

El análisis Bytesafe se puede utilizar de las siguientes formas:

  • Código fuente sin licencia - identifica los paquetes que no tienen licencia.
  • Licencias no estandarizadas - identifique las licencias no estandarizadas que requieren un seguimiento para revisar el estado de los derechos de autor.
  • Bloquear licencias problemáticas - asegúrese de que las licencias no deseadas no se agreguen a sus registros con una política de bloqueo de licencias.

Errores comunes de cumplimiento

Errores comunes de cumplimiento

Código fuente sin licencia

A menos que incluya una licencia para su código que especifique lo contrario, nadie puede copiar, distribuir o modificar su trabajo. El software sin licencia está completamente protegido por derechos de autor de forma predeterminada, por lo que otros desarrolladores no tienen derechos legales para usarlo, modificarlo o compartirlo.

Entonces, hasta que pase al dominio público o esté cubierto por una licencia diferente, no es legalmente utilizable. Lo que impactará directamente en su reutilización y sostenibilidad.

Asegure el cumplimiento antes de distribuir su software

La lección más importante de los casos de incumplimiento ha sido que, en última instancia, las empresas involucradas tenían que cumplir con los términos de la licencia.

Por lo tanto, tómese el tiempo para familiarizarse con todas las obligaciones, escanee para ver todas las dependencias y sus condiciones de licencia.

Con el código fuente abierto ahora tan extendido en su uso por parte de los desarrolladores, es fundamental que las responsabilidades de cumplimiento se compartan en toda la organización. Para que se pueda identificar todo el software de código abierto utilizado en los productos y verificar su licencia.

Mantenerse al tanto del cumplimiento significa establecer procesos y procedimientos sólidos para garantizar el cumplimiento:

  • Lea y comprenda cuáles son las obligaciones de la licencia para asegurarse de que coincida con lo que desea hacer con el software.
  • Con el software que ha desarrollado, notifique a los destinatarios del producto que contiene OSS e infórmeles de sus derechos con respecto a ese software.
  • Publique un aviso de licencia en el sitio web de su producto.
  • Capacitar al personal para comprender la política de la empresa que rige el uso de OSS.

No olvide apoyar a la comunidad de código abierto

Para las empresas que utilizan OSS en sus productos comerciales, se recomienda desarrollar y mantener una buena relación de trabajo con la comunidad de código abierto. Eso puede comenzar asegurándose de que está cumpliendo con las licencias del software de código abierto que se está utilizando.

Image
Image