Facebook vient de publier en Open Source une bibliothèque que le réseau social utilise en interne pour générer du code. Le framework appelé Hack Codegen est désormais à la disposition des programmeurs extérieurs à Facebook qui pourront l’utiliser pour automatiser une partie du travail de routine qu'ils doivent accomplir pour créer de gros logiciels. « Notre outil va permettre à des développeurs externes de bénéficier d’un meilleur niveau d'abstraction dans leur code et de construire des frameworks plus puissants », explique Alejandro Marcu, ingénieur logiciel chez Facebook, à propos de Hack Codegen.
Les frameworks se sont avérés extrêmement précieux dans le développement logiciel, car ils rationalisent la plupart des tâches de mise en oeuvre de bas niveau et permettent de passer beaucoup moins de temps à développer de nouvelles applications. Par exemple, le framework Ruby-on-Rails permet de réaliser des applications web rapidement, d’où son immense succès auprès des développeurs. Les frameworks sont déclaratifs, ce qui signifie qu’il suffit aux développeurs « d’écrire leur code en fonction de ce qu’ils veulent obtenir sans avoir à en détailler manuellement la procédure », rappelle Alejandro Marcu. Comme son nom l'indique, Hack Codegen travaille avec Hack, un langage de programmation similaire au PHP que Facebook a créé pour accélérer le développement de son site web. Par la suite, le réseau social a également livré Hack en Open Source afin que d’autres puissent l’utiliser.
Un modèle de code réutilisable
Avant Codegen, les ingénieurs de Facebook utilisaient un mélange de scripts et de modèles pour générer des morceaux de code capables de reproduire des tâches simples et répétitives, comme trouver la date anniversaire d'un utilisateur. « Cependant, cette approche par bloc présentait certaines limites », comme l’a encore expliqué Alejandro Marcu dans le billet où il détaille la technologie. Par exemple, la méthode ne permettait pas aux ingénieurs de Facebook de savoir de quels morceaux de code, le code résultant était dépendant. Ainsi, toute modification pouvait avoir des conséquences imprévues. Par ailleurs, les développeurs n’avaient pas la possibilité de définir de types de données pour les variables, une solution pourtant pratique pour assurer l'intégrité des données. La définition des types permettait également à l’éditeur de code de compléter automatiquement des extraits de code, une autre façon de gagner du temps. Mais malgré les modèles, les développeurs devaient encore écrire de nombreux composants supplémentaires manuellement, comme le code de test, ou le chargeur de données.
La bibliothèque Codegen simplifie ces opérations en permettant au développeur de créer un schéma qui servira comme modèle de code réutilisable et à générer toutes les fonctionnalités connexes nécessaires au fonctionnement de ce code, comme un chargeur de données et une connexion à la base de données. Grâce à la bibliothèque, l'utilisateur réunit tous les éléments nécessaires à une mise en oeuvre particulière et le logiciel fait le reste. Il peut générer des classes, des méthodes, des variables, des fonctions, des interfaces, des fichiers et d’autres blocs de code utilisés couramment.
Eviter d'écraser un code écrit manuellement
Le logiciel peut également dire si un code généré automatiquement a été modifié par un autre développeur. Cette information peut être utile, pour éviter qu’une mise à jour écrase un code écrit manuellement. Codegen réserve également une place dans le code généré pour accueillir des fonctionnalités supplémentaires qui ne pourront pas être remplacées. Hors de Facebook, la bibliothèque Codegen pourra servir à tout développeur qui a besoin de modifier régulièrement plusieurs morceaux d'un code base, pour créer une classe ou ajouter une constante. « Codegen va leur permettre de faire ces changements automatiquement et en une fois », pointe Alejandro Marcu.