viernes, 16 de febrero de 2007

GNU o el nuevo comunismo (notas sobre una conferencia de Richard Stallman)


¿Qué es GNU?
Para los no iniciados, GNU (que significa GNU’s Not Unix, acrónimo lúdico y recursivo, como muchos de los términos que rodean al mundo GNU) es una organización que pretende fundamentalmente la promoción del software libre, a través del uso de lo que se denomina licencia GPL (GNU Public License).

¿Y qué es el software libre?
En palabras de GNU, «cuando hablamos de software libre nos estamos refiriendo a libertad, no a gratuidad». El software libre no es, en contra de lo que mucha gente cree, software gratuito. Ni siquiera es software que pueda utilizarse de cualquier manera y para cualquier propósito, ya que un programador está obligado a cumplir ciertas condiciones si utiliza código GNU. Observe que he utilizado deliberadamente los términos “programador” y “código”, porque son la clave del asunto.
Primero, un comentario para neófitos: un programa de ordenador usualmente consiste en una “novela” escrita en lenguaje de ordenador, que se denomina código fuente. Este código fuente, al ser compilado, genera el código ejecutable, que es el que los ordenadores son capaces de ejecutar.
El común de los mortales no está para nada interesado en el código fuente, porque ni conoce ni le importa el lenguaje en el que está escrita la “novela”, y mucho menos está interesado en modificarla. De hecho, el modo de trabajo tradicional consiste en que al cliente final se le vende sólo el código ejecutable. La empresa desarrolladora del software continúa trabajando en el código fuente del programa para mejorarlo, y así va generando sucesivas versiones. El código fuente, por así decirlo, forma parte del “capital” de la empresa, y ocasionalmente se vende a otras empresas a un precio varios órdenes de magnitud mayor que el del código ejecutable.
Lo que sí obtiene el usuario de software libre es un beneficio indirecto, que es una mayor calidad en el producto final, ya que al estar el código fuente sometido a un proceso de mejora constante por diferentes programadores, normalmente alcanza unas cotas de calidad raramente obtenidas por el procedimiento tradicional de desarrollo software.
Si usted no va a modificar un programa, tanto le da que sea GPL, OpenSource o simplemente freeware (términos que explicaré más adelante). Simplemente lo que quiere es que sea gratis y, por supuesto, que funcione correctamente, que cumpla lo mejor posible su propósito.
Pero si usted es programador, más pronto o más tarde encontrará que cierta funcionalidad que desea incorporar a un programa ya ha sido programada por alguien, y que este código fuente quizá se encuentra disponible en Internet. Como repetir el trabajo parece un poco absurdo, quizá usted se encuentre tentado de tomar ese código fuente, incorporarlo al suyo propio, y ¡a correr!
El problema surge si dicho código fuente se encuentra bajo licencia GPL, ya que la licencia GPL obliga a respetar una serie de términos, que podemos resumir en:

  • El código fuente sometido a licencia GPL se puede distribuir libremente. Se puede cobrar por dicha transferencia. También se pueden distribuir los ejecutables generados a partir del código fuente para plataformas concretas, ahorrando a los usuarios el proceso de compilación. Y por supuesto, el código ejecutable generado se puede utilizar libremente.

  • Es posible modificar libremente el código fuente o incluirlo en un programa mayor, estando obligado entonces el programador a distribuir el resultado bajo licencia GPL.

  • No se ofrece ninguna garantía ni existe ninguna responsabilidad por parte de los autores del código en caso de mal funcionamiento de los programas.

Curiosamente, las compañías que comercializan software “sin código fuente” centran sus ataques a la licencia GPL en este último punto, y los usuarios defensores de la licencia GPL centran sus alabanzas en el primero. Yo voy a discutir principalmente del segundo.

