Facebook : le Microsoft Word des temps modernes

Christophe Laporte |

Quelle est la pire application disponible sur iOS et qui est particulièrement répandue ? À cette question, on serait tenté de répondre Facebook. Au passage, nombreux sont ceux qui ont constaté une hausse de leur autonomie de leur smartphone en la désinstallant et en « restreignant » à la version mobile. Lorsque cette polémique était intervenue en octobre 2015, le réseau social avait promis de mettre au régime son application iOS.

Le souci, c’est que les régimes, cela ne fonctionne pas toujours. Peut-être qu’entre temps, l’application est devenue plus économe pour la batterie, mais en ce qui concerne son poids c’est une catastrophe. Alexandre Colucci, développeur chez Elgato, a une petite passion dans la vie : analyser le contenu de l’application Facebook à l’aide de l’outil GrandPerspective.

Le développeur a donc comparé la version 87 (la dernière en date) à la version 66 sortie en octobre dernier. À ce rythme, la version 100 devrait être disponible à l’été.

En l’espace de six mois, Facebook pour iOS a pris quasiment 100 Mo. La version 87 pèse sur un iPad Air 253 Mo, soit 88 Mo de plus que la version 66. Le poids de cette application est d’autant plus impressionnant que Facebook utilise l’App Slicing. Autrement dit, elle n’inclut que le code pour marcher sur cet iPad. Le code 32 bits n’est pas présent par exemple. Cet embonpoint a des conséquences. Par exemple, sur un iPhone (cela peut varier d’un opérateur à l’autre), il n’est pas possible de télécharger cette application en 4G. Ce qui est quand même assez dingue pour une app qui occupe la dixième place du classement des applications gratuites les plus téléchargées de l’App Store.

Fatbook....

Alors pourquoi Facebook est devenu si énorme ? Il y a tout d’abord une version majeure entre ces deux versions. La version 66 contenait un binaire monolithique de plus de 100 Mo, comme le montre l’illustration ci-dessous.

Il est à noter que sa taille mannequin n’était pas liée aux éléments graphiques de l’app qui ne pesaient pas plus de 5 Mo dans cette version. On ne peut pas non plus imputer la faute aux fichiers de traduction qui, au final, occupent assez peu de place.

L’application a recours à une foultitude de frameworks. Parmi ceux-là, Alexandre Colucci était étonné de trouver notamment le framework JSC framework, qui pèse à lui seul 3 Mo. À moins qu’il y ait une raison technique, Facebook pouvait tout aussi bien recourir au framework JavaScriptCore, qui est intégré au système depuis iOS 7. Sachant que Facebook requiert au minimum iOS 8, il n’y a semble-t-il pas de contre-indications.

Ce qu’il est intéressant de noter, c’est que 22 versions plus tard, la structure de l’application a beaucoup évolué. La taille du binaire principal est passée de 100 Mo à 19 Mo. Mais on constate que celui-ci est désormais accompagné de deux autres binaires : FBSharedFramework qui pèse 136 Mo et FBNotOnStartupPathFramework qui occupe 26 Mo.

Apparemment, il y a une volonté chez Facebook de rendre son application plus modulaire. Sans doute pour faciliter son développement et on l’imagine afin de pouvoir avancer plus facilement de front avec ses autres projets. Ce qui met par contre en émoi le développeur, c’est que Facebook n’a pas fait beaucoup d’efforts pour rendre son application moins gourmande. Il a trouvé énormément de fichiers dupliqués. Il prend l’exemple du fichier unetshallow_init.pb qui pèse 3,6 Mo et qui est répliqué trois fois.

C’est aussi le cas des différents fichiers contenant les images où l’on trouve un grand nombre d’images qui ont été dupliquées. Au total, selon lui, il y a plus de 40 Mo de données qui sont dupliquées. À l’échelle de l’App Store et vu la popularité de ce réseau social, il ne fait guère de doute qu’avec un peu d’optimisation, il serait possible de faire de sacrées économies de bande passante.

Alors, on serait tenté de penser que Facebook ferait mieux de mettre à jour moins régulièrement son application et de prendre un peu plus son temps pour optimiser son application. Mais c’est sans doute l’un des problèmes de ces mises à jour permanentes. En même temps, même si l’optimisation n’est pas forcément l’objectif numéro un de Facebook, il est intéressant de voir à quel point son application évolue en profondeur du moins dans sa structure.

DO_NOT_USE_OR_YOU_WILL_BE_FIRED

