Mozilla Add-ons Workshop

Samedi 20/09, je suis allé au Mozilla Add-Ons Workshop. Il s'agit d'un évènement organisé par Mozilla et l'association XULFR, qui a eu lieu à La Cantine. Je vous livre ici mes réactions suite à l'évènement, ainsi qu'un zoom sur ma sélection personnelle des présentations qui m'ont le plus marqué.

Cet évènement est le premier de ce type organisé dans le monde. Je dois dire que j'y ai trouvé de nombreuses présentations de qualité, le tout dans une ambiance très sympa et très geek. Toutes mes félicitations aux organisateurs et présentateurs, qui sont pour la plupart bénévoles. Voici le descriptif et le programme : https://wiki.mozilla.org/MAOW

Pourquoi suis-je allé à cet évènement ?

Je m'intéresse de près aux technologies web et la fondation Mozilla en est un acteur majeur.

Les conférences sur JavaScript ont aussi fortement contribué à ma décision, étant donné la place centrale de ce langage dans l'univers des IHM dites « riches » : XUL, AJAX, ou encore Flash/Flex qui utilise ActionScript, un langage de la même famille. Les enjeux autour de ce langage sont donc importants.

Les add-ons Mozilla permettent d'apporter de nouvelles fonctionnalités au navigateur, ou d'améliorer des fonctionnalités existantes. Ces add-ons se basent notamment sur XUL (prononcer zoul), une technologie de conception d'applications de type « desktop » c.a.d qui s'exécutent sur le poste client, mais qui se repose sur les langages du web – je reviendrai sur ce point dans cet article.

Les add-ons, appelés aussi extensions, ne sont pas utilisés exclusivement par l'internaute particulier pour personnaliser son navigateur. En effet, certaines enterprises ont adapté le navigateur à des applications web internes, ou ont réalisé des applications indépendantes du navigateur.

Voici, en vrac, quelques applications réalisées avec les technologies XUL en France : l'Encyclopédie Hachette Multimédia, la partie cliente de Courtanet (plateforme pour les courtiers en assurance), des applications internes chez Renault F1 Team, ou encore à la Gendarmerie Nationale. Voir http://xulfr.org/entreprises/ et http://www.mozpad.org/doku.php?id=map_of_the_mozpad_universe

Après le mot de bienvenue de Tristan Nitot (président de Mozilla Europe) et la keynote de Brian King de Mozdev - How extension developers pushed the boundaries and had fun doing it, nous avons déjeuné tous ensemble. C'était bien sûr de la pizza : la base du régime alimentaire du geek.

L'après-midi qui s'en suivi fût intense et passionnante. Les conférences étaient de natures très variées : certaines sous forme d'ateliers pratiques, d'autres moins techniques comme celle d'AdBlock Plus où Wladimir Palant, le créateur de cette extension, nous a donné son retour d'expérience sur comment gérer le succès et la communauté de contributeurs, et nous donne ses conseils de management de projet open source.

Atelier XUL

J'ai commencé mon immersion dans les technologies avec l'excellent tutoriel de programmation d'extensions et d'applications XUL, de Paul Rouget (association XULFR). Un atelier très pratique, avec des vrais morceaux de code dedans.

Je ne vous détaillerai pas dans cet article comment programmer une extension et une application XUL, vous trouverez des articles intéressants chez XULFR : http://xulfr.org/wiki/Extensions

Voici ce que je retire de cet atelier :

Les extensions Firefox se codent en utilisant 3 langages : XUL, CSS et JavaScript. XUL est un dialecte XML de description d'interface utilisateur : menus, boutons, etc. CSS est utilisé pour la description de la mise en forme. JavaScript est utilisé comme langage de programmation : gestion des évènements de l'IHM, implémentation des traitements de l'application. Il s'exécute sans les restrictions de sécurité que subit le JavaScript issu des sites web : on peut par exemple accéder au contenu du disque dur de la machine hôte.

On peut aussi embarquer du code natif C++ et interagir avec lui en JavaScript via XpCom, qui est le modèle de composant de Mozilla inspiré de CORBA et de Microsoft COM.

Il faut savoir que derrière XUL, il y a un socle d'exécution qui est indépendant de Firefox – son petit nom est Gecko. Firefox est lui-même programmé en XUL, de même que les autres applications Mozilla comme par exemple Thunderbird. Etendre Firefox via une extension consiste en fait à remplacer ou compléter une partie du modèle XUL de Firefox : ce principe s'appelle l'overlay.