Impacto empresarial de GPL
Un primo mío vino el otro día a contarme que en nuestro pueblo estaba muy de moda una empresa que hacía “software libre”, y que esto era fantástico porque de este modo el código fuente que desarrollaban quedaba a disposición de la empresa que pagaba por el desarrollo. Yo le pregunté, asombrado, ­—¿Software libre? ¿Estás seguro? ¿Saben los de la empresa contratante lo que eso significa?—. Porque una cosa es disponer del código fuente del desarrollo y otra muy diferente que ese código sea “publico” o peor todavía, “libre” y esté disponible para cualquiera, incluida la competencia de la empresa contratante.
Imaginemos que una empresa A invierte 60.000 € en contratar el desarrollo de un programa que le permite una gestión automatizada por la que ahorrará 30.000 € anuales. Es una inversión justificable. Pero, si la empresa B, que se dedica a las mismas actividades que la A, puede copiar y utilizar libremente dicho programa, se convierte en igual de competitiva que la empresa A, sin efectuar ningún gasto y sin necesidad de fomentar la innovación.
Quizá la empresa B invierta un poco para mejorar el programa, pagando a los mismos desarrolladores, obteniendo así un producto todavía más competitivo.
Peor todavía, puede que la empresa A mejore su programa con sus propios recursos, sin volver a contratar a los desarrolladores: da igual, el resultado de sus mejoras tiene necesariamente que ser distribuido bajo licencia GPL.
La pregunta es la que yo le hice a mi primo: ¿sabe la empresa A dónde se está metiendo?

Desde la informática más cerrada hasta la informática más abierta
Los que llevamos algunas décadas trabajando en informática hemos vivido una difícil evolución desde modelos muy cerrados (los viejos sistemas de IBM, NCR y otros) hasta modelos más abiertos. Pero a veces es complejo anticipar dónde acabará una decisión e incluso cómo se posicionan las diferentes empresas dentro de esa lucha despiadada por la cuenta de resultados a medio plazo.
Los modelos de informática más cerrados eran comunes en los años 70 y consistían en diseños conjuntos hardware / software, estando ambos conceptos en manos de los desarrolladores y dejaban al cliente a merced de éstos.
Parece irónico que IBM, una de las principales defensoras de los modelos más cerrados, fuera quien posibilitó la entrada, a lo largo de los años 80, en una nueva generación de máquinas en las que el hardware y el software eran desarrollados por empresas diferentes (modelo que, por ejemplo, Apple nunca abandonó). Este modelo es mucho más abierto que el anterior, aunque presenta problemas técnicos importantes: es como si un fabricante de automóviles desarrollara la carrocería y varios fabricantes fabricasen diferentes motores, todos acoplables a la misma carrocería. Esto es técnicamente más complejo que si hay un solo fabricante para todo.
El proceso de apertura en los desarrollos informáticos ha continuado durante los 90 centrándose en dos nuevas estructuras bipolares: código fuente y código ejecutable, programas gratuitos y programas de pago.
En cuanto a la gratuidad de los programas tenemos varias categorías: programas de pago, programas shareware (digamos “de pago si te gustan”) y programas freeware (gratuitos). A esto hay que añadirles una incómoda categoría de reciente aparición: los programas que incluyen spyware, adware o similares, un concepto peligrosísimo (desde mi punto de vista, un spyware no es más que un virus troyano que legalmente no puede ser desalojado por los antivirus). Supongo que el lector estará medianamente familiarizado con estas categorías, y que no tendrá muchos problemas en clasificarlas como más o menos abiertas.
En cuanto a la distribución del código fuente hay al menos tres modalidades:

(a)Bajo ciertas condiciones contractuales, el desarrollador entrega una copia del código fuente al cliente, que pueden servir a éste para auditar la corrección y la adecuación a las especificaciones del producto comprado. No obstante, el cliente NO tiene derecho a modificar ni distribuir el producto. Esto, por ejemplo, está pasando con Windows. Las administraciones que lo usan (al menos las técnicamente más informadas) están firmando acuerdos con Microsoft por los que reciben una copia del código fuente del sistema operativo.

(b)La licencia GPL, que obliga, si se modifica el código fuente (o si se integra en otra aplicación) a que el resultado sea también publicado bajo licencia GPL. Consciente de los problemas que genera la licencia GPL, GNU ha creado una versión más suave, la licencia LGPL. LGPL es “Lesser GNU Public Licence”, algo así como “licencia GPL, pero menos”. En este caso quien modifique el código original no está obligado a distribuirlo, de modo que las empresas pueden rentabilizar su inversión.

(c)El código OpenSource, que puede ser utilizado y modificado a voluntad sin que ello implique ningún compromiso por parte de quien lo modifique o integre en otra aplicación.