Lors de la publication de son billet consacré à Facebook v87, Alexandre Colucci est revenu sur une découverte qu’il avait faite dans la version 66 et qu’il avait oublié de mentionner. Il a trouvé de nombreux protocoles, méthodes et interfaces avec des descriptions assez explicites :

 @protocol FBDeprecatedAppModule_DO_NOT_USE_OR_YOU_WILL_BE_FIRED 
 @protocol FBLoginFacilitatingAppModule  
 @interface FBTimelineModule : FBNativeAppModule_DO_NOT_USE_OR_YOU_WILL_BE_FIRED 
 @interface FBNotificationsModule : FBNativeAppModule_DO_NOT_USE_OR_YOU_WILL_BE_FIRED 
 @interface FBProductionLockoutModule : FBNativeAppModule_DO_NOT_USE_OR_YOU_WILL_BE_FIRED 
 @interface FBSearchModule : FBNativeAppModule_DO_NOT_USE_OR_YOU_WILL_BE_FIRED 

Ne les utilisez pas ou vous serez viré ! Le message a le mérite d’être clair.

Tags
avatar en ballade | 

Au prix de la mémoire chez Appl€, it sucks!

avatar iSimon12 | 

C'est quoi un binaire ?

avatar marc_os | 

@iSimon12 :
Un « binaire » c'est le résultat de la compilation du code écrit par le développeur. Il décrit la suite des opérations à effectuer par le processeur, d'une façon que celui-ci comprend directement.
En d'autres termes, c'est une traduction du code (du texte) dans le langage binaire du processeur.

avatar iSimon12 | 

@marc_os

Merci ?

avatar Hugualliaz | 

Excellent comme article ! Il y a d'autres problèmes au delà des applications qui prennent de la place : celles qui pèsent 20Mo au départ et avec lesquelles on se retrouve avec 300Mo de données après, sans possibilité de vider le cache...

avatar sirpheles | 

@Hugualliaz

Ce serait pas mal du tout effectivement. Pas sur que le problème soit lié aux applications ceci dit. Il me semble que c'est déjà possible sur un appareil Android.
Ne serait-ce pas une limitation iOS qui oblige à désinstaller puis réinstaller l'application ?

avatar oomu | 

sur ios, les développeurs d'applications ont tout ce qu'il faut pour gérer le cache de leurs traitements, laisser les utilisateurs le vider, ou informer ios de ce qui est jetable en cas de nécessité.

avatar Mrleblanc101 | 

@Hugualliaz

C'est un faux problème... la cache de vide quand nécessaire. C'est bien avoir 10Go de libre sur l'iPhone, mais si toute les apps en souffrent en devenant super lente, ce n'est pas très pratique

avatar frankm | 

Clips par exemple, la nouvelle app d'Apple

avatar Remords Sincères | 

Y'a un moyen de savoir ce que font les protocoles marqués "do not use or you'll be fired"?

avatar byte_order | 

Ils envoient un SMS au développeur de l'application avec "YOU'RE FIRED" comme texte.

avatar Lestat1886 | 

C'est marrant je me faisais la même réflexion hier

avatar pga78 | 

Ceux qui montent leur PC eux mêmes sont dans les 28% autres ...

avatar jb18v | 

Clair que 300mo à chaque fois c'est lourd.. Bon on ne télécharge pas réellement tout ça, mais Messenger c'est la même histoire ^^

Certaines applis permettent de vider le cache (Tumblr) mais sinon il vaut mieux effacer et réinstaller :/

avatar SimR69 | 

Petit détail, une faute ne s'ampute pas. Elle s'impute.

avatar byte_order | 

Sauf chez les yakuzas.

avatar iPop | 

@byte_order

??? excellent

avatar zoubi2 | 

@byte_order

Bien vu !!! :-)

avatar ijimax | 

@byte_order

Même de chez les yakuza on peut être viré ;)

avatar donatello | 

Là où facebook fait fort en revanche c'est sur l'appli Apple Watch qui est vraiment hyper légère.

C'est impressionnant.

avatar Tomtomrider | 

@donatello

C'est avoir Facebook sur son Apple Watch qui est impressionnant

avatar donatello | 

D'où l'ironie de mon message.

Faut tout expliquer, c'est triste.

avatar davidtuga | 

de temps en temps je dois la désinstaller et réinstaller car elle pèse plus d'un giga

avatar spece92 | 

Excellent article

avatar BaLo | 

Quand voit la numérotation des versions, y'a déjà de quoi se poser des questions légitimes sur le sérieux de cette appli !!

avatar marc_os | 

@ BaLo
Il n'y a aucune conclusion de ce genre à tirer de la numérotation des versions.
Quand tu as des "nightly builds", le numéro de build (parfois utilisé comme numéro de version) est incrémenté chaque jour ! Cela ne veut pas dire pour autant qu'une version est publiée chaque jour...

avatar EBLIS | 

Il est où Microsoft dans l'histoire ?

avatar heero | 

hmmmm je vois pas trop le lien avec Word :-/ par contre MSN Messenger aurait été plus judicieux ... :-)

avatar marc_os | 

@ heero
Tu n'as sans doute pas connu par exemple le temps où Microsoft avait publié Word sur une vingtaine de disquettes alors que le CD existait déjà !

avatar thebarty | 

@marc_os

Il y a aussi une une version de Word ou la taille des docs augmentait à chaque modification. l'application intégrait dans un même doc toutes ses versions... avec les gros risques de confidentialité qui vont avec.

avatar weagt | 

Cette taille énorme est d'autant plus inexplicable que le but principal de cette App est d'afficher des contenus qui sont stockés en ligne.
Qu'un jeu soit gros c'est normal, il y a les graphismes, les sons... Mais une App de consultation de contenus....

avatar Elmediterraneo | 

Il faut la reinstaller chaque semaine les comptes sont sauvegardés pas besoin de réécrire son mot de passe.

avatar macosZ | 

Moralité j'utilise Friendly.

Pas de pub. une appli pour messenger et facebook. Moins de data et de mémoire consommée

avatar Mécréant | 

@MacosZ:

Qu'en est-il de la sécurité des données sur une appli comme friendly? Je limite déjà au maximum ce qui passe par Facebook, mais est-ce que friendly ne risquerait pas de se "servir" au passage?

avatar yasuo87 | 

Ce serait bien que iOS donne la possibilité de vider le cache des apps comme sur Android

avatar marc_os | 

Ça ne changerait rien, car il ne s'agit pas de cache mais de frameworks énormes et certainement utilisés pour seulement quelques fonctions...

avatar quentinf33 | 

@yasuo87

Vider le cache manuellement, surtout pour un app que l'utilisateur va souvent ouvrir, est plutôt néfaste pour l'autonomie et la mémoire SSD de l'appareil, puisque ça implique de recréer des fichiers nécessaires à chaque démarrage de l'app, et en plus de la ralentir à chacun des lancements. C'est pourquoi iOS va s'en charger tout seul si l'app est programmée pour.

avatar gabou009 | 

Il est justement là le problème. Facebook grossit à chaque utilisation et peut facilement et très rapidement prendre plus d'un gigaoctet. Sur un iPhone de 16Go, c'est problématique. Twitter et Snapchat offrent maintenant la possibilité de supprimer les caches non-essentielles, comme les images sauvegardés au fil du temps.

Pourquoi Facebook n'offre pas cette possibilité? 1Go de pris pour une app qui est une fenêtre vers du contenu sur des serveurs, c'est ridicule.

avatar Mike Mac | 

Aux antipodes de cette obésité flagrante, c'est amusant de constater que Facebook a développé un version light de son logiciel pour les Android de faible capacité / puissance des pays émergeants.

18,50 Mo pour Facebook Lite (je viens de vérifier sur une tablette 7" entrée de gamme)...

Loin des 253 Mo sous iOS et probablement la même chose pour la version lourde sous Android...

avatar MLV | 

Regardez le nombre de version de Messenger et BBM... Vous allez trouver que Facebook c'est des petits joueurs...

avatar Paquito06 | 

Mon app FB fait 1.89 Go. Le cache ne se vide pas souvent... la derniere màj FB v87.0 faisait 391Mb sur l'app store. Tout cet espace ne ralentit en rien l'iPhone heureusement. Quant a la batterie, elle n'est pas impactee car je n'ai aucune notification, refresh ou widget qui vont avec.

avatar noodles2a | 

Sur Android les maj d'application type Facebook, Messenger, Snapchat etc c'est tout le temps 8 mo si qqun peut m'expliquer ?

avatar sachouba | 

@noodles2a :
Sur Android, les mises à jour sont "intelligentes" : seuls les fichiers de l'application qui ont été modifiés sont téléchargés, pas l'application complète.

avatar comvis | 

Encore une raison pour laquelle jai desinstaller le bousin

avatar johndoo | 

Faites comme moi , utiliser de temps en temps iTrans (Mac/Pc) c'est une merveille pour gérer et nettoyer à fond son iDevice! Mais j'avoue avoir effacer Facebook depuis un moment!

avatar Lecorbubu | 

Ça fait maintenant plus d'un an que je me suis débarrassé de cette appli et quand je lis ça je me dis que ce n'est vraiment pas plus mal.

avatar mikerec | 

Super article ??????

CONNEXION UTILISATEUR