Firefox perd ma mémoire

La barre qui déchire sa mère de Firefox est vraiment une barre trop-d-la-balle. Pour qui comme moi, l’âge, l’alcool et Twitter aidant, n’a plus aucune mémoire, c’est une béquille devenue au fil des années indispensable. J’ai abandonné les marques-pages, je ne note plus mes découvertes. Il suffit que je me souvienne avoir lu un truc quelque part pour que comme par magie la barre tip-top me retrouve instantanément la page. Enfin, elle me les retrouvait, parce que depuis quelques temps, j’ai l’impression qu’elle perd la mémoire. Elle ne se souvient plus de rien. Hier, je lui ai demandé une page que j’étais sûr d’avoir vu il y a moins d’un mois, et nada, pas moyen de remettre la main dessus :( Du coup j’ai sorti ma loupe, et ouvert l’historique. Beuh. L’historique était limité à quelques semaines. « Ouate de phoque ??? » ai-je demandé au chat. « Tu as sans doute installé une extension qui a modifié les paramètres de l’historique » a-t-il grommelé avant de se rendormir. Il me connait bien. Bon, en route pour voir comment est réglé l’historique. Euh, ça se trouve où ? Aucun réglage visible, j’ouvre le capot, cherche les clés de configuration de l’historique, en trouve quelques unes, les balance à mozillazine pour connaître leur signification, et finit par tomber par trouver un article de Marco Bonardo datant de janvier 2010 où il explique avoir mis en place un nouveau gestionnaire de durée d’expiration de l’historique. Auparavant, le nombre de jours de navigation conservés dépendait de plusieurs critères: les choix de l’utilisateur et des limites maximales (180 jours ou 40.000 URL) et minimales (jamais moins de 90 jours). Cela a été jugé trop complexe, et il a été décidé de ne plus utiliser qu’un seul algorithme qui décide de la taille optimale de l’historique, en fonction des caractéristiques du matériel, de façon à ce que le composant ne risque pas de ralentir le navigateur. L’inconvénient est que l’utilisateur n’a plus du tout de contrôle sur la durée de conservation des URLs qu’il visite. On peut certes toujours les supprimer, soit à la main, soit via la fonction de suppression des traces ad hoc, mais on ne peut plus fixer de limites maximale, par exemple si l’on souhaite qu’il conserve plus de trois mois d’activité. On ne peut même pas connaître les limites déterminées par l’algorithme1.

Les objectifs de cette modification étaient entre autre de réduire la confusion de l’utilisateur, en supprimant des options peu claires, et d’améliorer la réactivité du navigateur, en gérant mieux le nettoyage de l’historique, pour éviter des ralentissements. Le nettoyage est depuis transparent, les objectifs ont été atteints. Mais les utilisateurs avancés l’ont payé en perdant un peu de contrôle. Et sur des configurations matérielles aussi limitées que la mienne, la barre formidable perd tout son intérêt. Je lui avais confié la gestion de ma mémoire, elle l’a perdue, me voici tout dépourvu, mes URLs se sont envolues avant même que la bise (smack !) fut venue.

  1. en fait, quelques clés cachés dans about:config et préfixées par places.history permettent de connaître ces limites, et peut-être de les modifier, mais je ne suis pas sûr qui toucher soit sans risque;

Écrire

Ce carnet

Le principal motif de l’ouverture de ce nouvel espace était d’essayer de me débarrasser de la difficulté croissante que j’ai à écrire sur mon carnet principal. Parce que j’y ai mis la barre trop haute, je cherche à publier des articles relativement complets. Or j’ai beaucoup de mal à terminer un article. Toujours le sentiment d’avoir oublié quelque chose, qu’en y réfléchissant quelques jours de plus je vais penser à un détail supplémentaire important. D’où un certain nombre de brouillons que je ne publie jamais. Savoir qu’écrire un article va me prendre plusieurs heures est aussi un bon frein pour ne pas commencer. J’essaie ici de m’enlever ces contraintes : je publie des brouillons que je veux pouvoir faire évoluer dans le temps. L’utilisation d’un gestionnaire de versions, comme pour le code, permettant de suivre ces évolutions1. J’ai écrit en gros que c’est une zone réservée aux ébauches, pour m’autoriser les billets courts, les simples notes, pour essayer de retrouver le plaisir d’écrire sous l’effet d’une impulsion. Le pari est loin d’être gagné, il faudrait entre autre encore que je me laisser aller à écrire sur d’autres sujets que Mozilla, mais l’expérience est intéressante à mener.

L’autre raison était d’adapter l’outil à mes pratiques. Depuis plus d’un an à présent, mon éditeur de texte est Vim. Je l’utilise pour coder, écrire mes mails (dans Mutt), écrire tout court. J’y ai mes automatismes, et du mal à utiliser d’autres éditeurs. Écrire dans Vim puis copier/coller dans l’interface Web de Dotclear où je reprenais alors le texte pour corriger les soucis de mise en page n’était pas un flux très satisfaisant, l’actuel, basé sur Vim et Jekyll me plait davantage, même si je ne suis qu’à moitié satisfait de Jekyll2. Publier une nouvelle note est aussi simple que créer un fichier, y ajouter deux lignes d’entête, écrire, écrire, écrire, avec un formatage minimal (markdown, HTML pour les besoins spécifiques), enregistrer, et voilà, la note est en ligne. Penser de temps en temps à publier dans le dépôt local et à pousser vers sa copie sur Github. Le tout sans lever une seule fois les mains du clavier, sans perdre de temps avec la souris. Cette chaîne de production me satisfait davantage que la précédente.

Enfin un motif beaucoup plus utopique est d’essayer de voir ce que les licences libres peuvent faire de textes si on s’inspire du fonctionnement du logiciel. Jusqu’à présent, lorsqu’il s’agit de « littérature » nous sommes très timides dans l’utilisation des libertés que nous garantissent les licences libres. J’ai l’impression que la principale utilisation de ces libertés est la reprise d’un article, parfois légèrement modifié, dans un autre média. Mais pas l’utilisation d’extraits dans d’autres textes, ou la publication d’une version réellement modifiée, augmentée par exemple, dans un autre carnet3. Je vois passer peu de réelles œuvres dérivées. Github a introduit une nouvelle culture dans le développement de logiciels libre. Hier, le fork était généralement un signe d’échec, un acte violent. On hésitait à s’approprier à code, à lui faire prendre d’autres routes. Depuis Github, le fork est devenu au contraire le point de départ de tout chemin. Reprendre un bout de code pour le modifier, l’adapter, le faire croitre à son idée, est simple comme un clic sur le bouton « Fork ». En plaçant mes textes sur Github, j’aimerais encourager cet esprit. Que quelqu’un réponde à un texte en le forkant et publiant sa propre version4.

Je trouve l’aventure de Karl Dubost, François Bon et Jean-François Gayrard porteuse d’espoir pour le développement de la culture libre. Karl écrit des textes. Sa démarche est que (…) tout texte est le début d’une écriture. Avec la licence CC-BY, il rend toute personne libre de pouvoir réutiliser les textes, les transformer, les poursuivre, etc.(…). François et Jean-François diffusent des textes. Ils sont partis de la matière trouvée dans la branche pour créer deux nouvelles œuvres. Lesquelles en inspireront je l’espère d’autres. Je n’ai bien sûr pas la prétention de me comparer au talent de Karl, ou de qualifier de littérature les notes gribouillées sur ce carnet. J’essaie juste de réfléchir à ma modeste échelle à ce que l’esprit du libre pourrait apporter en soufflant ailleurs ailleurs que dans les allées de nos bazars logiciels.

Un manque

Le principal inconvénient de la solution technique choisie pour ce carnet est l’absence de commentaires. De moyen simple pour quiconque passe par ici de corriger mes conneries, ou partager une réflexion pour faire avancer le similiblink. Pas forcément d’engager la discussion, je ne suis vraiment pas doué pour ça, mais d’avoir au moins quelques retours, quelques réactions.

Si je n’ai pas encore ajouté de moyen de commenter les notes, c’est que je cherche à continuer dans l’expérimentation. Les mécanismes classiques de commentaires en ligne ne me satisfont pas. Avant de trouver une solution technique pour permettre des interactions autour des notes, je voudrais réfléchir sur le statut des commentaires, trouver un moyen de les gérer respecteux et de leurs auteurs, et des éventuels lecteurs.

Si le texte est une forme de code, est-il envisageable de renvoyer à Github et à ses fonctions sociales pour commenter ? Considérer les commentaires comme des revues de code ? L’idée ne me séduit guère. Elle confie les commentaires à un site externe (qui actuellement n’héberge qu’une copie de mon dépôt et ne possède pas de données supplémentaires). Oblige qui veut commenter à s’inscrire sur ce site. Et ne permet, je crois, les commentaires, que sur les commit et non sur les fichiers eux-même. Ce n’est ni pratique, ni acceptable, exit cette option.

Je pourrais faire appel à un service externe, avec une interface en JavaScript par exemple. Mais cela me rendrait dépendant de ce service, et je ne sais quel degré de contrôle ces services offrent (possibilité d’exporter les commentaires, de les supprimer ?). L’idée ne me séduit guère.

Je pourrais créer un formulaire, associé à une base de données textuelle, et un petit script qui… stop ! Je ne vais pas ré-inventer un n-ième CMS, l’envie m’est heureusement passée depuis quelques années.

Je pourrais… mais en fait non.

Aucune de ces solutions ne répond à un problème majeur des commentaires tels qu’ils sont gérés actuellement. Celui de la dispersion des contenus. Il est des gens dont l’essentiel de la réflexion en ligne est dispersée dans des commentaires à des centaines d’endroits. Une fois le formulaire validé, ils n’ont plus de contrôle sur leur prose, peuvent difficilement la corriger ou la supprimer s’ils la regrettent. Tout aussi difficilement l’archiver. Et qui s’intéresse à leurs écrits n’a aucun moyen aisé de les suivre. La situation a sans doute quelques avantages, mais elle ne me satisfait pas. On devrait disposer d’un moyen simple de conserver cette part de notre mémoire que composent l’ensemble des commentaires que l’on sème sur la toile. Comme l’on conserve une copie des messages que l’on envoie.

Le courrier électronique, voici peut-être une solution. Il se prête bien mieux aux discussions. Permet de les archiver. Gère les réponses, les fils multiples. Peut-être pourrais-je créer une liste de discussion ouverte, y poster un message pour chaque note publiée ici, et lier la note à son fil dans les archives de la liste. À bien y réfléchir, il est un format qui se prêterait encore mieux à l’exercice. Ce bon vieil Usenet. Créer un groupe pour ce carnet, un fil pour chaque note… Correctement paramétré, c’est sans doute la solution qui offrirait aux auteurs de commentaire le plus de contrôle, leur permettant par exemple de supprimer leurs messages.

Je ne suis pas encore fixé. Et très curieux de vos avis. En attendant mieux, les réactions sont bienvenues sur mon mail.

  1. il serait d’ailleurs pratique que Github fournisse un flux RSS pour chaque fichier du dépôt, ce qui permettrait de s’abonner pour être informé des mises à jour d’un texte.

  2. j’ai choisi Jekyll pour son intégration à Github — que je n’arrive d’ailleurs pas à utiliser pour l’instant, à cause de soucis d’url de base du site, mais c’est un détail. Mais il a un gros défaut : il utilise des technologies que je ne connais pas et n’envisage pas d’apprendre prochainement, Ruby par exemple. Difficile donc de lire le code lorsque je m’interroge sur le fonctionnement de certaines options, et encore plus de le modifier pour l’adapter à mes besoins. Il va falloir que je trouve le temps de regarder ses équivalents dans d’autres langages que je pratique davantages, comme par exemple DocPad en node.js;

  3. du moins dans le monde des carnets de geeks, j’espère que dans celui des carnets littéraires les expérimentations vont plus loin;

  4. l’idéal serait de ne pouvoir forker qu’un seul fichier, et non l’ensemble du dépôt, il y a encore du travail à faire par là;

Le nouveau gestionnaire de profils de Firefox

Que ce soit lorsqu’on développe des sites Web, ou juste pour surfer avec des réglages différents selon les sites, on peut avoir besoin d’exécuter simultanément plusieurs instances de Firefox, avec des configurations différentes.

Jusqu’à présent, on pouvait simplement le faire en rajoutant les options -no-remote et -ProfileManager au lancement du navigateur. La première indique que l’on veut lancer une nouvelle instance, et la seconde affiche au démarrage le gestionnaire de profils, qui permet de choisir sa configuration. Cette solution pourrait bientôt devenir obsolète avec l’arrivée, discrète, d’un nouveau gestionnaire de profils. C’est une application XUL autonome, qui offre quelques nouvelles fonctionnalités intéressantes. La suppression de l’interface de gestion de profils intégrée à Firefox est un débat qui dure depuis des années, ici et par exemple. Le but n’est pas tant de diminuer le temps de démarrage — l’impact lors de l’utilisation du profil par défaut est quasi nul — que d’externaliser un code ancien et complexe. La sortie du nouveau gestionnaire a été des plus discrètes, et personne ne semble plus travailler dessus actuellement. Ses nouvelles fonctionnalités méritent quand même d’être présentées.

La documentation sur MDN a été traduite deux heures après que j’ai fini ce billet, je vous y renvoie : le gestionnaire de profils

Pour mémoire, ce que j’écrivais hier soir :

Un peu de doc

Démarrage

Pour utiliser le nouveau gestionnaire, il suffit de le télécharger, décompresser l’archive et d’exécuter le programme profilemanager-bin (sous GNU/Linux et Moac) ou profilemanager.exe (sous Windows). Par défaut, il affichera les profil de Firefox, mais peut également gérer ceux de n’importe quelle autre application qui utilise xulrunner, comme Thunderbird ou SeaMonkey. Il suffit pour cela de préciser le nom de l’application au démarrage, par exemple profilemanager-bin seamonkey

Profils et version des applications

Le nouveau gestionnaire maintient deux listes: l’une de profils, l’autre des différentes versions de l’application qui peuvent être utilisées avec ces profils. Dans le cas par défaut, il va lister toutes les versions de Firefox et tous les profils Firefox qu’il détectera sur le système, et va permettre d’associer les uns aux autres, c’est à dire de choisir avec quelle version de Firefox sera ouvert chaque profil. Cela permet par exemple d’avoir un profil ancien pour faire des tests avec Firefox 3.6, un profil stable pour la version actuelle et un profil nocturne à utiliser avec les compilations nightlies.

Au premier démarrage, il va essayer de détecter automatiquement toutes les versions de Firefox installées sur votre système, mais vous pouvez bien sûr lui en indiquer d’autres en cliquant sur Manage Firefox version….

The New Profile Manager For Firefox

Les menus permettent de créer un nouveau profil vierge ou en copiant un profil existant, d’en supprimer un, et, nouveauté intéressante, de gérer des sauvegardes. Le dialogue de création offre une interface similaire à celui du gestionnaire actuel, permettant de choisir un nom et l’emplacement sur le disque où sera stocké le nouveau profil.

La liste des profils affiche par ailleurs deux colonnes supplémentaires, l’une permettant de choisir celui par défaut, la seconde indiquant les profils verrouillés car en cours d’utilisation.

Options de démarrage

Pour lancer l’application avec un profil, il suffit de sélectionner le dit profil, préalablement associé à une version de l’application, et de cliquer sur Start. Mais le nouveau gestionnaire permet d’aller plus loin en offrant quelques options intéressantes 

  • la possibilité de démarrer l’application avec un profil temporaire. C’est très utile par exemple lorsqu’on a détecté un bug. Pour s’assurer qu’il est causé par l’application et non un paramètre ou une extension du profil, il est conseillé de tester avec un profil vierge. Cette option crée un nouveau profil temporaire à une session;
  • démarrer Firefox en mode non-connecté. Par exemple si vous n’êtes pas connecté mais voulez utiliser des applications Web capables de fonctionner dans ce mode;
  • démarrer Firefox en mode sans échec, un mode où toutes les extensions sont désactivées, lorsque l’une d’entre elles empêche Firefox de démarrer normalement;
  • démarrer une nouvelle instance, équivalent à l’utilisation de -no-remote en ligne de commande, pour faire tourner simultanément plusieurs Firefox avec des profils différents;

Sauvegarde

Une autre nouveauté intéressante est la possibilité de sauvegarder et restaurer un profil. Deux modes de sauvegarde sont disponibles : des sauvegardes prises en charge par le gestionnaire, et des archives externes. Dans le premier cas, elles s’affichent dans la liste des profils, et un clic suffit à les restaurer. Dans le second, une archive Zip est créée, qui permet par exemple de restaurer le profil sur une autre machine. Le choix du type de sauvegarde ou de restauration se fait via les options du menu Backup.

Et donc ?

Je profite de l’occasion pour rappeler l’intérêt des profils de Firefox. Pour les développeurs Web, qui peuvent aisément tester leur site avec différentes versions du navigateur. Mais aussi pour tout internaute. Lorsqu’on surfe, on n’a pas forcément besoin des mêmes réglages, des même outils, selon les sites. Pour faire fonctionner le site de sa banque, mieux vaut généralement autoriser les cookies, Flash et compagnie. Par contre, pour surfer sur des sites commerciaux, vous pouvez avoir envie de bloquer les pubs. À chaque usage correspondent des réglages et des extensions. D’où l’utilité d’utiliser simultanément plusieurs instances de Firefox, avec des profils distincts. Pour ma part j’ai en permanence trois Firefox ouverts, avec trois profils :

  • l’un pour développer, avec toutes les extensions qui vont bien, Firebug et sa bande;
  • l’un pour surfer, avec les extensions de protection de la vie privée : Adblock Plus, Better Privacy, FlashBlock, Ghostery;
  • l’un pour les sites auxquels je me connecte, webmails, réseaux sociaux, etc;

Un avantage de cette solution est que même si je suis connecté à un réseau social, ce n’est pas dans l’instance que j’utilise pour surfer, donc les mécanismes de pistage du réseau, basés sur les cookies, ne peuvent pas me suivre à la trace d’un site à l’autre.

Pour conclure

J’ai testé ce nouveau gestionnaire, et le trouve bien pratique, malgré quelques défauts de jeunesse. Le principal étant à mes yeux qu’il se ferme après avoir lancé Firefox, obligeant à le relancer pour lancer un autre navigateur avec un autre profil. Le soucis est signalé et ne devrait pas être compliqué à régler. Malheureusement, le projet n’a l’air ni prioritaire, ni très important, et les commits sont rares. Si vous avez envie de commencer à bidouiller le code de Firefox sans vous attaquer à des modules trop complexes, corriger les quelques bugs du bidule ou y ajouter des fonctionnalités manquantes pourrait être un bon point d’entrée.

Le butineur qui joue du piano debout

Hier, dans le flux des piaillements, deux gazouillis se sont répondus. C’est d’abord Henny Swan qui a cité l’expert en accessibilité Steve Faulkner WAI ARIA support on Firefox is verging on excellent, the team there are excellent. Puis Nicolas Hoffmann a signalé un article sur le rendu des couleurs dans les navigateurs, article saluant les bons résultats de Firefox.

Bien sûr on peut trouver, avec raison, bien des défauts à Firefox. On peut le trouver un peu moins rapide et plus gourmand que l’un ou l’autre de ses concurrents. On peut trouver qu’il n’implémente pas assez vite les toutes dernières spécifications. Mais on ne peut certainement pas lui reprocher de ne pas chercher à offrir à ses utilisateurs la meilleure expérience possible, en fignolant les détails.

Alors bien sûr, le support de la version 4 des profils ICC, c’est un détail dont peu de gens se préoccupent, hormis quelques spécialistes de l’image, passionnés de photos ou autres. Bien sûr l’implémentation des fonctionnalités d’HTML5 rendant le Web plus accessible sera ignorée par beaucoup d’utilisateurs, considérée comme un détail. Mais pour quelques internautes, ce support est simplement indispensable pour pouvoir naviguer sur la toile. Ce sont peut-être des détails pour vous, mais pour moi ils veulent dire beaucoup, ils veulent dire que c’est un navigateur libre et qui joue du piano debout pendant que tous les autres sont au garde à vous. Et ça, c’est bien :)