Gratuito y “entrega de código fuente” son dos cosas diferentes, como se esfuerzan en aclarar los de GNU, pero con la difusión del uso de Internet cualquiera puede conseguir un programa en las modalidades (b) o (c), compilarlo (si es que no lo encuentra ya compilado para la plataforma en la que quiera utilizarlo) y utilizarlo de modo gratuito.
Esto hace que el último refugio para el beneficio económico de quienes desarrollan GPL sea la consultoría, el soporte y la adaptación a necesidades concretas de los clientes, aunque con los inconvenientes anteriormente comentados.

¿Y la invención?
Decía Machado: “de cada diez cabezas / nueve embisten y una piensa”. En informática, de cada mil cabezas, novecientas noventa y nueve copian y una inventa. Pero quienes copian sólo introducen pequeñas mejoras en las ideas originales, mientras que quien inventa (y esto es lo que diferencia a la informática de las ingenierías y las aproxima al arte) abre nuevos mundos de posibilidades. Cuando Berners-Lee construyo en 1990 el programa WordWideWeb estaba abriendo la puerta a un universo nuevo, quizá anticipado en 1945 por Vanevar Bush. Luego vino Mosaic, NetScape, Internet Explorer, Opera, Mozilla y tantos otros, que no fueron más que copias mejoradas de la idea original.
Tengo dudas —y que me perdonen los GNU/linuxeros— de que el proceso GPL fomente la invención: UNIX existe desde los 70 aunque haya sido perfectamente copiado y mejorado por GNU; las ideas de los interfaces gráficos no son de GNU, ni de Windows; ni siquiera, como muchos creen, de Apple. Los interfaces gráficos se crearon en 1973 en los laboratorios Xerox PARC. La tecnología Web se creo en el CERN, y se hizo gratuita. En un sistema social que no protege las ideas, tengo mis dudas de que la invención sea rentable para alguien.

¿Por qué no ir más allá? ¿Qué pasa con otros objetos sometidos a la propiedad intelectual?
Stallman se para en seco cuando se habla de música o literatura. Admite que la cultura debería ser libremente distribuible sin pagar royalties (¡qué opinará la SGAE sobre esto!). Pero no se atreve a admitir que una novela o un tema musical pueda ser modificado y vuelto a distribuir. La idea, no obstante, es fascinante. Esto existe desde siempre en la música popular, hasta que las discográficas la han mercantilizado. Y al menos creo que tiene sentido en otro dominio de aplicación: las traducciones de obras literarias. ¿Cuántas veces nos ha pasado que hemos detectado un error de traducción en un libro? Un libro con licencia GNU podría ser corregido por cada lector y vuelto a publicar: ¿generaría esto una nueva literatura? Existen hasta herramientas informáticas para ello, y ¡una enciclopedia construida de este modo!

Conclusión
La licencia GPL es una idea original, interesante, ¡y comunista, en el mejor sentido del término! Permite que desarrolladores idealistas (y normalmente financiados por otras actividades que dejan mucho tiempo libre, como funcionarios de los centros de cálculo de la administración o las universidades) compartan y mejoren su código fuente, al tiempo que evitan que las empresas saquen provecho de su esfuerzo implementando productos que usen fragmentos de código GPL.
Desde este punto de vista los términos de la licencia son excelentes.
Sin embargo, desde el punto de vista empresarial, hay que tener muy claro lo que se está haciendo cuando se utiliza código GPL, y si no que se lo pregunten a CISCO Systems, que ha sido objeto de fuertes presiones por parte de GNU por haber incluido código con licencia GPL en uno de sus routers.
El código bajo licencia OpenSource no está en cambio sometido a estas limitaciones. Un programador puede usarlo, modificarlo y distribuir el producto final como quiera. La contrapartida es que el autor del software original no percibiría beneficios por ello. Ni siquiera el beneficio de poder obtener el código fuente mejorado.
La licencia GPL establece dos universos: el de lo empresarial y el de lo compartido, lo comunista, ambos divididos, como no podría ser de otro modo, por un telón de acero.
Al final de su conferencia, alguien preguntó a Stallman que cómo podía entonces ganarse la vida un programador si distribuía su código fuente de modo gratuito. La respuesta fue tajante: “dedíquese a otra cosa y programe en sus horas libres”, una opinión que curiosamente coincide con mis propias ideas sobre lo que deberían hacer los escritores de literatura para que ésta sobreviva.


Publicado originariamente en la Revista Poética Almacén el 1/2/2004