Retour d’expérience #1: extension Firefox

décembre 21st, 2008 · 1 Comment ·

Vous le savez peut-être, je suis ingénieur R&D et co-fondateur chez pearltrees. J’ai eu pour mission de prototyper et développer un grand nombre de couches applicatives. Entreprendre est une expérience particulièrement enrichissante et j’ai remarqué que les entrepreneurs partageaient souvent l’expérience humaine qu’ils avaient vécue. Et bien moi, j’ai décidé de partager mon expérience technique. Alors ça fait moins rêver les ménagères, mais ca intéressera les ingénieurs devant faire des choix de techno.

Voici le premier volet d’une série d’articles technos qui couvriront les différents langages que j’ai manipulé ces derniers mois. En évitant de plonger trop profondément dans la technique, je vous livrerais mes impressions, mes surprises et mes déceptions. Au programme: extension firefox, Zend Framework 1.5, Flex 3, Agilité, et peut être d’autres sous-topics.

Commençons par Firefox. Une expérience incroyable, la puissance de l’open source, la joie d’un développement multi-plateforme, XUL c’est la vie, mouai, un peu déçu quand même. Firefox, le navigateur connu et reconnu pour sa plateforme d’addons, ne facilite pas vraiment la vie des développeurs.

Pas d’IDE.

Même si Spket a comblé ce manque. J’aurais bien voulu avoir des outils un peu plus évolués pour debugging, le packaging et le déploiement. Créer un système de mise en production est vraiment digne du parcours du combatant. La génération des clés publiques / clés privées, le management des mises à jour, tout est compliqué et peu documenté. Mozilla pousse donc à utiliser sa plateforme de diffusion d’extension, impossible dans mon cas, notre application est encore privée.

99% javascript.

Ne vous trompez pas, développer une extension Firefox c’est développer un programme en javascript. Avec toutes les problématiques de débuggage que cela comprend. Si vous envisagez de développer ou faire développer une extension firefox, prenez un développeur senior en javascript.

Firefox 2.0 c’est bien, Firefox 3.0 c’est mieux, créer un plugin compatible entre les deux, c’est galère.

Dans mon cas j’ai du développer en double le gestionnaire de mot de passes ainsi qu’un programme de synchronisation multifenêtres. Et oui il faut synchroniser vous-même l’état de votre extension entre les différentes fenêtres 🙁 Dans les deux cas une solution « clean » existe dans Firefox 3 mais vous devrez utiliser différents « hacks » pour supporter Firefox 2.

Interopérabilité limitée.

Il suffit de jeter un œil dans la documentation de firefox pour se rendre compte que certaines fonctionnalités ne sont pas disponibles sous mac, sous linux ou pire, que les résultats obtenus sont parfois « différents ». Le composant permettant de créer un panneau d’option est particulièrement buggé. Vous en viendrez forcément à supporter un nombre limité d’environnements. En me battant j’ai réussi à faire tourner mon extension sur Firefox 2 (Windows, Mac, Linux).

Des extensions qui peuvent rentrer en concurrence

Pendant quelques temps mon extension n’était pas utilisable avec certaines autres extensions activées. Les autres extensions installées influençaient mon application (problème résolu, mais qui soulève bel et bien un problème de concurrence). Il est même impressionnant de voir le pouvoir que peut prendre une extension sur le navigateur. Désactivation d’autres plugins, récupération de mots de passes, tout est possible.

Reste un gros point positif.
C’est plus facile que créer un plugin IE en C++.

Tags: firefox · pearltrees


1 response so far ↓

  • Sébastien Ballesté-Antich // Déc 30, 2008 at 10:37

    Le déploiement est effectivement assez complexe à comprendre, il y a pas mal d’étapes et de controles à effectuer pour que le package soit valide au final. C’est une bonne idée de passer par un script ant pour éviter les fausses manip. Il manque un outil de déploiement simple à utiliser, et de préférence en ligne de commande.