Sans Titre

Extrait sorti de son contexte d’une réponse de Marguerite Duras dans un entretien en 1985, découverte grâce à Olivier Ertzscheid.

Quand on peut faire le tour du Monde en huit jours ou quinze jours, pourquoi le faire ? Dans le voyage il y a le temps du voyage. C’est pas voir vite, c’est voir et vivre en même temps. Vivre du voyage ; ça ne sera plus possible. Tout sera bouché. Tout sera investi. Il restera la mer quand même. Les océans. Et puis la lecture. — Marguerite Duras

Nous avons perdu le voyage. Nous sautons instantanément de points en points. Sans voyager. Et en sommes bien heureux. Le voyage n’apportait qu’un savoir amer.

Je passais dans une librairie aujourd’hui. Me conformant à l’injonction de faire des cadeaux à date fixe. Pincement au cœur en laissant mes yeux flâner sur les couvertures des poches. Ça doit faire douze ans que j’ai l’ADSL chez moi et ne lis quasiment plus de livres. Ils me manquent. Comme me manque la mer. Les livres sont une consolation. La mer une source sans fond de rêverie et de méditation. Un jour. Un jour j’arrêterai. Un jour j’arrêterai de courir. Un jour j’arrêterai de courir derrière les octets pour essayer de ne pas laisser le vieux monde, celui qui m’a depuis longtemps rattrapé et digéré. Pour ne pas laisser le vieux monde me distancier. Un jour j’arrêterai de courir et j’irai m’assoir sur une plage avec une collection de livres. Un jour…

Ce jour n’arrivera sans doute jamais. Le jour où je m’arrêterai, il n’y aura plus depuis longtemps ni livres de papier, ni mer qui ne soit souillée.

Fork me on GitHub