Afin de me familiariser avec les add-ons du navigateur Firefox, j'avais conçu une extension extrêmement simple : anchors-reveal, qui permette de lier à un paragraphe précis au milieu d'une longue page. J'avais déjà blogué à ce sujet. Trèèèèès utile quand on blogue sur un sujet technique.

Des add-ons qui proposent ce service, il en existait déjà une demi-douzaine, mais elles n'ont clairement pas été conçues dans une optique de simplicité d'usage. Le but du jeu était de faire une fonctionnalité le plus minimaliste possible : un bouton qui s'installe dans la barre d'outils et qui révèle les ancres nommées d'une page en superposant un lien direct.

Je voulais à la fois me frotter à l'écriture d'un add-on, mais surtout au framework (obsolète) cfx, que j'ai vite converti vers le framework (obsolète) JetPack qui facilitait l'écriture de ces add-on. Cela m'a aussi permis d'essayer le processus de validation de la communauté Mozilla, qui a été formidable, prévenante et qui aide vraiment à gagner en qualité de code.

Et par ailleurs, j'avais poussé mon code source sur mon repo github, ce qui m'évitait à devoir maintenir un repo git. Ce qui me permettait d'éventuellement profiter de quelques fonctions sympathiques comme la fusion de branches et un rapport de bugs.

Arrive la ré-écriture de Firefox

La Mozilla fondation s'est lancé dans un projet audacieux, nom de code : Quantum (la blague ne marche qu'en France). Objectif : reprendre de vitesse le Chrome de Google. Un retour en avant car le terme chrome désignait à l'origine l'interface de Firefox.
Le travail est titanesque : ré-écrivant des parties importantes de son navigateur, en passant à Rust, un langage bas niveau conçu pour éviter les bugs fréquents, et surtout en virant un nombre impressionnant de technologies dont les buts furent atteint par d'autres technologies standardisées. C'est le cas du vénérable XUL (le langage qui décrivait le chrome, l'interface graphique de Firefox), hélas,… mais pas tant hélas.

Mais cela voulait aussi dire abandonner Jetpack, et donc devoir faire un nouveau portage, dans le format Web-Extension.
Web-extension est standardisé par le W3C. Cela veut dire qu'un add-on Firefox est utilisable quasi tel quel par Chrome, Opera, bientôt par Edge et d'ici 10 ans, peut-être par Safari…
Que du bonheur !

J'ai donc ouvert un ticket sur le repo.
Ce bug, je me l'étais écrit comme mémo, en me disant que je ferais ce travail le week-end suivant où à la prochaine nuit d'insomnie.

C'est là que la magie de la communauté opère

À ma grande surprise, 6 heures plus tard, un individu du pseudo de Makyen, m'annonce qu'il a déjà effectué ce travail et qu'il a même corrigé quelques bugs.

Quelqu'un avait déjà fait le travail ! Je n'avais plus qu'à merger sa contribution, ajouter un script de packaging et l'envoyer sur le site des add-ons de Firefox.

Ben voilà, ce petit projet sans prétention, purement égoïste, se trouvait être utile pour d'autres personnes, au point que certains étaient prêts à me donner un coup de main pour le maintenir à jour. Pourtant, je savais que cela pouvait m'arriver, mais la surprise fait chaud au cœur.

Thank you a lot, Makyen !

Et n'oubliez pas : vous pouvez toujours aider un projet open-source. Pas forcément en codant, mais simplement en aidant au design, en écrivant la doc, des tutos, en aidant à répondre aux questions des gens perdus. N'hésitez pas !

Oh ! Une dernière chose !

Je suis actuellement sur Firefox Nightly (57), et je peux vous dire que d'ici deux mois, vous allez être décoiffés par le gain de vitesse de Firefox. Ils ont viré plein de vieux trucs, retravaillé une partie du reste, et le coup de boost s'en ressent !