¿Te has preguntado alguna vez porqué grandes empresas como Facebook o Google son tan activas en el mundo del software libre? ¿O cuál es su estrategia para decidir qué productos liberan como open source? En esta entrevista con Tom Occhino, jefe del equipo que desarrolla React en Facebook, se dan respuesta a estos y otros muchos temas relacionados con la estrategia Open Source de Facebook.

Facebook mantiene un buen número de proyectos open source (mirad también su cuenta GitHub) tanto de front-end como de backend, empezando por la base de datos Cassandra (hoy un proyecto Apache) y acabando con su último proyecto: React-VR (para facilitar la creación de contenido de Realidad Virtual con React), pero, ¿por qué esta inversión en open source?

¿Por qué Facebook contribuye a proyectos open source?

Según cuenta Tom en la entrevista, la primera motivación es que Facebook es un gran consumidor del software libre. De hecho, FB se construyó sobre la plataforma LAMP (combinación de Linux, Apache, Mysql y PHP). Esto nos motivó a contribuir de vuelta a la comunidad, primero a nivel de backend y luego ya cubriendo también proyectos más de cara al desarrollo de interfaces y aplicaciones cliente.

Pero hay otros beneficios claros para Facebook. Cada vez que decidimos liberar un proyecto, nos obliga a a mejorarlo (ej. documentación, separación clara del resto de infrastructura de FB,…) para dejarlo listo para la comunidad. Un tercero beneficio es que nos ayuda a encontrar buenos ingenieros que pueden ser muy buenos fichajes para FB y que se interesan por nosotros a raíz de estos proyectos open source. Una última ventaja, obvia, es que recibimos muchas contribuciones de desarrolladores y usuarios externos que nos ayudan a mejorar los productos en sí.

Una gran ventaja de tener proyectos Open Source para una gran empresa es la posibilidad de atraer talento Click To Tweet

¿Cómo se decide qué proyectos se liberan como open source?

Una característica de cómo se desarrolla en FB es que quién escribe el código es también el encargado de mantenerlo. Con lo que, si quieres que tu proyecto pase a ser open source tienes que comprometerte a mantenerlo y seguir contribuyendo a él, al menos hasta que consigas crear una comunidad alrededor del producto o encuentres a alguien interesado en hacer ese trabajo. Muy al principio llegamos a liberar proyectos esperando que alguien los descubriera y se encargara de ellos (el “build and they will come”) pero ya no.

En Facebook, quién la hace la paga: Si tu escribes el código, tu eres el Q/A Click To Tweet

Algunos proyectos ya están predestinados a convertirse en open source, sobre todo ahora que cada vez más contratamos gente apasionada por el open source. Después, debido a la gran movilidad interna en Facebook, estas ideas van “contaminando” a otros equipos y proyectos.

En cualquier caso, antes de que pase a ser un proyecto open source, primero tiene que ser usado internamente en Facebook y estar seguros que como mínimo a nosotros mismos nos gusta y nos es útil.

Roles para el éxito de un proyecto open source

El más importante, y del qué pocos hablan, es el de “comunicador”. Puede ser la misma persona que se encargue del liderazo técnico pero muchas veces es una persona diferente ya que se requieren habilidades diferentes.

Muchos de los problemas del open source vienen de la falta de comunicación. Click To Tweet

Después necesitas un grupo de personas apasionadas y comprometidas con el proyecto, hasta el punto de qué estén dispuestas a hacer todas las tareas ingratas que todo proyecto necesita (ej. contestar preguntas en Stack Overflow).

A partir de aquí, saber si un proyecto tiene éxito es bastante difícil mirando métricas objetivas. Por ejemplo, nosotros utilizamos técnicas de análisis de sentimientos para intentar entender la reacción de la gente. También el “net promoter score”: si has usado el producto una vez, ¿cómo de probable es que lo vuelvas a usar?.

Evidentemente, el grado de adopción del proyecto es también un factor de impacto, pero aquí más que el número total, nos interesa cuanta gente adopta el proyecto y nos da algún tipo de feedback o contribución.

Gobernanza de los proyectos open source de FB

Probablemente lo más difícil de todo proyecto open source es gestionar la comunidad (y conseguir construir una en primer lugar). Y una de las decisiones más importante es como gobernar esta comunidad.

Tom dice que quieren crear un entorno donde sea cada vez más fácil atraer nuevos contribuidores, sobre todo de fuera de Facebook. Y donde si alguien contribuye, se le reconozca, dé las gracias y que vea que se aprecia su contribución.

Pero al mismo tiempo, “confiesa” que cree que todo proyecto, por muy open source que sea, tiene que tener un núcleo duro que tenga una visión clara de donde quieren que el proyecto vaya y que las contribuciones que se ajusten a esa visión serán muy bien recibidas. No ve práctico, sistemas más abiertos, como en Ember  donde cualquier iniciativa, si gana suficiente apoyo popular es añadida a la visión estratégica del proyecto.

En OSS, hay que buscar un equilibrio entre la visión del proyecto y el escuchar a la comunidad Click To Tweet