domingo, 18 de febrero de 2007

El largo camino hacia la libertad informática


Los sistemas propietarios

Cuando comencé en esto de la informática, el mercado estaba dominado por soluciones propietarias. Los fabricantes de ordenadores vendían el hardware junto con un sistema operativo propio (en muchos casos absolutamente burdo) y, si podían, incluso con la aplicación hecha a medida para el cliente. Este es el punto de partida de este artículo: el modelo más esclavizante de mercado informático, al que las empresas que lo profesaban se aferraron ferozmente frente a los nuevos vientos. Un sistema completo costaba entre 5 y 10 millones de pesetas de la época.

Como en los sistemas absolutistas, los tres poderes de la informática (hardware, sistema operativo y aplicaciones) estaban en manos de una sola organización.

La independencia de poderes

En 1981 surgió un nuevo modelo que cambiaría el mundo: comercializar de modo independiente el hardware, el sistema operativo y los programas, siendo cada uno fabricado por diferentes empresas. Los impulsores de este modelo fueron IBM y Microsoft, con el PC compatible y el MS-DOS. En aquella época, empresas como Apple o NCR se mantuvieron firmes en el modelo antiguo. Y perdieron. Y el resultado del nuevo modelo fue un abaratamiento del producto completo porque se había incrementado enormemente la competencia entre compañías. Ahora uno podía comprar el hardware a decenas de fabricantes diferentes y montar sobre éste sistemas operativos de tres o cuatro desarrolladores.

Pero el software seguía siendo caro.

Sobre el año 1983, sustentado por la posibilidad de distribución electrónica (vía modem –con las BBS–, o vía Internet –FTP en aquella época–), surgió una nueva idea de comercialización del software, el shareware. Particulares que habían desarrollado un programa para sus propios fines pensaron que éste podía ser útil a otros usuarios, así que permitieron que el programa pudiera utilizarse de modo más o menos gratuito, a veces arrancando con una pantalla de aviso (nag-screen) que desaparecía si uno pagaba unos cuantos dólares al autor. De lo contrario se mantenía el molesto aviso, e incluso algunas veces (pocas) el programa dejaba de funcionar al cabo de unas semanas.

Más adelante la idea de shareware evolucionó, dando lugar al menos a tres categorías básicas: el freeware, el shareware propiamente dicho (y diversas variedades del mismo como el postalware o el adware), y los trials o versiones de prueba de programas comerciales.

Software Libre: más allá del freeware

Pero el freeware, a pesar de ser una propuesta interesante, puso de manifiesto un problema, especialmente cuando los ordenadores pasaron de ser objetos independientes y comenzaron a conectarse masivamente en red: un programa gratuito puede esconder funcionalidades “ocultas”, que permitan, por ejemplo, que el programa recabe información confidencial del usuario y la envíe por la red, o quizá que envíe spam desde la máquina huésped a miles de destinatarios, etc. Tras esta idea aparecen o se desarrollan nuevos conceptos como spyware, malware, troyanos, etc. Surge por tanto la idea de poder inspeccionar qué está haciendo realmente un programa, y para ello lo mejor es disponer del código fuente del mismo.

Junto con lo anterior, también surge la idea de que una comunidad de usuarios (eso sí, altamente tecnificados) podría, en caso de disponer del código fuente, modificarlo y adaptarlo a sus propias necesidades, es más, si estos usuarios / programadores ponen a su vez a disposición de la comunidad el código fuente modificado estarían posibilitando que nuevos usuarios mejorasen el producto, quizá a un ritmo tan acelerado que las compañías tradicionales no pudieran competir en calidad y creatividad.

Para dar soporte a estas ideas, sobre el año 1984 surge un nuevo modelo de licencia, la GNU Public License, que constituye el siguiente paso hacia la libertad. Este nuevo tipo de software se denominó software libre, y en la actualidad no sólo goza de buena salud, sino que en muchos ámbitos comienza a desplazar al software tradicional.

Naturalmente (y este es quizá uno de sus puntos débiles) la mayoría de los usuarios no posee los conocimientos suficientes (ni quizá el tiempo) como para involucrarse en el proceso de desarrollo, y consideran erróneamente que el software libre no es más que un cierto tipo de software gratuito que pueden usar a su antojo y provecho. Bueno, de hecho el software libre no tiene ni siquiera que ser gratuito, aunque en la práctica (casi) nadie paga por él, y menos en un contexto social como el español en el que la filantropía es como mucho un concepto que explica algunos acontecimientos históricos remotos.

A mi juicio, el concepto más importante del software libre es la obligatoriedad de poner a disposición de la comunidad el código fuente obtenido tras cualquier modificación y distribución de un programa libre. Ello hace que las empresas de desarrollo tradicionales queden virtualmente fuera del proceso, ya que para ellas el código fuente es su capital más importante. De hecho los propios programadores del mundo GNU hablan de “software vírico”, porque utilizar un fragmento de código libre “contagia” nuestro programa, de modo que también, automáticamente, se convierte en software libre.

Por ese motivo consideré en el polémico artículo GNU o el nuevo comunismo que el software libre respondía a una de las ideas motrices del comunismo: “la tierra, para el que la trabaja”, actualizada a nuestros tiempos, es decir, “el software, para el que lo trabaja”.

Código Abierto: más allá del software libre

