Depuis plusieurs mois (au moins), le premier démarrage de Firefox suivant une fermeture de session Linux m’accueille avec une page de restauration de session (due à un incident lors de la fermeture). Cela entraînait également la perte de données de certaines extensions. Après investigation, les causes étaient les suivantes:
- Certaines extensions rendaient la fermeture très lente (1 minute!): d’une part il y a un conflit entre « Privacy Badger » et « Self Destructing Cookies », et d’autre part « Tab Memory Usage » en lui-même pose problème.
- Lors de la fermeture de session, les gestionnaires de session des différents environnements de Linux (KDE, XFCE, Unity) laissent aux programmes un délai limité (7-15 s je crois) pour se fermer proprement avant de les tuer. Et donc dans mon cas, Firefox était tué à tous les coups. Ce délai n’étant pas configurable (sauf modification et recompilation), les seules solutions sont soit de rendre la fermeture plus rapide, soit de fermer manuellement Firefox avant de se déconnecter. J’aurais préféré que ce soit comme sous Windows: qu’après le délai, le système demande à l’utilisateur si il veut vraiment tuer les programmes restant.
Maintenant que j’ai désactivé « Self Destructing Cookies » et « Tab Memory Usage », le temps de fermeture de session est d’un peu moins de 10 s, ce qui reste toujours trop pour clore la session avec succès à tous les coups. - Les extensions utilisant l’API « Simple storage » (comme « Mes Kanjis ») sauvent sur disque leurs données à la fermeture du navigateur (même si les données n’ont pas été modifiées récemment !), et si le navigateur est tué à ce moment, les données peuvent être perdues.
Conclusions:
- Ça donne une explication supplémentaire à la volonté de Mozilla de normaliser les API des extensions (en plus de la sécurité et de la répartition sur plusieurs processus). Partir à la chasse aux conflits peut être fastidieux, et de nombreux utilisateurs tireront la conclusion que Firefox est un navigateur poussif. Une fois les extensions fautives désactivées, mon navigateur a connu une seconde jeunesse.
- Les délais en dur dans le code (aussi connu sous le nom de « nombre magique »), c’est mal. Mieux vaut avoir une valeur par défaut pouvant être remplacée par une valeur configurable (même si celle-ci n’est pas documentée).