Comme le socle d'exécution est indépendant, on peut réaliser une application XUL de type « desktop » qui s'exécute en dehors du navigateur. Pour permettre cela, un exécutable est nécessaire pour lancer cette application : il s'agit de XulRunner. Développer une extension Firefox ou une application desktop se fait donc de la même façon.

On voit qu'une des forces de XUL est de pouvoir faire une application desktop avec les compétences des développeurs web, puisque l'on se base sur les technologies qu'il manipule déjà : JavaScript, XML et CSS. La façon de programmer a effectivement beaucoup de points communs avec les applications web dites « riches » à base de HTML, CSS et JavaScript. Cependant, il y a tout de même une courbe d'apprentissage pour un développeur web : apprendre le dialecte XML de XUL, prendre en main les outils de développement de cette plateforme, et surtout avoir un bon niveau de JavaScript.

Autres avantages de XUL : le multi-plateformes, le système de déploiement de mises à jour du gestionnaire d'extension, et la séparation fond / forme qui aide à l'internationalisation et permet un changement de look&feel. Enfin, la plateforme XUL fait bénéficier le développeur de toute la puissance de Firefox pour réaliser ses applications internet : affichage HTML, fonctions de connexion réseau, etc. Et bien sûr, c'est open source.

Dans le monde Java et .NET, on bénéficie d'outils de développements intégrés. Ils offrent des fonctionnalités qui aident à la productivité : auto-complétion de code, visualisation immédiate de certaines erreurs de codage, etc. Pour l'instant, je n'ai pas vu d'équivalents pour XUL, en tout cas pas du même niveau.

Cependant, je n'ai pas encore expérimenté les dernières versions des outils de développement tels que Komodo ou XulBooster. Ce dernier permet de développer des applications XUL et des extensions dans Eclipse, bien connu des développeurs Java. Ce type d'outil me semble prometteur. XulBooster a fait aussi l'objet d'une présentation mais, malheureusement, je n'ai pas pu y assister.

La réalisation d'une extension Firefox nécessite des fichiers de configuration un peu complexes, et les erreurs que le développeur fait dans ce fichier peuvent parfois être très difficiles à diagnostiquer. C'est pourquoi il est nécessaire de se doter d'outils tels que Extension Developer's Extension. XulBooster et Komodo permettent également de faciliter ceci grâce à des wizards de création d'extensions.

A noter que Mozilla pense aussi à simplifier le développement d'extentions dans une future version de la plateforme : les fichiers de configuration (manifest, RDF...) seront plus simples.

Mentionnons aussi FUEL, une bibliothèque JavaScript intégrée à Firefox 3 qui facilite le développement d'extensions Firefox. Pour cela, FUEL fournit des classes simples à utiliser et qui portent des noms explicites, par exemple : Bookmark, Window, etc. J'ai dû malheureusement choisir entre la présentation de FUEL et celle des outils de tests automatisés.

JavaScript pour adultes

Une des présentations qui m'a le plus marqué est « JavaScript pour adultes ». Olivier Gambier nous parle des dernières évolutions du langage (notamment les closures et générateurs), de son futur, et nous fait un rappel des bonnes pratiques de codage et des outils de développement. le tout avec énormément d'humour !

Ce que j'en retire : avant cette présentation, je croyais connaître JavaScript. Chez de nombreux développeurs et architectes, JavaScript a mauvaise réputation. En réalité, JavaScript est un langage mal compris. Sa puissance est méconnue et il est en pleine évolution, tout en restant facile d'accès.

Cette présentation est tout particulièrement intéressante dans le contexte actuel, où les applications web modernes ont tendance à nécessiter du JavaScript plus complexe et en volume plus important qu'à l'époque du « web 1.0 ».

Lire également l'article de notre blog sur le futur de JavaScript : https://blog.octo.com/index.php/2008/09/07/137-le-futur-de-javascript-encore-incertain.

La suite aux prochains épisodes.

Je suis loin de regretter ma venue ! Encore toutes mes félicitations à l'équipe, qui a reussi à mettre en valeur ces technologies encore peu connues du monde de l'entreprise.

Dans un prochain article, je reviendrai plus en détails sur le thème « JavaScript pour adultes » : quelles bonnes pratiques de codage ? quelles sont les dernières évolutions du langage ? quels outils pour le développeur ?

Je parlerai également des tests unitaires automatisés de XUL et de JavaScript.

Enfin, je ferai un retour sur la conférence « sécurité des extensions Firefox » qui m'a interpellé.

Stay tuned !