Aún existe otra iniciativa todavía más libre desde el punto de vista del usuario: el código abierto (open source). En él, el código fuente es puesto a disposición de la comunidad para que pueda evolucionar sin ninguna limitación, ni siquiera la obligatoriedad de que el resultado de las modificaciones sea también código abierto.

El gran peligro de éste tipo de licencia, en opinión de la gente de GNU, es que una empresa tome el código de un programa construido por la comunidad y desarrolle a partir de él un programa propietario. Esto no es ni más ni menos que lo que ha hecho Apple con el Unix BDS, una versión de Unix de código abierto sobre la que Apple ha montado sus últimas versiones de MacOS. Desde el punto de vista de GNU, esto es una atrocidad, mas desde el punto de vista de la gente de Open Source es un avance más para el mundo del software. Para el usuario, evidentemente, la disponibilidad de un sistema operativo robusto, fiable y fácil de utilizar es una ventaja, y para Apple, sin duda, una decisión acertadísima, como todas sus decisiones recientes. Aquí Apple, el gran defensor de las soluciones cerradas incluso en hardware, se alía con el mundo del software abierto. Bueno, se aprovecha, dirán algunos. Aunque está claro que los usuarios ganan un sistema más robusto y potente que el anterior.

¿Modelo entre el Software Libre y el Código Abierto?

El inconveniente del software libre es que en la práctica está vetado para las empresas tradicionales y que la obtención de recursos económicos para sostener su modelo es complicada. Me pregunto: ¿no habría algún modo de poder anular en ciertos casos la cláusula de obligatoria redistribución de las modificaciones a condición de hacer partícipes a los desarrolladores previos de los beneficios obtenidos con la comercialización ulterior? Soy consciente de que sería muy complejo determinar quiénes fueron los participantes y en qué grado durante el desarrollo de un proyecto de software libre, pero este proceso se simplifica en el caso de software libre auspiciado por alguna fundación.

En este sentido, la licencia LGPL o la cláusula que Sun ha añadido a la reciente liberación de Java bajo licencia GPL permiten al menos el uso de librerías por parte de productos comerciales. Cada vez más especialistas opinan que el futuro del desarrollo informático son el modelo libre o el abierto, y seguramente tienen razón. No me sorprendería ver a Microsoft dentro de unos años exponiendo las bondades del software libre como modelo de negocio; no hay que olvidar que Microsoft terminó siendo una abanderada de Internet cuando inicialmente se propuso construir una red alternativa llamada “Microsoft Network”, que finalmente acabó siendo un portal más.

Herramientas de desarrollo propietarias

Hasta ahora hemos hablado de programas de usuario, pero las herramientas de desarrollo merecen un comentario aparte. A mi juicio, el peor error en el que puede caer un departamento de desarrollo informático es el de depender de un fabricante propietario de sus herramientas. A lo largo de mi experiencia profesional he visto caer torres muy altas, he visto desaparecer excelentes herramientas de programación o ser modificadas de una versión a otra de modo que el código fuente (el capital de la empresa) dejaba de ser útil para la siguiente versión, es decir, o uno continuaba con la herramienta antigua o sencillamente tiraba casi todo el código y empezaba de cero. Esto ha sido especialmente cierto para todo lo relacionado con los interfaces de usuario.

Y, sin embargo, este grave error se comete por doquier. En España, muchísimas empresas utilizan software de desarrollo de Microsoft, lo que, entre otras cosas, les limita la plataforma sobre la que ejecutar sus aplicaciones (Windows, Internet Information Server, etc). Todavía más sorprendente: ¡en muchos casos es el cliente de dichas empresas el que obliga a que se utilicen estas herramientas! Creo que en gran parte esto se debe al hecho de que la Informática es en España (único país de la UE en el que sucede esto) una profesión no regulada (¡señores políticos, cuándo introducirán atribuciones en el sector!) y por tanto las decisiones acerca de plataformas de desarrollo no recaen sobre informáticos. Es como si el cliente de un arquitecto le obligara para contratar sus servicios a que utilizara determinado programa de diseño o de cálculo de estructuras. Está claro que el arquitecto está más cualificado que el cliente para saber qué programa de cálculo de estructuras debe utilizar.

Y conste que siempre he defendido a Microsoft como la empresa que ha sabido llevar el uso del ordenador a los hogares, al usuario no técnico. Y aunque, como siempre se dice, sus tecnologías son “importadas” de otros, como Xerox, el mérito de la difusión corresponde a Microsoft. Pero llevar, a través de herramientas “facilonas”, el asunto del desarrollo informático al usuario no técnico me parece, sencillamente, una salvajada.

El desarrollo de software debería siempre apoyarse en herramientas sometidas a algún tipo de procedimiento de estandarización, sea una organización (ISO, ANSI...) o un proceso bien establecido (Java Community Process). Esto hace que los esfuerzos de desarrollo tengan una mayor extensión temporal. Tengo código desarrollado en Lisp, en C++ o en Java que sigue siendo útil después de diez, quince o veinte años. ¿Qué proyección temporal podemos esperar del código desarrollado en ASP o en las Microsoft Foundation Classes? ¿Que pasará si Microsoft se hunde en tres o cuatro años ante el fracaso con Windows Vista y el DRM? Bueno, no creo que esto suceda, pero como decía antes, torres más altas han caído.


Publicado originariamente en Computación creativa y otros sueños (Libro de Notas) en dos entregas: el 25/10/2006 y el 25/11/2006