redes sociales distribuidas explicado para no geek

Sin duda una de los productos más disruptivos en Internet en los últimos 5 años han sido las redes sociales. El motivo es que permiten comunicarnos con nuestros amigos/socios/clientes de una forma más cómoda que los métodos existentes anteriormente, generalmente la mensajería instantánea o el email, pues escribiendo en un sólo sitio nuestras actualizaciones de estado, que pueden ser desde contar como nos va la vida, lo que estamos haciendo, poner un link, una foto o un álbum de fotos (entre otras cosas). Anteriormente lo normal era que cuando teníamos algo que comunicar a cierto número de nuestros contactos les mandáramos un email, que es más intrusivo, sobre todo cuando el receptor no está interesado en lo que estamos diciendo.

Las redes sociales también suelen permiten crear grupos con los que organizar nuestros contactos y algunas permiten crear eventos para los cuales los asistentes pueden confirmar o rechazar asistencia. Además, algunas redes sociales (más notablemente Facebook) permiten a terceros desarrollar aplicaciones que pueden interactuar con el usuario, que pueden ir desde encuestas o juegos a cosas realmente útiles como generadores de estadísticas o grafos de nuestra red de contactos.

Una de las primeras redes sociales que consiguieron popularidad en los Estados Unidos fue MySpace, aunque en otros países triunfaron más otras redes como Orkut. Sin embargo, la gran ganadora de las carreras de las redes sociales ha sido sin duda Facebook. La razón por la que ha tenido tanto éxito no es obvia, aunque sospecho que tiene que ver con que la página en sí era mucho más usable que MySpace (que es un horror) y que tomaba la filosofía de que sólo compartíamos con nuestros amigos, al contrario que MySpace donde por defecto se compartía todo públicamente. No voy a incluír Twitter o Google Buzz como redes social en este artículo, a pesar de su popularidad carecen de algunas de las funcionalidades que hacen realmente útiles a las demás porque permiten sólo publicar actualizaciones de estado o enlaces.

Pero las tecnologías de Internet siempre están en movimiento y en 2009 y 2010 están surgiendo un nuevo tipo de redes sociales, las redes sociales distribuidas (también llamadas redes sociales federadas). La diferencia de estas redes sociales con respecto a las tradicionales como Facebook o MySpace, es que si en las segundas toda nuestra red de contactos, nuestras actualizaciones de estado, grupos, y en resumen toda nuestra información las mantiene el proveedor del servicio sin posibilidad de interconexión directa con otras redes (salvo de forma indirecta a través de herramientas de terceros), en las distribuidas, pueden existir varios proveedores distintos. En el caso de las redes centralizadas normalmente estamos hablando de compañías privadas y les interesa tener el mayor número de usuarios, evitando la migración hacia otros proveedores. Sin embargo la mayoría de tecnologías de Internet no funcionan con el modelo de proveedor único y servicios incompatibles sino con otro modelo que hoy se suele denominar federado.

¿Cómo funciona este modelo? Pensemos en un ejemplo sencillo: el correo electrónico. Aunque existen grandes proveedores de correo electrónico (GMail, Hotmail, Yahoo Mail) todos esperamos que si pepito@gmail.com envíar un email a manolita@hotmail.com el mensaje llegue perfectamente. Incluso podemos crear nuestro propio servidor de correo “@pepitoperez.com” sin mucha dificultad (sólo nos haría falta un servidor permanentemente conectado a Internet) y este servidor seguirá comunicándose sin problemas con los “grandes” o con otros servidores pequeños. Siguiendo con el ejemplo del email, a nadie se le ocurriría usar hoy por hoy un servicio de correo “fistromail.com” que sólo permitiera enviar mensajes a usuarios del mismo servicio. Sin embargo exactamente así es como funcionan las redes sociales mayoritarias en 2010.

Las redes sociales distribuidas que han estado surgiendo en los últimos dos años aspiran a crear tecnologías (protocolos e implementaciones) que permitan, sin perder las funcionalidades existentes, crear redes sociales constituidas por distintos proveedores pero que puedan comunicarse entre sí, de modo que a efectos del usuario es como si fuera una gran red única. Volviendo al ejemplo práctico, si imaginamos un futuro no muy lejano donde un protocolo se comunicación (el “idioma” que hablarían los distintos proveedores de redes sociales entre sí) se ha establecido como estándar (por ejemplo “OStatus” sobre el que hablaremos después), podemos tener una cuenta en el servidor de red social que proporcione Google, pongamos “pepito@googlesocial.com”, pero también podremos añadir como amigos a gente que tenga una cuenta en otros proveedores, por ejemplo “manolita@msnsocial.com”. Exactamente igual que el correo, como se puede ver. El usuario no tendría que preocuparse de saber si manolita va a un servidor u otro, sería el sistema el que se encargaría de forma transparente de saber que el contacto “Manolita” tiene sus datos en msnsocial.com, y comunicar con dicho servidor para recibir sus actualizaciones de estado, comentarios, eventos, y enviarle a su vez los de Pepe. También, de nuevo como en el caso del correo, Guillermo, que es un friki y además un paranoico de la privacidad, puede instarse en un servidor que tiene en su casa, un software de red social distribuida comunicando igualmente bien con el resto de sus contactos.

Si hemos entendido la explicación podremos ver que este nuevo tipo de redes sociales tiene varias ventajas sobre el modelo centralizado, siendo la principal que no dependemos de un proveedor único, de modo que si no nos gusta por cualquier motivo (porque va muy lento, porque se vuelve malvado y empieza a vender nuestros datos, por lo que sea), podemos cambiarnos a otro sin perder nuestra red social. Además al existir varios proveedores para un mismo servicio en el cual no pueden encerrar a los usuarios con incompatibilidades es de esperar que aquellos con interés comercial en tener el mayor número compitan entre sí ofreciendo mejoras reales como mayor velocidad, más funcionalidades o interfaces de uso superiores (exactamente como compiten los proveedores de webmail hoy en día.)

Imagino que ahora muchos de los que hayan leído ésto querrán probar ésto. La mala noticia es que hoy por hoy el idílico panorama que he relatado no existe. Sin embargo, se están produciendo avances rápidamente por varios frentes para llegar a ello. Es de esperar que al igual que han habido dos “guerras de navegadores” dentro de poco presenciemos una “guerra de redes sociales” donde existan varias redes sociales interesantes, algunas centralizadas (Facebook) y otras distribuidas pero usando distintos protocolos (es decir, no podrán hablar entre sí) de la cual es probable que salga un ganador. Estas guerras, en mi opinión, no son malas pues provocar que los productos involucrados mejoren a pasos agigantados. Y no creo que las redes sociales centralizadas sobrevivan a esta guerra salvo que se adapten al modelo distribuido.

De todas formas para hacernos una idea de como va la cosa, voy a poner algunas de las tecnologías en desarrollo que hoy por hoy me parecen más interesantes, pero antes es necesario hacer un pequeño inciso que intentaré mantener lo menos técnico posible.

Protocolos e implementaciones

Cuando en Internet hablamos de protocolos, nos referimos a una forma de comunicación entre dos máquinas para un fin concreto. Como un idioma que hablan dos máquinas entre si.

Internet se puede considerar que no es más que un montón de máquinas hablando protocolos entre sí para proporcionar distintas funcionalidades. Por ejemplo cuando cargamos una página web en el navegador, nuestro PC está usando varios protocolos para comunicarse con la máquina que le tiene que dar la web. El protocolo que se usa para decir “dame esta página web”, el de la WWW, se llama HTTP. Pero HTTP es un protocolo “de alto nivel” lo que quiere decir que debajo del mismo hay otros, muy especialmente el protocolo TCP/IP que es el más importante de Internet (aunque hay otros protocolos de bajo nivel.) Para entendernos, si estamos hablando con un amigo por teléfono, el teléfono sería el “protocolo de bajo nivel” mientras que el lenguaje español sería el protocolo de alto nivel; no es posible hablar a distancia sin el de teléfono, de igual modo que aunque tengamos el teléfono no podemos comunicarnos con nuestro amigo si no hablamos el mismo idioma.

Pero el protocolo en sí no es suficiente para que se establezca la comunicación; del mismo modo que un idioma no sirve de nada si no hay al menos dos personas que lo usen, un protocolo no sirve de nada si no hay un programa que lo utilice. En el caso de cargar la página web los dos programas que lo usan son, por nuestro lado, el navegador, y por el lado de la máquina que nos da la web, el servidor web. Sin embargo al igual que no existen dos personas iguales, no hay un único navegador (podemos usar Firefox, o Chrome o Explorer, entre otros) ni un único servidor web (aunque esto nos suene menos están Apache, Nginx, MSII, etc.) Podemos elegir diferentes programas, tanto nosotros como la persona que tiene el servidor que nos da la página, pero como hablan el mismo “idioma” (protocolo) todos pueden comunicarse entre sí. En este caso decimos que existen distintas implementaciones del protocolo.

Esta parrafada que acabo de soltar era necesaria porque cuando hable de redes sociales distribuidas, aunque nosotros como usuarios generalmente vamos a acceder a las mismas a través de una página web, tiene que haber un protocolo que comunique los distintos servidores que componen la red para que puedan intercambiar las actualizaciones de los usuarios entre sí. Si no hablasen entre si no serían muy distribuidas ¿verdad? Teniendo ya un protocolo de comunicación, ya no será necesario que los programas - las implementaciones - sean iguales, puede haber distintos programas creados por distintos programadores que a través del protocolo hablen entre sí.

