Blog
Joan Galtés i Moreno

Si eres programador, necesitas conocer los diferentes tipos de licencias de software

Licencias de software
En este artículo te damos las claves para entender y conocer los diferentes tipos de licencias de software.

Normalmente, cuando una empresa crea software también reutiliza código. Esto incluye fragmentos de código, bibliotecas, funciones, frameworks y aplicaciones enteras. De hecho, en la mayoría de aplicaciones, la mayor parte del código está compuesta por componentes de terceros reutilizados. Y todo el código del software viene con ciertos derechos y obligaciones si es utilizado por otros o incorporado en el código de una empresa. 

Incluso los fragmentos de código copiados de Stack Overflow tienen obligaciones para su reutilización. La mayoría de estos componentes de terceros son de código abierto. El software de código abierto es gratuito, pero no está libre de obligaciones; simplemente está controlado por un tipo diferente de licencia.

El software se licencia de maneras diferentes, y las consecuencias de no cumplir con la licencia pueden ser significativas. Si una empresa reutiliza un componente sin licencia o sin cumplir con las obligaciones de una licencia, el titular de los derechos de autor podría presentar una demanda. En algunas circunstancias, una empresa podría enfrentarse a una orden judicial contra la distribución adicional de productos que contengan componentes mal utilizados, daños o la posibilidad de tener que publicar su propio código fuente. 

La mayoría de las empresas simplemente quieren ser "limpias" en su uso de software de terceros. Para proteger el código y la organización, es necesario entender las licencias de software que gobiernan el uso de cualquier código, incluidas las bibliotecas y los frameworks que no escribiste tú mismo.

↑ Tornar a dalt

¿Cómo funcionan las licencias de software?

Los nuevos usuarios de un software normalmente suscriben un acuerdo de licencia con el llamado Acuerdo de Licencia de Usuario Final (EULA), que constituye una definición legal de la relación entre el licenciante (proveedor) y el licenciatario (usuario o empresa). El EULA es un contrato que establece los derechos del comprador para instalar y utilizar el software.

Cada EULA contiene una cláusula que especifica cuándo se ponen en marcha sus condiciones por parte del usuario final. Esto puede ser en el momento en que el usuario abre el envoltorio del producto o, por ejemplo, cuando el usuario hace clic en un botón para aceptar los términos del EULA para acceder a él.

Por ejemplo, las aplicaciones basadas en la nube, como el Software como Servicio (SaaS), a menudo incluyen detalles de licencia en las EULAs, incluyendo:

  • Cargos mensuales o anuales por usuario.
  • Duración del acuerdo.
  • Términos de cancelación del acuerdo.
  • Recuperación de cualquier cargo si se cancela durante el acuerdo.

Otro uso de las licencias de software es cuando un desarrollador o empresa otorga la autorización para vender o distribuir el software con la marca de una segunda parte. El desarrollador conserva la propiedad, pero la empresa que hace el reetiquetado tiene permiso para revender el producto. Este método de licencia se conoce como "etiquetado blanco" (white labeling).

↑ Tornar a dalt

Los diferentes tipos de licencias de software

