Facebook a présenté hier une nouvelle version iOS de Messenger, l’une de ses messageries instantanées. La principale caractéristique de cette mise à jour est de simplifier l’app devenue très complexe au fil des années. Elle est aussi nettement plus légère et plus rapide, ce qui est la conséquence d’une réécriture complète de son code, comme le détaille le réseau social dans cet article technique.
Le « projet Lightspeed » a été lancé l’an dernier avec l’objectif de repartir de zéro et de créer une messagerie instantanée plus moderne. Messenger est née en 2011 et l’app n’a cessé de grossir depuis, à tel point qu’une réécriture complète a été lancée il y a un an. Réécrire totalement le code d’une app est toujours un projet dangereux, surtout si vous n’avez pas les ressources de Facebook.
Ce projet a mobilisé plus de cent ingénieurs à son plus fort sur l’année passée. Le résultat en valait sans doute la chandelle toutefois : la nouvelle app est constituée de 360 000 lignes seulement. Seulement ? Oui, car l’ancienne version nécessitait 1,7 millions de lignes de code… Résultat, la nouvelle app Messenger ne pèse qu’un quart du poids de la précédente et elle démarre deux fois plus rapidement.
L’article publié par Facebook détaille en des termes simples et faciles à comprendre certains choix effectués pour obtenir la nouvelle app, même si l’entreprise reste floue sur la technologie utilisée. On sait en revanche que l’app n’utilise plus de framework d’interface tiers et repose directement sur iOS et les fonctions proposées par Apple.
Sous le capot, Messenger reste une app complexe qui a nécessité la création d’une brique multiplateforme en C pour gérer l’interface à partir des informations fournies par une base de données SQLite en local, et à partir des serveurs de Facebook.
MàJ le 03/03/2020 11:53 : Messenger reposait déjà sur du code natif, ce n’est pas un changement de choix technologique (depuis React Native vers du natif) qui a justifié les gains liés à la réécriture. L’article a été modifié en conséquences et je vous présente mes excuses pour cette erreur d’interprétation (merci @sebastienlorber).