Licencias, OpenSource y Software Libre

Ordenador¿Qué me permite hacer el software que “compro” o instalo? En los productos comerciales (o de licencia propietaria) suele estar especificado en la documentación de producto, sin embargo cuando se habla de programas de Código Abierto (Open Source) o de “Software Libre” suelen surgir más dudas y confusiones. Si es Open Source, ¿tengo que pagar? ¿Es igual “Open Source” que “Software Libre”? ¿Puedo instalarlo y usarlo libremente? ¿Qué implican las licencias “GPL” o “Apache”?

Repasamos a continuación algunos aspectos.

Terminología

Para sistematizar se repasa a continuación algunos términos y sus relaciones, aunque el que los conozca, o lo desee, puede saltarse este apartado y pasar directamente al siguiente.   A lo largo del texto utilizo el término inglés “Open Source” en lugar del castellano ”Código Abierto”, por ser este menos usado y menos claro. En cambio mantengo el término “Software Libre” que evita la confusión que “Free Software” provoca entre el sentido “Libre”  (el correcto en este contexto) y el sentido “Gratuito” del término “Free”.

Respecto a “Código Fuente” o “fuentes”, hay que recordar que, en el caso más general, una aplicación o programa informático se crea escribiendo instrucciones y operaciones en uno o más lenguajes de programación que permiten a unas personas expresar las operaciones a realizar en un lenguaje “legible por humanos”. Esas instrucciones se almacenan en diversos archivos a los que en general llamaremos el “código fuente de la aplicación” y que además de las propias instrucciones, incluirán elementos auxiliares, como podría ser imágenes (para presentar en pantalla), audio (por ejemplo para dar instrucciones al usuario), u otros elementos.

Todo ese conjunto se compilará (traducirá a instrucciones que entiende el ordenador)  y empaquetará para su distribución e instalación, dejando los fuentes de estar accesibles, por lo que deja de ser posible ver cómo está organizado internamente el programa y qué operaciones hace. En este escenario queda claro que salvo el desarrollador ofrezca su código fuente como “Open Source”, no puede accederse al mismo (salvo por técnicas de “ingeniería inversa”  o “descompilación”  ).

Una excepción son los lenguajes llamados “interpretados” ) , donde lo que se distribuye es el código fuente, que se “interpreta”(traduce)  en el momento de utilizarlo. En este caso, está claro que el código fuente está “técnicamente” accesible, lo cual no quiere decir que puedan utilizarse “legalmente”, rigiendo igualmente la licencia que el creador haya decidido aplicar.

Consideraciones previas

Lo primero que hay que destacar que la calidad de un software no tiene relación directa con su forma de licenciarlo o comercializarlo. Hay software con licencia propietaria muy bueno y también productos francamente lamentables. Lo mismo ocurre con el Software Libre y con el Open Source, que puede ser mejor o peor en función de la experiencia y profesionalidad de los técnicos que lo desarrollan. En todos los casos puede estar diseñado y desarrollado de forma eficiente o incorrecta, y construido con gran calidad o con muchos errores.

Por otra parte, no debe equipararse Open Source a software gratuito. Existen productos comerciales, con su coste de licencias o soporte, cuyos fuentes (o parte de ellos) están públicamente disponibles. Igualmente existe productos freeware, es decir, cuyo uso es gratuito, pero que no publican sus fuentes.

En cuanto a la gratuidad, estamos hablando siempre del coste de licencias exclusivamente, pero ese es solo una parte del coste total necesario para utilizar un producto, por lo que no debe ser un factor determinante. Generalmente habrá que contar con otros costes, como:

  • Hardware necesario (ordenadores, impresoras, dispositivos en general).
  • Sistema operativo en que se instalará el producto
  • Bases de datos, servidores de aplicaciones, librerías
  • Costes de formación, parametrización y administración

Si un producto gratuito requiere un sistema operativo costoso, ordenadores muy potentes y acudir a profesionales con tarifas desorbitadas, esa “gratuidad” puede salir “muy cara”. Desde el punto de vista de coste, lo importante es el coste total no solo el de licencias.

Hay un factor adicional y muy importante que complica el escenario del licenciamiento. Hay muchos productos que no son programas para que los use el usuario final (o no únicamente) sino que se utilizan como base de otros productos, por lo que implican condiciones al producto combinado. El equipo que desarrolle un nuevo producto debe tener en cuenta las licencias de los componentes que se utilizan para producir un nuevo software. Traduciendo esto a otros ámbitos estaríamos hablando, por ejemplo, de un coche al que queremos colocar un motor. Si el motor es “Open Source” y publica sus “planos” (código fuente), puede exigir que cualquier coche que quiera utilizar ese motor debe  ser también “Open Source” y publicar sus “planos”. Este escenario se produce continuamente ya que los programas son cada vez más complejos y es poco habitual desarrollar todo desde cero, en lugar de eso se utiliza componentes para manejar imágenes, para buscar por texto completo, para generar informes, para mejorar la presentación, etc.