Aquí tienes cinco tipos comunes de modelos de licencias para componentes que se pueden reutilizar en un código, junto con la rara y mal entendida categoría de software de dominio público, y la no tan rara categoría sin licencia.

  1. Permisivas

    Las licencias permisivas tienen restricciones mínimas sobre cómo se puede modificar o redistribuir el software. También se las conoce como licencias "de atribución", ya que generalmente solo requieren que se retenga la información de derechos de autor en un archivo de avisos cuando se distribuye el software. Este tipo de licencia de software es la más popular entre las licencias de código abierto. Los ejemplos más conocidos de esta categoría son la Licencia Apache, la Licencia BSD y la Licencia MIT.

  2. Copyleft débil

    La Licencia Pública General Menor de GNU se conoce como una licencia de tipo "copyleft débil". Está diseñada para permitir la vinculación a bibliotecas de código abierto con pocas obligaciones. Si el software vincula dinámicamente a una biblioteca con licencia LGPL, todo el trabajo se puede distribuir bajo cualquier licencia, incluso una licencia propia, con requisitos mínimos. La vinculación estática y/o la modificación de la biblioteca se complica más. Y el uso del componente con licencia LGPL de otras maneras conlleva obligaciones copyleft. Otras licencias de copyleft débil (incluidas la MPL, CDDL y Eclipse) ocupan un lugar entre las permisivas y las de copyleft.

  3. Copyleft

    Las licencias de copyleft también se conocen como licencias recíprocas o restrictivas. En general, son menos amigables desde el punto de vista comercial que otras licencias. La más conocida y utilizada con frecuencia es la familia de licencias de la General Public License (GPL). 

    Estas licencias permiten a los desarrolladores modificar el código licenciado, incorporarlo con código propietario y distribuir nuevas obras basadas en él, siempre que distribuyan el código fuente de cualquier nueva obra o adaptación bajo la misma licencia de software. El problema aquí es que estas licencias requieren la distribución del código fuente junto con la nueva obra derivada. Por lo tanto, la licencia para una obra propia que incluye código con licencia GPL requiere la distribución de código fuente propietario. Pero, claro, exponer el código fuente a los usuarios o a los competidores generalmente no está en el interés (comercial) de una empresa. Así que las empresas que crean aplicaciones comerciales suelen evitar el uso de software con este tipo de licencias.

  4. Comercial o propietaria

    De todos los tipos de licencias de software, estas tienden a ser las más restrictivas. Estas licencias se utilizan generalmente para software comercial donde el titular de los derechos de autor está afirmando condiciones expresamente respecto a los derechos que se concederán, y por ejemplo, no quiere que el código se comparta, se ingenie, se modifique, se redistribuya o se venda.

  5. Dual

    Un titular de derechos de autor puede optar por ofrecer su software bajo diferentes licencias a diferentes usuarios. Un modelo de negocio cada vez más común es la doble licencia: utilizar tanto una licencia de copyleft u otras formas de licencia abierta pero restrictiva, como una licencia comercial. 

    La estrategia es utilizar la licencia de código abierto para facilitar que los desarrolladores obtengan el código y lo prueben, pero las obligaciones son tales que, si la empresa realmente quiere ganar dinero con el software, debe pagar por una licencia comercial. 

    La licencia AGPL se utiliza a menudo para este propósito, y han surgido algunas variantes nuevas que son aún más comercialmente restrictivas, como la Licencia Pública del Lado del Servidor.

  6. Dominio público

    Algún software es de dominio público. En general, las obras de software están protegidas por el derecho de autor, lo que significa que utilizar el software de cualquier manera requiere el permiso del creador o del titular de los derechos de autor, es decir, una licencia. 

    Sin embargo, el derecho de autor no se aplica a las obras de dominio público, y cualquiera puede modificar y utilizar ese software sin ninguna restricción. Pero debes saber que el código de dominio público es raro y que la definición varía entre jurisdicciones.

  7. Sin licencia

    El código que no tiene una licencia explícita no se considera de facto en dominio público; la premisa es que necesitas una licencia para utilizar el software. Así que si una empresa no puede asociar el software que está utilizando con una licencia, probablemente está incumpliendo la ley de derechos de autor.

↑ Tornar a dalt

¿Cómo saber qué licencias se aplican a un código de software?

Antes de poder determinar qué licencias rigen los componentes de un código, necesitas un Inventario de software (SBOM, por sus siglas en inglés), una lista de todos los componentes del código. 

Un programa establecido que incluya políticas, procesos, formación y herramientas de análisis de la composición de software (SCA) garantizará que una empresa pueda mantener un SBOM preciso con el tiempo. Una buena herramienta SCA será capaz de encontrar componentes completos así como fragmentos de código, y te indicará qué licencias se aplican a cada trozo de código y si puedes estar utilizando licencias que tienen conflictos (además

↑ Tornar a dalt

Sobre el autor

Joan Galtés i Moreno

Desarrollador full-stack, especializado en Drupal desde 2008. Me gusta concebir y desarrollar tanto el back-end como el front-end en todos mis proyectos. Entusiasta de las nuevas tecnologías, con un buen dominio de PHP, MySQL, Git, Javascript, HTML 5, SASS y CSS 3, poniendo siempre el énfasis en la usabilidad y la accesibilidad en todo aquello que desarrollo.

Compartir

Deja tu comentario