Chez Xavier

Home / XULRunner : à suivre ou à éviter ?

Excuse me, I think I'm naked: on a wall of Barcelona.

Excuse me, I think I'm naked: on a wall of Barcelona.

Cette chronique "XULRunner : à suivre ou à éviter ?" a été co-écrite avec remouk aka Rémi, future star interplanétaire, et est initialement parue sur la Clever Link de Clever Age.

Alors que le phénomène AJAX était jusqu'alors le nec plus ultra de l'interface applicative Web, l'arrivée récente d'Adobe AIR et de Microsoft Silverlight nous amène à faire le point sur les technologies de type « client riche ». Quelle peut être la place de Mozilla sur ce marché ? La position et la stratégie de la fondation éponyme, à l'origine de deux des logiciels libres les plus utilisés au monde [1], sont-elles de nature à favoriser le développement de XULRunner et, par extension, du langage XUL ? Enfin, en omettant les qualités purement techniques de chacune des solutions du marché, quels sont les intérêts que l'on peut trouver à choisir les technologies Mozilla plutôt que celles de ses concurrents ?

Le langage XUL - prononcez « zool » [2] - est un langage apparu dans le cadre du projet Mozilla en 1999, et qui permet la création d'interfaces utilisateur de manière simple, portable et extensible. C'est, par exemple, le langage employé dans la gestion des interfaces graphiques des produits de la famille Mozilla (Firefox, Thunderbird, Sunbird, etc.) ainsi que de leurs extensions [3].

Depuis deux ans maintenant, la fondation Mozilla propose en outre l'emploi de XULRunner, une plateforme applicative intéropérable et un environnement d'exécution d'applications XUL. Si cette plateforme est aujourd'hui fonctionnelle et employée par de grands projets, certaines questions demeurent en suspens quant à son devenir, surtout avec les développements récents de concurrents comme Microsoft Silverlight ou Adobe AIR.

XUL et XULRunner, en langage humain

Clever Age a déjà eu l'occasion de s'exprimer au sujet de XPFE, en détaillant tous les avantages techniques de l'ancien toolkit employé par Mozilla. Depuis, un nouveau framework, nommé simplement « toolkit », a fait son apparition, et reprend dans les grandes lignes les mêmes technologies que XPFE, à savoir : XUL, Gecko [4], XPCOM [5] et XPInstall [6]. A ces technologies vient s'ajouter XULRunner, l'environnement d'exécution cible des produits frappés de la griffe Mozilla.

Schéma d'infrastructure de Mozilla

Concrètement, XUL est un langage qui permet de manipuler tous les éléments graphiques nécessaires à la création d'une application Desktop : fenêtres, barres de menu, onglets, listes triables, champs texte, boutons, sélecteurs de date [7], etc. Les possibilités offertes par XUL sont si riches, que le langage est notamment le coeur de l'interface graphique de Firefox, le navigateur phare de la fondation Mozilla, utilisé par plus de 100 millions de personnes dans le monde. XUL est donc un langage avancé de description d'interfaces graphiques qui, en plus de contrôles « classiques » que l'on trouve déjà dans XHTML (comme les champs texte, les boutons radio), permet d'employer des éléments plus évolués. Par exemple :

Sélecteur de nombre XUL Sélecteur de nombre XUL

Datepicker XUL Datepicker XUL

Barre de progression Barre de progression

Barre de réglage XUL Barre de réglage XUL

Liste triable XUL Liste triable XUL

Jusqu'à la période 2004/2005, les différents éléments de XPFE étaient directement mêlés au code des diverses applications produites par Mozilla. Firefox, jusqu'à sa dernière mouture stable, inclut ainsi directement dans son code Gecko, XPCOM, etc. Naturellement, l'objectif de conception de la plateforme et son découpage en différents composants visait à rendre ces différents éléments d'architecture modulaires et réutilisables. C'est la raison pour laquelle la fondation Mozilla a imaginé XULRunner, une plateforme applicative dont l'objectif global consiste à mutualiser les développements et à les partager entre les différentes applications qui l'utilisent. Ainsi, à la manière de la machine virtuelle Java, qui facilite les développements en prenant à sa charge des problématiques complexes (la sécurité, l'accès au système de fichiers, etc.), XULRunner pourrait permettre d'accélérer le développement d'applications Desktop portables, tout en démocratisant les technologies Mozilla et en facilitant leur emploi au sein d'autres produits que ceux publiés par la fondation.

