Geckozone est un Club Unesco

XUL et XULRunner : fonctionnement de l’interface des logiciels Mozilla

Profil(s) : Tous
Date : 12 septembre 2008
Auteur : Omnisilver

Le XUL est un langage créé par Mozilla pour écrire l’interface de ses logiciels, et XULRunner est un logiciel autonome fournissant un environnement d’exécution à XUL.

1. L’interface utilisateur des logiciels Mozilla : XUL

Le XUL, ou XML-based User interface Language (prononcez « zoul ») , est le langage utilisé par Mozilla depuis 1998 pour écrire l’interface graphique de ses logiciels [1].

Ce nom a été choisi en référence au film S.O.S. Fantômes (Ghostbusters, 1984), dans lequel l’esprit d’un ancien demi-dieu sumérien appelé Zuul possède le corps de Dana Barrett (incarné par Sigourney Weaver) et déclare : « There is no Dana, only Zuul. » (Il n’y a pas de Dana, seulement Zuul.) Puisque XUL utilise le XML pour définir les interfaces [2], les développeurs ont adopté le slogan « There is no data, there is only xul. » (Il n’y a pas de données, seulement xul.)

1.1 XUL : dix ans de loyaux services !

Ce merveilleux langage a été adopté par Netscape en 1998 pour développer l’interface de son projet « Netscape 5 » qui deviendra la base de Mozilla. Netscape voulait un langage :

  • basé sur des standards existants (XML, HTML, CSS, DOM, Javascript), afin de le rendre facile à appréhender pour un développeur, et parce que Gecko interprétait déjà certains de ces langages.
  • indépendant du système d’exploitation, afin que le même code fonctionne sous Linux, Mac et Windows.
  • séparant clairement le fond et la forme, afin de faciliter son internationalisation [3] et le changement de thème.
  • dédié à l’écriture d’interfaces utilisateur, afin d’avoir un code simple et sémantique.

Or, un tel langage n’existait pas à l’époque où l’équipe décide de réécrire entièrement le navigateur qui deviendra Mozilla 1.0 en 2002. (GladeXML, langage similaire utilisé par GTK+ date de la même époque.)

1.2 Exemple concret de code XUL

Concrètement, le XUL est un langage ressemblant au HTML, mais destiné à écrire des interfaces graphiques pour les logiciels et non des pages web. Ainsi les balises sont par exemple :

  • textbox pour afficher une zone de saisie de texte
  • listbox pour afficher une liste
  • grid pour afficher une colonne
  • etc.

Voici un exemple de code XUL pour créer une petite fenêtre de dialogue :

<vbox>       
       <label value="Entrez votre nom" accesskey="e" control="myName"/>
        <textbox id="myName"/>
        <button label="Annuler" accesskey="n"/>
        <button label="Ok" accesskey="O"/>
</vbox>

Et son résultat :

PNG - 4.8 ko
Exemple d’interface écrite en XUL

1.3 Logiciels écrits en XUL

Le XUL est naturellement utilisé pour tous les produits Mozilla : Firefox, Thunderbird, Seamonkey, Sunbird, etc.

PNG - 153.5 ko
Interface de Firefox écrite en XUL

Cependant, il est également utilisé par d’autres logiciels, notamment :

  • Chatzilla, un client IRC.
  • Songbird, un lecteur de musique.
  • et bien sûr toutes les extensions pour Firefox et les autres logiciels Mozilla.
  • Etc.

2. Affichage du XUL : XULRunner

Afin d’être affichées à l’écran, les applications écrites en XUL nécessitent un moteur XUL, qui a pour rôle de lire le code, l’interpréter, puis l’afficher à l’écran : c’est Gecko.

Actuellement, ce moteur de rendu est inclus dans le code de chaque logiciel Mozilla, mais il est également disponible en produit autonome (ou stand-alone) : il porte alors le nom de XULRunner.

2.1 Les produits Mozilla et XULRunner

Firefox 3 et les prochaines applications Mozilla à venir permettent aux autres applications d’utiliser leur moteur XULRunner.

L’intérêt est qu’il est alors possible d’utiliser un même XULRunner pour afficher plusieurs logiciels écrits en XUL, de la même façon que fonctionne la machine virtuelle Java.

Par exemple, si Firefox 3 est installé sur votre ordinateur et que vous lancez une application utilisant ce XULRunner (par exemple Prism ou une future version de Pencil), alors le XULRunner de Firefox 3 peut se charger de l’affichage de Prism.

