La lógica del software distribuido (o cuando el software libre no es suficiente)
A menudo tenemos la idea de que con exigir que el software que utilizamos sea libre ya es suficiente. Lo pensamos así porque hasta ahora, todo lo que necesitábamos es que el software fuera libre. Como todo el software estaba pensado para ejecutarse en una única máquina, al final muy similares a las que teníamos en casa, no nos preocupaban mucho algunos otros aspectos. Para resumir digamos que si un programa era libre ya nos parecía, en sí mismo, bueno (no hablo del sentido técnico, sino del ético).
Desde hace algún tiempo, cada vez más software está preparado para correr no en una única máquina, sino en redes enormes de máquinas. La nube. ¿Es suficiente que una aplicación sea libre? Creo que ya no. Necesitamos que una aplicación sea libre y que la podamos ejecutar en nuestras máquinas domésticas.
El software libre ha tenido tradicionalmente vocación distribuida: cada persona corriendo la aplicación por su cuenta, en su máquina, con independencia. El software libre desarrollado para la nube destruye esa lógica distribuida. El software es libre, sí, pero no podrás ejecutarlo en tu máquina con facilidad: necesitarás retocar mucho código antes de poder ejecutarlo. Claro que podría ser peor si ni siquiera tuvieras el código, pero desde luego la independencia que te da el software libre (llamémosle) tradicional, no es la que te dan todas esas nuevas aplicaciones libres pensadas para correr en granjas de computadoras que no puedes meter en el salón de casa.
Escribo este post y recuerdo un minipost que escribí hace un tiempo al hilo de Panda, un youtube libre ideado para que, supuestamente te montes tu propio youtube. Es libre, sí, pero sólo podrás ejecutarlo en Amazon S3. ¿Software libre preparado para una nube fuera de nuestro control? Mal camino llevamos si los desarrolladores de software libre olvidan la lógica del software distribuido.
La lógica del software distribuido. Desarrollar software no con vocación centralizadora sino con vocación distribuida. No repartir pescados, sino cañas de pescar. No un servicio web que te ate por los datos, sino un software que te dé la independencia que mereces. De forma análoga a la lógica del hardware distribuido, una red libre necesita un software libre y distribuido. Y del mismo modo que la lógica del hardware centralizado se utiliza como ventaja competitiva contra otras empresas, la lógica del software centralizado se usa como ventaja competitiva contra personas. Personas que ahora tienen acceso a un hardware cada vez más barato y que con un software libre con el precio por los suelos podrían hacer casi cualquier cosa sin apenas pasar por caja.
¿Dónde reside el problema del olvido de esa necesidad de software distribuido? Las grandes empresas van a arrimar el ascua a su sardina de forma irremediable: Microsoft, Google, Apple o Amazon van a intentar siempre centralizar la red y su tráfico. Luchar contra el hardware distribuido es un modo de conseguirlo. Y luchar contra el software distribuido es otro modo que tienen de avanzar en ese frente. En esta situación, si los desarrolladores de software libre no recuerdan dónde están las verdaderas condiciones necesarias para una red libre, la lucha se habrá perdido; aún que la batalla no haya comenzado.
Tiene gracia que sea precisamente ahora que nos quieran convencer de que abrir un blog personal en tu propia máquina ya no es cool. Tiene sentido como ataque frontal a una lógica de software web distribuido y pretende desestructurar la red así concebida. Acalpixca hizo un post de lectura obligada sobre este tema. Después de eso, David se pronunció en términos parecidos y Luis avanza otro matiz de esa propaganda anti-distribución: la difuminación de la identidad en favor de la identidad de marca corporativa de quien sea que te presta la nube.
¿Hay muchos desarrolladores de software libre cambiando esa percepción? A mi juicio, aún no. Pero estos tics ya comienzan a ser visibles. Los últimos desarrollos de la fundación mozilla, como Ubiquity, demuestran (como bien dijo Pere en su día) que aún son programan con mentalidad distribuida. Pero que todo comando demostrativo en Ubiquity fuera para usar redes como Twitter o la Wikipedia (servicios centralizadores por excelencia) es llamativo. La obsesión de Mozilla por integrar el navegador con aplicaciones web muestra una vocación algo errada sobre qué características debe tener una red y un software libre. Por supuesto que podemos migrar a aplicaciones web, pero eso es factible: tener una máquina en la red las 24 horas corriendo nuestras aplicaciones web libres para aplicaciones web (desde Roundcube para el correo a OpenGoo pasando por calendarios, pressmark para los marcadores).
Está claro que no olvidar la lógica del software distribuido es importante para que el software con el que se construya la internet que queremos tener dentro de unos años haga posible una red tan dinámica y libre como lo ha sido hasta ahora. Si nos dejamos cerrar en corralitos-nubes de los que no podemos sacar software que puede acabar siendo imprescindible para nosotros, la red que tendremos no podrá ser distribuida. ¿Qué internet quieres tener dentro de 10 años?
*** Relacionado