La qualité technique de l'ensemble des technologies Mozilla n'est donc pas à remettre en question : elles s'appuient sur des formats et des méthodes de développement ouverts, et qui sont de plus, pour la plupart, des standards de leur domaine. Malheureusement, l'ensemble de ces technologies souffre de plusieurs maux qui peuvent faire hésiter au moment de les choisir pour effectuer des développements : voyons lesquels.

Une documentation disparate

En ce qui concerne le développement pur, les ressources documentaires ne manquent pas. Le Mozilla Developer Center, qui est la source de documentation officielle pour XUL et XULRunner, contient une grande quantité d'informations. Outre la référence de l'API et des différents éléments de XUL, il propose également celles des autres éléments de la plateforme, ainsi que des liens vers des ressources externes (mailing-lists, salons IRC, guides et tutoriels). Parmi les sources de documentation non-officielles, on distingue notamment deux gros sites communautaires : XulPlanet, qui fournit une documentation extensive (tutoriels, références, ...), ainsi que XUL-FR, qui propose des traductions françaises des documents officiels ainsi qu'un wiki, des tutoriels, ainsi que du support par le biais de forums et d'un canal IRC, ce qui reste intéressants pour les non-anglophones.

Cependant, la pénétration de l'univers XUL demeure longue et hasardeuse, malgré toutes ces ressources disponibles : certaines fonctionnalités, pourtant documentées, ne fonctionnent pas comme elles le devraient, voire pas du tout ; parfois la documentation est obsolète, d'autre fois le code n'est pas encore assez abouti pour répondre entièrement aux souhaits qu'elle exprime. Certains aspects de la plateforme sont très sensibles et difficiles d'accès (XPCom pour l'ouverture de fichiers, par exemple...), et sur certains sujets pointus, l'aide reste difficile à obtenir malgré l'effort communautaire. En raison de la relative jeunesse de XULRunner (qui n'a pour l'instant jamais été publié en version stable), la communauté des développeurs vraiment habitués à la plateforme est encore assez réduite et, du coup, les compétences sur le sujet restent rares et l'aide difficile à obtenir, ce qui nuit au potentiel de développement autour de la plateforme, malgré la qualité de son architecture technique.

Poussé par les développements rapides de Firefox et de Thunderbird, le Mozilla toolkit a rapidement évolué ces dernières années, rendant obsolète tout une partie de la documentation disponible sur Internet. Un des grands défis de Mozilla, désormais, est de parvenir à produire un effort de documentation et de communication à l'image de ses développements.

Des outils et un support manquants

Alors que Adobe AIR dispose déjà d'environnements de développement efficaces (par exemple Aptana), alors que c'est également le cas pour Microsoft Silverlight [8], présenté il y a seulement quelques jours, très peu d'outils permettent de travailler confortablement autour de XUL. Certes, il existe bien XULBooster, un plugin pour l'IDE libre Eclipse censé améliorer la productivité autour de XUL, mais cet outil est encore loin de répondre aux besoins réels des développeurs. Et c'est bien normal : face à des outils développés par des entreprises très puissantes - en dollars comme en compétences - le projet Mozilla reste un projet libre, porté par une communauté qui, même si elle est très réactive pour les problèmes de surface, dispose d'une densité de compétences moins importante dans les domaines de l'architecture applicative et de l'organisation. Cela s'observe également à d'autres niveaux ; par exemple, il n'existe que peu ou pas de support professionnel pour les technologies Mozilla.

Quel avenir pour XUL et XULRunner ?

XUL et XULRunner auront clairement des succès différents sur un avenir à moyen terme. Tout d'abord parce que l'emploi de XUL ne nécessite pas une compréhension de toutes les technologies de Mozilla, et ensuite parce que les efforts de la Fondation Mozilla semblent se concentrer sur ses produits phares, notamment Firefox. Les compétences autour de XULRunner étant encore rares, la fondation préfère les employer au développement de Firefox et de Thunderbird, plutôt que de diluer leur effort autour de technologies invisibles aux yeux du grand public.