Por último, aunque ya ha perdido la imagen que podían tener hace tiempo, por parte de algunos sectores, del Open Source como producto de “aficionados” o de “frikis”, aun puede quedar personas que consideren poco fiables los productos Open Source. En ese sentido, hay que recordar que componentes Open Source como log4j o Lucene son utilizados en cientos de los principales productos “empresariales” líder en todos los ámbitos y se han convertido en un estándar de facto, y que servidores OpenSource como Tomcat o JBoss albergan el 80% de los servidores de aplicaciones del mundo, por último el sistema operativo Android instalado en miles de millones de móviles y dispositivos también es Open Source.

Por tanto la licencia en general, y el hecho de ser Open Source, no debe ser un criterio absoluto, ni para elegir ni para rechazar, debe hacerse un estudio completo de todos los factores, donde sí deberá tener en cuenta y ponderar puntos como los que se detallan a continuación respecto a las licencias Open Source .

¿Qué implica que un producto sea Open Source?

Tras los comentarios anteriores, puede surgir la duda: entonces, si no siempre implica gratuidad o calidad ¿Qué nos garantiza exactamente el Open Source?

El hecho de disponer del código fuente del programa nos asegura varias cosas:

  • Que en caso de que desaparezca el fabricante o el soporte del programa (ya sea porque la empresa sea comprada por otra, porque cierre o porque el equipo responsable decida descontinuarlo) siempre se dispondrá de los medios para arreglar posibles incidencias o incluso evolucionar el programa. Con un producto del que no dispongamos los fuentes podemos encontrarnos que no hay soporte del mismo y en caso de fallos nadie tiene los medios para resolverlos. Y esa “desaparición” no solo ocurre con empresas pequeñas; no sería la primera vez que una empresa grande compra a otra igual para eliminar un competidor del mercado o para adquirir su producto y descontinuar el propio.
  • Que no hay “trampas ocultas”, incluyendo puertas traseras para acceder al sistema y controlarlo, o robo de datos para enviar a algún destino desconocido. Al disponer del código fuente cualquiera puede ver el funcionamiento del mismo y comprobar su seguridad.
  • Al disponer de los fuentes sería posible hacer modificaciones y extenderlo o adaptarlo a nuestras necesidades aunque el programa original no se adapte totalmente.
  • El que los fuentes estén disponibles “facilita” que “más ojos” puedan revisarlos y detectar errores. No quiere decir automáticamente que todo programa Open Source tenga menos errores; una programa no Open Source puede tener un equipo de desarrollo y de calidad que revise exhaustivamente, pero al estar disponible para revisión por más personas (además ajenas al equipo de desarrollo, con lo que tiene una visión diferente) aumentan las posibilidades de detectar errores.

Código Abierto vs Software Libre (Open Source vs Free Software)

El término de “Software Libre”, a pesar de la confusión en el término original en inglés, no tiene que ver con la gratuidad; hace referencia a las que se conoce como los cuatro derechos:

0- la libertad de usar el programa, con cualquier propósito (Uso).
1- la libertad de estudiar cómo funciona el programa y modificarlo, adaptándolo a las propias necesidades (Estudio).
2- la libertad de distribuir copias del programa, con lo cual se puede ayudar a otros usuarios (Distribución).
3- la libertad de mejorar el programa y hacer públicas esas mejoras a los demás, de modo que toda la comunidad se beneficie (Mejora).

Un software libre, al igual que el Open Source, no tiene por qué ser gratuito. Dado que se requiere la libertad de estudiarlo y modificarlo, parece necesario que el Software libre sea además Open Source, es decir debemos disponer del código fuente. La principal diferencia con el Open Source sería que este puede imponer restricciones, por ejemplo a la posibilidad de utilizarlo o distribuirlo sin ofrecer a su vez el código fuente.   En general se considera el término “Open Source” como un concepto más “técnico” y “sistemático” (dispones o no del código fuente) mientras que el término “Software Libre” tendría más implicaciones éticas y filosóficas.

¿Cuántas veces puede utilizarse/instalarse/distribuirse el producto licenciado?

