Facebook s'appuie très largement sur les technologies Open Source et le déclare sans détour. Sans elles, « nous ne pourrions pas exister », a rappelé ce week-end l'un de ses ingénieurs,  Jordan DeLong, en soulignant que le réseau social contribuait lui aussi à l'Open Source. Ses efforts s'illustrent notamment avec certaines parties de son infrastructure comme HipHop, qui transforme du code source PHP en C++, ou Thrift, qui permet de créer des services pour différents langages (C#, C++, PHP, Java, Perl...). Une autre contribution vient tout juste de s'y ajouter avec l'arrivée d'une bibliothèque de composants C++ baptisée Folly.

Il était en effet devenu difficile pour Facebook de verser dans l'Open Source des développements liés à ses services en C++ puisque ceux-ci devaient dès lors rompre les dépendances sur le code des bibliothèques internes qui n'avaient pas été publiées. C'est pour résoudre ce problème que la société de Mark Zuckerberg a décidé d'ouvrir à la communauté un ensemble d'objets en C++ réutilisables utilisés par sa plateforme. L'annonce en a été faite lors de sa conférence C++ qui s'est tenue dans ses locaux de Menlo Park (Californie), ce samedi 2 juin.

Des composants très ciblés, d'autres plus généralistes

 « L'objectif premier de cette 'folie' », explique Jordan DeLong en jouant sur le mot « Folly », est de créer une solution « qui nous permette de continuer à mettre en Open Source certaines parties de notre pile sans devoir trier pour réinventer certains de nos rouages internes. Et comme les composants de Folly s'exécutent plus vite que leurs équivalents disponibles par ailleurs, qu'ils sont simples à utiliser et complètent les bibliothèques existantes, nous pensons que les développeurs C++ y trouveront des éléments intéressants pour leurs propres projets », conclut l'ingénieur de Facebook.

Folly apporte des utilitaires que la plateforme de réseau social utilise très largement en production. Il s'agit de code qui fonctionne sur des milliers de serveurs pour les 900 millions d'utilisateurs quotidiens du système. Ce sont des services faiblement connectés, mais le point commun entre tous ces composants, c'est la haute performance en fonction des besoins, affirme Jordan DeLong. Certains de ces utilitaires sont assez spécialisés, d'autres ont un spectre d'application plus large.

Facebook ayant quelques centaines de développeurs travaillant principalement en C++, le code doit être facile à utiliser, pointe l'ingénieur. Il fait aussi remarquer que Folly vient compléter certaines bibliothèques C++ de très grande qualité, telles que Boost ou la Standard Library, auxquelles le réseau social recourt très largement. On trouve aussi dans Folly des alternatives à des bibliothèques existantes, résultant d'expériences où Facebook a identifié des inconvénients ou voulu moderniser certains éléments. Il offre notamment une autre  version du « vénérable » ScopeGuard.

La première livraison de composants de Folly sera complétée au fur et à mesure. Elle est détaillée sur Github.