Malgré ces difficultés, cependant, de nombreuses applications s'appuient déjà sur XULRunner, qu'elles soient développées par des organismes privés ou qu'elles fassent l'objet de développements dans le cadre de projets libres. Certaines sont encore en version « bêta » de lancement, d'autres sont des produits stables déjà utilisés à grande échelle : on peut citer entre autres les projets SongBird, Joost, Democracy Player [9], ChatZilla, etc., qui sont tous de belles réussites techniques.

D'un point de vue purement technique l'objectif est, qu'à terme, une seule instance de XULRunner soit employée de manière partagée entre différentes applications XULRunner, comme cela est fait pour la machine virtuelle Java. Ceci dit l'avenir demeure flou, même pour les produits édités de la fondation : après avoir un temps annoncé que les prochaines versions de Firefox et de Thunderbird [10] seraient basées sur XULRunner, la fondation Mozilla a fait machine arrière en mai dernier, expliquant qu'elle ne souhaitait pas retarder la sortie de ses nouvelles moutures pour le seul bénéfice de XULRunner. Pour renforcer cette incertitude, Mozilla a exprimé, par la voix de Mitchell Baker, le président de la Fondation Mozilla, le souhait que XULRunner devienne un projet totalement communautaire, pas forcément dirigé par Mozilla. La nuance est claire : Mozilla est prêt à fournir les efforts nécessaires pour que ses applications soient construites sur un même socle applicatif, XULRunner, mais pas à supporter l'effort de développement de XULRunner, dont le modèle de développement devrait devenir à l'avenir plus communautaire.

Évidemment, ce n'est pas la première fois que la maintenance et l'évolution d'un produit logiciel sont ainsi laissés au soin d'une communauté open-source. Ceci dit, avec l'arrivée de sérieux concurrents comme AIR et Silverlight (sans oublier OpenLaszlo), le manque d'envie et/ou d'énergie de la MoFo à développer XULRunner peut sembler inquiétant. Et au final, même si XUL a sans doute encore de beaux jours devant lui, on peut rester perplexe face au manque de promotion actuel de la plateforme. Avec XULRunner, la fondation Mozilla a toutes les armes pour remporter la guerre des rich clients, mais le manque de finition actuel de ses technologies et la quasi-absence de communication faite autour, sont deux limites majeures à l'adoption et au déploiement de XUL et de XULRunner sur le marché de l'Internet Riche. Si elle parvient à dépasser rapidement ces deux écueils, la MoFo proposera enfin une alternative crédible à AIR et Silverlight. En attendant, la manière dont Mozilla pousse ses technologies tient plus de la quête du Graal.

Notes :

  • [1] Il s'agit de Mozilla Firefox et Mozilla Thunderbird, évidemment.
  • [2] Selon Wikipédia, XUL se prononce « zoul » en anglais pour rimer avec cool, mais aussi en hommage au demi-dieu Zoul dans le film S.O.S. Fantômes.
  • [3] Les extensions permettent d'ajouter de nouvelles fonctionnalités au navigateur, comme par exemple la météo dans la barre d'état, un blocage des publicités des sites Web, des outils de développement Web, etc. Elles sont regroupées sur un site dédié : https://addons.mozilla.org/fr/firefox/.
  • [4] Gecko est le moteur d'affichage des logiciels Mozilla. Il a été conçu pour supporter divers standards ouverts du Web : HTML4, XHTML, CSS, XML, MathML, XForms, Javascript, SVG (partiellement à l'heure actuelle), XPath, XSLT, RDF, etc.
  • [5] XPCom est le système de composant multi-plateforme de Mozilla. Ces composants permettent d'atteindre et de modifier les fichiers, la mémoire, les threads, etc. Ils peuvent être manipulés en Java, Python, C++... Et surtout en Javascript.
  • [6] XPInstall est la technologie permettant l'installation standardisée et multi-plateforme des extensions. Un module d'installation est représenté par un fichier XPI (c'est un zip contenant l'extension et les informations d'installation).
  • [7] À partir de XULRunner 1.9 et Firefox 3 seulement
  • [8] Pour ce qui est du code, Microsoft s'appuie sur Visual Studio, tandis que pour la gestion des interfaces, Microsoft lance une nouvelle gamme de produits "Expression", que nous n'avons pour l'instant pas employée.
  • [9] Prochainement renommé « Miro », Democracy Player est un lecteur multimédia embarquant XULRunner, récemment financé par la fondation Mozilla.
  • [10] La version 3 de Mozilla Firefox est prévue pour l'automne 2007