Pasemos a ver, ahora sí, las implementaciones y protocolos de redes sociales distribuidas que me parecen más interesantes a día de hoy.

Diaspora

Protocolo: OStatus (ampliado)

Estado: inicial sin nada publicado

Diaspora tiene una historia interesante. Como muchas otras grandes cosas en el mundo de la tecnología (Mac, Windows y Linux, por ejemplo), ha surgido de la mente de unos chavales recién licenciados pero con muchas ganas de hacer cosas. Diaspora pretende implementar todas las funcionalidades que podemos esperar de una red social hoy en día (como Facebook) pero de forma federada, siendo la implementación software libre (en resumen muy resumido, con “las tripas a la vista” y por lo tanto facilitando contribuciones de terceros), y con un énfasis muy importante en la seguridad de las comunicaciones.

Los padres de Diáspora son cuatro programadores de la universidad de Nueva York que anunciaron con una serie de vídeos y textos su intención y crearon un proyecto en Kickstarter, una web para conseguir financiación a través de donaciones, con la intención de recaudar 10.000$ con los que poder trabajar intensamente durante el verano para crear una primera versión de su idea. La parte interesante es que su anuncio coincidió con una oleada de indignación pública contra Facebook (en el sector freak de la población, al menos) por hacer el enésimo cambio en sus políticas de privacidad y sus opciones por defecto de modo que en lugar de los 10.000$ que querían a día de hoy 17 de mayo llevan más de 170.000$. Con ese montón de dinero posiblemente no sólo consigan trabajar durante el verano como querían, sino que tendrán para vivir durante uno o dos años trabajando exclusivamente en el proyecto, por lo que es de esperar que se produzca un buen resultado .

Quizás la parte más interesante de Diaspora, y la que podría hacer que sea la solución que triunfe al final, es el interés público que ha causado; han salido en el New York Times además de casi todos los blogs tecnológicos grandes (Techcrunch, Boing Boing, Engadget, etc). Esto podría hacer que cuando el proyecto sea usable por el usuario normal, consigan un número inicial de usuarios interesante, algo extremadamente importante pues aparte de las consideraciones técnicas las redes sociales son más interesantes cuanto más gente tengan.

Los autores de Diaspora han dicho que quieren usar como protocolo OStatus, pero trabajando con los autores del protocolo para ampliarlo y mejorarlo (por ejemplo, imagino que querrán añadir cifrado fuerte en las comunicaciones.)

OneSocialWeb

Protocolo: XMPP (ampliado)

Estado: inicial con versiones alfa publicadas

OneSocialWeb es un proyecto creado por el grupo de I+D de Vodafone en el cual están trabajando varios programadores a tiempo completo. El proyecto ya publicó una versión de varias partes (el servidor, la interfaz web y alguna otra cosa), aunque actualmente es una versión muy previa ("alfa") que todavía no hace mucho. Como en el caso de Diaspora, su intención es lanzar una primera versión usable para el final del verano. El código fuente de su trabajo también está disponible como software libre, aunque ahora mismo no aceptan contribuciones externas (salvo informes de fallos), algo que han prometido cambiar en el futuro.

El protocolo que usa OneSocialWeb es el XMPP, que es el mismo que usa el sistema de mensajería Jabber (usado por Google Talk o el chat de Facebook, entre otros), pero ampliándolo con una serie de extensiones para cosas como actualizaciones de estado, solicitudes de seguimiento y demás, más propias de las redes sociales.

Elgg

Protocolo: OStatus (aún no implementado)

Estado: producto completo pero no federado; comunicación federada en fase inicial

Elgg es interesante porque de los tres proyectos que comento es el único que tiene una versión que podría considerarse terminada (aunque lo siguen mejorando) implementando casi todas las características que se pueden esperar de una red social (perfiles, flujos de actividad, microblogging, páginas, widgets, grupos, fotos, etc). Además permite usar plugins para añadir nuevas funcionalidades, de los cuales hay una colección bastante extensa (más de 800 ahora mismo).

El problema es que la implementación actual de Elgg no está federada, por lo que si bien podremos crear usando el software (también libre) una red social en una máquina nuestra, no podremos comunicar con otros servidores, con lo cual lo que tendríamos es una especie de “minifacebook” que puede ser interesante para empresas o centros educativos pero no como herramienta global de Internet. Ellos mismos venden un servicio de hosting con un coste mensual para crear nuestra mini red social fácilmente sin conocimientos técnicos.

Elgg está en esta lista, sin embargo, porque algunas personas están implementando sobre el código de Elgg la posibilidad de que los servidores puedan comunicarse entre sí. El protocolo que se está usando para esto es OStatus, con lo cual podrían comunicarse con servidores que lo implementen como Diaspora.

Contents