Dejando al margen los productos definidos como  “software libre”, con los cuales se puede hacer “de todo”, los productos con licencia propietaria, o con licencia Open Source pero con coste, pueden tener distintos modelos, de los cuales los más habituales son:

  • En muchos casos la licencia es por puesto/ordenador instalado, especialmente para programas de escritorio, que se instalan en un ordenador personal. Habría por tanto que adquirir una licencia por cada equipo en que se desee utilizar, aunque lógicamente suele haber un escalado por tramos, bajando el precio por unidad al aumentar las unidades.
  • Muchos aplicaciones que se instalan en servidor suelen tener un modelo por usuario “nominal”, es decir el número de usuarios dados de alta en el sistema, mientras que otros tiene un modelo de licencia por usuario “concurrente”, es decir, cuantos usuarios simultáneos pueden conectarse, independientemente del número total de usuarios registrados en el sistema. En ambos casos, se instalaría en un único servidor pero debería adquirirse el número de licencias requerido (ya sean nominales o concurrentes).
  • Algunos productos se licencian por servidor en que se instale, independientemente del número de usuarios, aunque desde luego hay una relación, ya que para atender muchos usuarios, será necesario disponer de varios servidores.
  • Finalmente, en el caso de los productos de clasificación y extracción automática de documentos es bastante habitual que se licencien por página procesada, donde un servidor de licencias contiene información del total de páginas “licenciadas” y va descontando las páginas según son tratadas.

Licencias propietarias

En el caso de las licencias propietarias básicamente las limitaciones vendrán definidas en la “licencia de usuario final” o EULA (End User License Agreement) que especifica qué se permite y que no y que tiene carácter de contrato entre las partes (fabricante del software y usuario final). Esta licencia, que en muchos casos se presenta al principio de la instalación (para que el usuario no pueda negar que la ha leído) y que exige aceptar las condiciones, suele incluir limitaciones como la prohibición de descompilar o hacer ingeniería inversa del programa para acceder a los fuentes o algoritmos del mismo, o declinar la responsabilidad del fabricante en caso de mal uso o problemas con el programa. Incluirá asimismo detalles de qué información se puede recoger del usuario, ya sea para diagnosticar un problema o en el funcionamiento normal del programa.

Como en cualquier contrato, aunque no suele leerse, es importante hacerlo, especialmente en lo referente a cláusulas de confidencialidad y recogida de datos del usuario, algo que es cada vez más habitual , especialmente para aplicaciones de dispositivos móviles

Licencias Open Source

En el caso de los diversos tipos de licencias Open Source, generalmente todas aseguran que puede instalarse en diversos ordenadores, accederse al código fuente, compilarse y modificarse, las principales diferencias estriban en qué puede hacerse a su vez con ese código fuente:

Una de las más extendidas es la licencia Apache  que cubre, entre otros, los productos de la Fundación Apache, muchísimos de cuyos productos son utilizados en múltiples proyectos, tanto de Open Source como con licencia propietaria. Básicamente la licencia Apache te permite utilizar los productos bajo esa licencia para distribuirlos o desarrollar otros que pueden ser Open Source o de código propietario, y por tanto no obliga a distribuir el código de esos nuevos productos. La única limitación es que debe citarse la autoría. Puede considerarse la licencia más “permisiva” ya que no impone apenas condiciones a quienes la usen ya sean usuarios finales o empresas/equipos que desarrollen nuevos productos utilizando herramientas con licencia Apache. El objetivo es potenciar su uso, ya sea cobrando por un producto o no, divulgando los fuentes o no.

Quizá la licencia más extendida es la Licencia GPL (https://es.wikipedia.org/wiki/GNU_General_Public_License), de la cual hay varias versiones y cuya principal diferencia respecto a licencias como Apache es que exige que los trabajos derivados (programas que utilicen o empaqueten  el programa original) tengan también licencia GPL. Es decir no puede crearse un programa con licencia propietaria que utilice programas con licencia GPL. De esta forma se pretende evitar que alguien se beneficie del trabajo de otros utilizando sus desarrollos para un trabajo propio, incluso cobrando por ello, y sin citar las fuentes.

El modelo anterior GPL, como muchos otros, se refiere a la “distribución” pero ¿qué ocurre si alguien utiliza productos con licencia GPL para construir un portal o servicio de algún tipo?. El software no se está “distribuyendo”, solo se “utiliza” por los usuarios/clientes, por lo que no habría obligación de distribuir los fuentes, y de nuevo alguien podría beneficiarse del trabajo de otros sin compartir a su vez. Para este escenario se diseñó la Licencia Affero (https://en.wikipedia.org/wiki/Affero_General_Public_License ). Puede considerarse como una variación de la licencia GPL pero que además exige que si se utiliza en una aplicación web, se distribuyan los fuentes de esa nueva aplicación.

Aunque hay muchas más, una última licencia a citar sería la Licencia BSD  cuyo origen es una variante del sistema operativo Unix: «Berkeley Software Distribution» de la universidad californiana de Berkeley. Es una licencia similar a la Apache, en el sentido de que restringe menos el uso de los fuentes, que pueden utilizarse en proyectos que no sean Open Source.

Estas direcciones permitirán ampliar la información:

Joaquín Hierro

Tras muchos años trabajando en software de gestión documental de diverso tipo, actualmente defino estrategia y elijo productos de gestión documental para una multinacional española. Mi colaboración en Biblogtecarios se orienta a analizar y difundir tecnologías y soluciones disponibles para un documentalista del siglo XXI.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *