Mokona Guu Center

Add-ons faciles pour Firefox

Publié le

Il y a quelques années, j'avais voulu créer un petit module pour gérer mes bookmarks dans Mozilla/Firefox qui étaient assez nombreux et difficile à classer. J'avais été arrêté par la complexité d'avoir un environnement de développement pour utiliser XUL.

Il fallait installer une version spécifique du navigateur, compilée d'une manière spécifique. Ça a probablement évolué depuis ce moment, mais j'avais laissé de côté l'idée de faire un module pour le navigateur. Je n'avais surtout pas vraiment de besoin : les modules existant me suffisaient et je ne gérais de toute façon plus mes bookmarks de la même manière.

Et puis il y a deux semaines, j'ai vu une nouvelle sur un SDK simplifié (lien mort non archivé). Et il se trouve que j'avais une idée en tête à ce moment là. J'ai donc un peu joué avec et cela a donné un module qui fonctionne sur le site Jeux sur un Plateau (archive).

Que dire donc de ce SDK ?

Mise en place

La mise en place est vraiment facile. Une archive à extraire sur le disque, avoir Python d'installé (une évidence) et un Firefox (forcément). Le démarrage un peu pénible car local au terminal dans lequel il est activé, mais cela ne pose pas tant de soucis que ça.

Utilisation

Tout se fait à travers l'utilisation d'une commande cfx. Celle-ci permet de créer un module (quasi) vide pour démarrer le sien. Pourquoi pas complètement vide ? Bizarre.

La commande permet aussi de lancer la documentation locale, les tests et avoir une instance de Firefox lancée dans un profile vierge avec juste le module d'installé.

Tests automatique

C'est un peu la déception. Peut-être que je m'y prend mal, peut-être que le SDK ne peut pas être utilisé sans d'autres outils. Mais les outils du SDK pour le test sont assez basiques et avoir un bon harnais de sécurité semble un peu complexe. À poursuivre.

L'API

L'API de ce SDK ne permet pas d'accéder à tout ce que présente le SDK complet. Mais il permet déjà pas mal de choses : injecter du javascript dans une page, afficher des pages HTML + Javascript qui permettent de dialoguer avec l'utilisateur, envoyer des notifications.

C'est simple à utiliser. Ça reste principalement du javascript avec ses défauts et il y a quelques petits trucs à comprendre au delà des exemples.

Quelques trucs

Dans la plupart des exemples qui dialogues avec des pages web, la communication se fait au travers d'un worker. Ça marche pour des exemples simples, mais il est en fait important de gérer qu'il peut y avoir plusieurs workers et que certains peuvent être détachés.

Et effet, dès que le code se complexifie un peu (et mon module n'est pas si gros que ça) on peut rapidement se retrouver avec des workers qui ne sont plus valides car la page a été fermée ou rechargée.

Ne pas aussi copier le style des exemples : tout en ligne, comme on voit souvent en javascript. Comme dans n'importe quel développement, une architecture maîtrisée vous gardera sur les rails.