Facebook a entièrement réécrit Messenger pour iOS

La nouvelle version de l’application iOS de messagerie mobile Messenger de Facebook, dont le déploiement va s’échelonner sur les prochaines semaines, est spéciale : elle a été entièrement réécrite, un projet nom de code Project LightSpeed.

Il est très rare que l’architecture d’une application soit revue, et tout le code réécrit, car les gains doivent être à la mesure des efforts.

Pour Messenger, c’était sans doute impératif. Lancée en tant qu’application indépendante de messagerie en 2011, Facebook n’a pas cessé de lui ajouter des fonctionnalités pour contrer les applications à succès des concurrents : service de paiements, filtres pour photos, Stories, GIF, et même conversations vidéo.

Le code et les serveurs nécessaires devinrent très complexes, tout comme l’interface graphique.

Comparée à la version précédente, l’application est composée de 360 000 lignes de code, soit 84 % de moins qu’avant. Résultat : elle occupe quatre fois moins de place qu’avant, et son démarrage est deux fois plus rapide, d’après Facebook.

Pour la réécriture, Facebook s’est appuyé sur les améliorations du système d’exploitation, fait l’impasse sur les cadriciels multiplateformes d’interfaces graphique et autres, développé des extensions natives en C pour ce qui doit être rapide, comme la gestion du réseau ;

L’entreprise a limité les interfaces graphiques, en réutilisant au maximum les écrans, et en les liant à des patrons dynamiques dont les données sont sauvegardées dans une base de données SQLite. Ainsi, au lieu de contenir 40 fenêtres différentes pour les contacts, en fonction du téléphone, de l’orientation verticale ou horizontale, du mode foncé ou clair, etc. la nouvelle application n’en contient qu’une, dont les variantes sont chargées dynamiquement à partir de la base de données SQLite.

SQLite n’est donc plus exploitée uniquement pour les données, mais aussi pour la logique de l’application. Facebook exploite les procédures stockées, et a développé la plateforme MSYS pour orchestrer tous les accès à la base de données.

Enfin, Facebook a développé un courtier pour tous les accès aux serveurs, de la même manière que MSYS est le courtier des accès aux bases de données. Le courtier est une sorte de passerelle universelle en charge de redistribuer les différentes tâches aux différents services de réseaux.

Project LightSpeed est un peu ironique, dans la mesure où Facebook est réputée pour développer cadriciel sur cadriciel sur cadriciel en javascript, et que nombreux sont les développeurs indépendants qui les exploitent, selon la philosophie « ce qui est bon pour Facebook est bon pour moi ».

Mais avec la programmation native, les procédures attachées et le rôle central de la base de données, on assiste à un véritable retour en arrière pour revenir aux paradigmes des applications traditionnelles pour les ordinateurs de bureau. Comme si les jeunes programmeurs découvraient ce que faisaient leurs aînés.