Les bénéfices apportés par ce mécanisme sont :

  • Pour l’utilisateur : économie de ressources (bibliothèques et espace disque), car auparavant chaque application embarquait son propre moteur XUL.
  • Pour les développeurs : simplicité, car pour les applications écrites en XUL (Songbird, Miro, Sunbird, etc.) il sera plus simple de ne pas inclure un moteur de rendu XUL dans le code même du logiciel, mais simplement de faire appel au XULRunner de Firefox [4].

Concrètement, pour qu’un logiciel fasse appel au XULRunner de Firefox sous Windows, il lui suffira du raccourci suivant :

firefox.exe -app application.ini [5]

En revanche, contrairement à ce qui était prévu il y a quelques années, les développeurs Mozilla ont choisi d’utiliser un XULRunner distinct pour Firefox, Thunderbird, Seamonkey, etc. et non un seul XULRunner commun à tous les logiciels Mozilla. Ce choix découle des problèmes que rencontrerait ce « Runtime commun » en terme de mises à jour et d’incompatibilités. L’intérêt de XULRunner pour l’utilisateur est en conséquence diminué, même si son intérêt pour les développeurs demeure.

2.2 Autres logiciels basés sur XULRunner

Certaines applications utilisent XULRunner même si elles ne sont pas écrites en XUL, tout simplement pour bénéficier de Gecko, par exemple :

3. Le XUL et les applications web

3.1 XUL versus DHTML et AJAX

Sur le web, il existe de plus en plus d’applications en ligne. Ces applications, pour être compatibles avec tous les navigateurs, sont écrites en DHTML, pour Dynamic HTML puis en AJAX, c’est-à-dire composées de divers langages :

  • HTML pour le contenu
  • CSS pour la forme
  • Javascript pour le dynamisme (interactions utilisateurs et interactions serveur)
  • DOM pour les modifications d’interface
  • etc.

Or, ces langages n’ont pas été directement créés pour développer des applications web, elles sont donc compliquées à mettre au point et il en résulte des pages au code très lourd, dont l’accessibilité et la sémantique sont souvent mauvaises.

À contrario, le XUL ayant été créé pour écrire des interfaces, il est plus simple de créer des applications à distance avec XUL. En voici un exemple : outil de recherche sur amazon (nécessite Firefox, Seamonkey, ou un logiciel basé sur XulRunner) :

PNG - 137 ko
L’outil de recherche en ligne sur amazon écrit en XUL

3.2. Le XUL et le HTML 5

Le XUL n’a toutefois pas vocation à devenir un langage utilisé par les applications sur Internet, car seuls les navigateurs disposant d’un moteur XUL pourraient les utiliser. Bien que ceux-ci représentent actuellement près de 30% des utilisateurs [6], il n’est pas envisageable pour un développeur web de créer un site inaccessible à 70% des internautes.

Toutefois, le W3C a publié récemment un brouillon de la version 5 du HTML, qui propose de nouvelles balises dédiées aux éléments interactifs, inspirées des balises disponibles dans XUL. Parmi les éléments déjà développés, on notera les balises canvas, video/audio, le comportement offline et le storage, qui sont déjà en partie supportés par Firefox.

Comme tous les navigateurs sont amenés à supporter les normes du W3C, cela signifie qu’une application web écrite en HTML 5 sera à la fois plus simple à créer, plus accessible, et fonctionnera sur tous les navigateurs supportant cette norme.

On s’oriente donc à long terme [7] vers une amélioration des applications à distance à la fois pour les développeurs (simplification) et pour les utilisateurs (accessibilité).

4. Liens

Si le sujet vous intéresse, voici où vous pouvez obtenir plus d’informations :

N’étant pas un grand connaisseur de XUL, je vous conseille de poser vos questions pointues sur les forums de xulfr plutôt que dans les commentaires de cet article ;-)

[1] On appelle également ces interfaces User Interface (UI) pour Interface Utilisateur

[2] Au moment de sa publication, XML est décrit pour servir uniquement à des échanges de données sur le Web : voir la recommendation W3C.

[3] L’internationalisation est le fait de rendre un logiciel facilement traduisible.

[4] près de 200 millions d’utilisateurs actuellement

[5] application.ini étant un fichier contenant des informations sur l’application à lancer.

[6] Voir cette étude Xiti de juillet 2008.

[7] Long car la norme HTML 5 n’est encore qu’à l’état de brouillon, et même quand elle sera publiée et supportée par les principaux navigateurs, les anciens navigateurs mettront du temps à disparaître.

Merci à Paul rouget de Xulfr.org pour ses relectures, et à nico@nc pour la capture de l’interface de Firefox.

Articles dans la même rubrique