De Facebook podemos decir mil y una cosas, comenzando por el siempre comentado asunto de la privacidad. De lo que pocas veces hemos escuchado hablar es de su lado abierto, su lado open source. Y es que mucho del software que la inmensa red social utiliza para poder funcionar es de código abierto. Es el mismo software que le permite atender a más de 500.000.000 de usuarios que juntos realizan millones de actividades de diversa índole. Ahora bien, quiero usar este artículo para comentarles un poco de cómo y cuánto software open source utiliza Facebook.

Facebook tiene un par de sitios dedicados al open source. El primero de ellos lista todo el que constituye su plataforma, infraestructura, así como sus herramientas de desarrollo. El segundo es un wiki donde están compendiados una buena cantidad de proyectos de código abierto basado en la plataforma de desarrollo ofrecida por la red social. Me concentraré en el primero.

Los desarrolladores de Facebook mantienen kits de desarrollo para Android y iPhone. Asimismo para lenguajes de programación como Python, JavaScript y PHP. En este mismo contexto, también han desarrollado herramientas para facilitar tareas de programación. Este es el caso de

  • Facebook Animation, una biblioteca JavaScript para crear animaciones basadas en la manipulación de CSS y DOM.

  • XHP, una extensión de PHP para integrarse con XML.

  • phpsh, un curioso shell ¡escrito en Python! para acceder a PHP.

La infraestructura de Facebook tiene que resolver un problema mayúsculo: la creciente escala del sistema. Pero, ¿qué significa esto? En términos de Tecnologías de la Información decimos que un sistema es escalable si sus dimensiones aumentan sin afectar negativamente la calidad de sus servicios. Así pues, Facebook -como cualquier el sistema- debe poder aumentar su cuota de usuarios, participantes, recursos, etc., sin presentar degradación en sus servicio. Twitter, por decir algo, tiene graves y conocidos problemas de escalabilidad representados siempre por aquella linda ballena blanca. (Por cierto, alguna vez hablé del open source en Twitter.

Y, ¿qué open source utiliza Facebook para escalar? Aquí van tres de vital importancia:

  • Apache Cassandra, un sistema de almacenamiento distribuido, sin punto únicos de fallas. Esto significa alta disponibilidad en los servicios.

  • HipHop, un software con una labor importantísima: convierte código PHP en código C++ altamente optimizado. Esto implica un considerable ahorro de recursos de cómputo, y económicos por supuesto.

  • Tornado, un framework para servidores web escrito en Python diseñado para mantener miles de conexiones simultáneas: ideal para servicios web en tiempo real. Esto supone un beneficio inmediato para los usuarios del sistema.

Por su parte, los ingenieros de Facebook contribuyen (convenientemente, claro) a proyectos de código abierto como Apache Hadoop, PHP, MySQL, Varnish (un acelerador del protocolo HTTP), entre otros. Sus contribuciones son positivas pues fortalecen y enriquecen los proyectos originales, y por lo tanto a toda una comunidad externa a Facebook.

Me parece que la conclusión es obvia: ese "monstruo" de internet en el que millones han convertido a Facebook no sería posible, técnicamente hablando, sin el software _open source_ que le sostiene. Claro, lo mismo aplica para Google, Twitter, y muchos más. En el fondo, la polémica red social no es sino una red de servidores LAMP (ya saben, Linux, Apache, PHP y MySQL), configurada como un complejo y gigantesco sistema distribudo: uno de los más utilizados del mundo.

Imagen: The Awesomer