Mozilla est un acteur important des technologies riches, notamment grâce à sa technologie XUL et tout ce que l'on peut trouver autour. Pour vous en parler, Laurent a bien voulu répondre à quelques unes de mes questions et je l'en remercie.
XUL n'est pas la technologie riche la plus connue en France (moi-même j'avoue ne l'avoir jamais utilisé). Pourrais-tu nous présenter XUL de manière assez succincte ?
Concrètement, XUL est un langage en XML, qui permet de décrire une interface utilisateur. On a ainsi des balises pour afficher des boutons, des arbres, des menus déroulants, des onglets etc. Il est utilisé depuis des années dans les navigateurs de Netscape et de Mozilla (officiellement depuis Netscape 6), pour réaliser l'interface de ces logiciels. C'est donc un langage mature et relativement complet, dont s'est grandement inspiré Macromedia (racheté par Adobe depuis) lorsqu'ils ont crée Flex ;-)
Cependant, XUL n'est pas tout seul dans le framework Mozilla, et ce qui fait la richesse de XUL, ce sont les autres technologies que l'on peut utiliser conjointement :
- XBL pour créer ses propres composants d'interfaces
- javascript pour programmer les comportements de l'interface (que fais-je lors du click sur tel bouton ?)
- CSS pour le design
- XPCom pour les composants métiers
- SVG pour les dessins vectoriels
- mais aussi XHTML, Mathml, xforms etc.
Ce qui fait que souvent, par abus de langage, on appelle XUL l'ensemble de ces technologies. Notons que, hormis XUL en lui même, la plupart des technologies dans Mozilla sont des standards et que Mozilla est un logiciel libre. Ce qui est un vrai plus pour le développeur au niveau de la capitalisation des compétences et au niveau de la pérennité de la plateforme.
Parlons d'un point de vue plus technologique maintenant. Concrètement, que peut-on faire avec XUL ?
Tout ? :-) Ça va de l'application de gestion de stock, de contenu, au lecteur multimédia sophistiqué, en passant par des outils de messageries instantanées, de VOIP, des éditeurs en tout genre etc. Les témoignages d'entreprises que l'on trouve sur http://xulfr.org/entreprises/ le prouvent.
L'api de Gecko est très riche et embarque des fonctionnalités modernes, en particulier tout ce qui est lié au web, Firefox oblige. Ainsi, aucun souci de faire un client riche, interrogeant des serveurs par le biais de services web (soap, xmlrpc, ajax, rest...). Mais il y a d'autres types d'API bien sûr, comme DOM/XML, protocoles mail, édition wysiwyg et j'en passe. Firefox 2/XulRunner 1.8.1 embarque même le moteur de base de donnée Sqlite ! Bien entendu, le framework prend en charge certains concepts comme l'accessibilité, la localisation, la mise à jour, la sécurité, la correction orthographique etc. Et il est disponible sur bon nombre de système d'exploitation.
L'avantage de la plateforme Mozilla, c'est son extraordinaire extensibilité, que ce soit au niveau des interfaces utilisateurs (grâce aux overlays XUL et au système d'extension), qu'au niveau des composants métiers en XPCOM (intégration de bibliothèques tierces aisées, pour peu que l'on connaisse C++ ou python), et même au niveau de la prise en charge de nouveau format de fichier (vidéo, son, pdf etc.) grâce aux système de plugins que l'on connait bien au travers de la balise <object>. Ainsi le multimédia dans une application XUL n'est pas un problème. Il y a d'ailleurs sur xulfr un petit tutoriel qui montre comment développer un media player en quelques lignes de code.
Bref, aucune limite théorique. Les nombreux projets qui reposent sur Mozilla en témoignent (Joost, Etna, codeEditor...).
Notons que l'on peut aussi utiliser XUL dans des applications web, sans rien installer sur le poste utilisateur. On a moins de possibilité que pour les applications "locales" pour des raisons de sécurité (on ne peut pas accéder aux fichiers locaux par exemple), mais XUL apporte déjà de gros avantages par rapport au HTML que l'on utilise dans les applications web classique ou ajax : moins de javascript à écrire, code plus léger, plus rapide à écrire etc. Et bien sûr, on peut continuer à faire de l'Ajax avec du XUL (utilisation de json, xmlhttprequest etc.). Xul offre même un système de template, basé sur des sources de données en RDF.
De la même façon, qu'est-ce qu'il lui manque ?
Pour XUL en lui même, il lui manque quelques widgets de base, comme des spinbuttons, un calendrier etc. Il manque aussi un meilleur support de SVG et de CSS. Mais la version 1.9 de Gecko (qui sera le moteur de Firefox 3) va combler une grande partie de ces manques, et on peut même déjà tester toutes ces évolutions dans MineField 3.0a3 (le futur Firefox 3) ou XulRunner 1.9a3.
Par le passé, ce qui manquait, c'était la documentation pour les développeurs, mais depuis 1 an ou 2, ce n'est plus le cas grâce aux efforts que l'on a fait à xulfr.org en traduisant des tutoriels, en écrivant des articles dans le wiki. Il y a aussi le site developer.mozilla.org qui progresse très vite et qui contient maintenant énormément d'informations (et une équipe du tonnerre pour traduire les articles anglais !). Même si ce n'est pas complet à 100%, on ne peut toutefois plus trop se plaindre de ce coté là. D'autant qu'avec le forum de xulfr ou le canal irc, on arrive à trouver les réponses manquantes à ses questions :-)
Aujourd'hui ce qui manque vraiment aux développeurs, c'est un environnement de développement complet. Il y a toutefois des efforts fait en ce sens par la communauté. On a par exemple XulBooster, un plugin pour Eclipse très prometteur, qui peut être utilisé dés maintenant pour le développement d'extensions.
Il y a aussi des efforts de fait pour simplifier certaines API rébarbatives de Mozilla. C'est l'objectif du projet FUEL, qui facilitera grandement le développement d'extension dans Firefox 3, et on l'espère aussi d'applications basées sur XulRunner si c'est aussi intégré dans XulRunner.
Joost, Songbird : on voit déjà que XUL a gagné la confiance des connaisseurs et que le résultat est très bon (j'avoue être un grand amateur de Songbird :D). Aurais-tu d'autres applications XUL à nous présenter ?
- OpenWengo, qui fourni son client de téléphonie par IP sous forme d'extension pour Firefox.
- Xul DAIM, un logiciel d'analyse d'images.
- Deux éditeurs wysiwyg, Nvu et Etna, le premier pour le Html et le deuxième pour tout document XML, développé dans la boîte où je travaille (Disruptive Innovations).
- Komodo, un IDE multi-langage (licence propriétaire hélas)
- Flock, un navigateur "social", orienté "web 2.0"
- Allpeers, une extension fantastique qui transforme Firefox en une plateforme de partage privée.
- Sameplace Suite, un client jabber développé par l'équipe de xmpp4moz, des composants pour Gecko implémentant le protocole jabber.
- Nextweb, un outil de gestion de contenu, dont la partie cliente est en XUL.
Et il y en a plein d'autres. Il y a aussi de plus en plus d'entreprises qui développent leurs applications internes en XUL, sur Firefox ou XulRunner. Je pense notamment à Renault F1, LeMonde.fr, Sixt...
En ce moment, l'actualité concerne Apollo. WPF risque aussi de faire de bruit. Tu as déjà donné ton point de vue sur ton blog où tu es plutôt direct. Pourrais-tu détailler ton avis ?
Je vais d'abord rappeler le contexte, pour que les lecteurs comprennent bien :-)
Toutes les technologies de Mozilla, y compris le XUL donc, sont utilisées intensivement dans Firefox. Jusqu'à il y a quelques années, si on voulait utiliser XUL pour réaliser ses propres applications, il fallait soit faire une extension à la suite Mozilla ou Firefox, soit modifier et recompiler les sources de Firefox sans son interface, ce qui était franchement fastidieux.
Mozilla a eu l'idée il y a 3-4 ans, de séparer le moteur de Firefox, Gecko, incluant toutes les technos de l'interface de Firefox. Ainsi, on pourrait réutiliser facilement Gecko pour exécuter des applications faites en XUL, sans avoir une dépendance à Firefox. XulRunner était né. Il suffit d'indiquer à XulRunner un paquet .app ou un répertoire, contenant les fichiers d'une application XUL, pour que celle-ci s'exécute. Un Apollo-like bien avant l'heure donc.
XulRunner a évolué. La dernière version officielle est 1.8.0.4 (l'équivalent de Firefox 1.5). Il est même maintenant largement utilisé dans bon nombre d'applications (dont parmi les plus célèbres dernièrement, Joost, Songbird, Wengo...).
XulRunner a cependant un aspect "inachevé" : il manque quelques trucs pour attirer plus de développeurs. Et malheureusement, la fondation Mozilla en a ralenti son développement, concentrant ses efforts sur Firefox 3. La raison principale étant que pour Mozilla, Firefox est une priorité, qui fait parti de ses objectifs, alors que XulRunner non. Pour Mozilla, c'est Firefox la plateforme, une plateforme de développement web par excellence.
Sachant ceci, la déferlante Apollo m'a quelque peu agacé. D'un coté on a XulRunner, un produit utilisable, avec un potentiel énorme, qui existe depuis longtemps, contenant des technologies dont XUL, existantes depuis encore plus longtemps. Et de l'autre, on a Apollo et WPF, (dont le premier reprenant tous les principes de XulRunner), débarquant à la faveur d'un raz de marée marketing de la part d’Adobe et Microsoft.
D'où le coup de gueule dans le billet auquel tu fais référence, témoignant d'une certain frustration alors que moi même j'essaie de promouvoir XUL depuis 3 ans :-)
Mais il faut voir ce coup de gueule pour ce qu'il est : un simple coup de gueule. Mon engagement envers les technologies Mozilla est toujours le même. Et surtout, il ne faut pas y voir comme une mort annoncée de XUL/XulRunner, ou je ne sais quoi d'autre de dramatique.
Puisque Mozilla se préoccupe plus de Firefox 3 que de XULRunner, cela ne risque t'il pas d'être dommageable pour les personnes désirant réaliser des applications XUL ?
Je dirais que non. De toute façon, depuis toujours, Firefox a été la priorité chez Mozilla. Mozilla n'a mis qu'un développeur sur XulRunner, et encore, pas à temps plein. Cela n'a pas empêché à XulRunner d'être devenu ce qu'il est, un bon produit, une bonne base pour le développement, même si il a quelques défauts (qui ne sont pas forcément ceux de XUL), et d'être utilisé pour des gros projets, comme ceux que j'ai cité précédemment.
Et puis, puisque XulRunner repose sur Gecko, Xulrunner continue donc d'évoluer "passivement" au rythme des évolutions du moteur Gecko. J'en veux pour preuve que, même si ce n'est pas annoncé officiellement, il y a un XulRunner 1.8.1 (équivalent au moteur de Firefox 2) et un XulRunner 1.9a3 (équivalent du futur moteur de Firefox3), disponible en téléchargement sur le ftp de Mozilla. Donc ces versions contiennent les toutes dernières avancées à tous les niveaux, notamment XUL, SVG, CSS (test acid2 !)...
De plus, XulRunner n'est pas XUL, et XUL n'est pas XulRunner ! Il ne faut absolument pas confondre les deux comme j'ai pu voir sur certains sites ! XUL est un langage, XulRunner est un lanceur d'application XUL, incluant Gecko. XUL et toutes les technologies Mozilla vont continuer d'évoluer, puisqu'elles sont toutes utilisées dans le projet phare (et hautement prioritaire) de Mozilla : Firefox.
Au pire, si XulRunner n'est pas totalement satisfaisant par rapport aux besoins d'un projet, les développeurs peuvent se rabattre sur Firefox, en réalisant leurs applications sous forme d'extensions. Ils profitent de toutes les technologies de Firefox, donc de XUL, SVG etc. C'est ce qu'a fait par exemple Allpeers, avec leur produit de partage de fichiers "personnel".
Quel futur vois-tu pour XUL à moyen terme ?
Firefox a 20% de part de marché. Cela ne va pas diminuer à mon avis (Firefox 3 promet !). Ce qui veut dire qu'il y a 20% des utilisateurs qui ont une plateforme XUL installée sur leur poste, donc autant de runtimes XUL qui peuvent lancer des applications XUL (sous forme d'extensions).
L'un des objectifs de Mozilla, c'est aussi de se reposer un maximum sur les standards. C'est déjà le cas en prenant en charge CSS, SVG, RDF, DOM, XML etc. On a aussi par exemple la version 2 de leur langage XBL, qui est sur le point de devenir un standard au W3C. Les spécifications sont maintenant terminées et acceptées. Il ne manque plus que deux implémentations soient réalisées (dont une a débuté chez Mozilla), pour que le processus de normalisation se termine. Il y a aussi un groupe de travail au W3C qui réfléchi à un langage de type XUL. Est-ce qu'ils reprendront le XUL de Mozilla comme ils l'ont fait pour XBL ? On ne sait pas encore. Mais si ce sera le cas, alors cela permettra de rassurer les derniers septiques :-)
De plus Mozilla continue d'innover, en faisant progresser le langage Javascript vers une version 2 (qui est lui aussi en cours de normalisation à l'ECMA, en collaboration avec Adobe et Opera je crois). Mozilla continue d'apporter des améliorations pour les applications web, comme la possibilité d'exécuter des applications Ajax même lorsque l'on est déconnecté, la prise en charge des microformats etc.. Il y a aussi des améliorations au niveau de CSS, notamment de CSS3 (des propriétés CSS que l'on utilise pour le XUL sont en faites des choses qui feront partie de CSS3).
Toutes ces améliorations sont profitables à ceux qui veulent réaliser des applications en XUL, qu'elles soient distantes (web) ou desktop (extensions ou applications xulrunner).
Si on parle de l'avenir de XulRunner : il est moins certain, mais il serait franchement hasardeux de lui prédire avec certitude un avenir sombre, même si Mozilla n'en fait pas un produit officiel. N'oublions pas que c'est un logiciel libre, reposant sur des technologies libres et ouvertes ! Il y a fort à parier que la communauté des développeurs XUL va prendre en charge la suite du développement de ce fantastique produit, surtout quand on voit ce qu'en font les équipes de Joost, Songbird etc. En tout cas, à l'association Xulfr, on ne compte pas en rester là. Stay tuned ;-)
Merci beaucoup pour tes réponses Laurent. On le voit bien, XUL a d'énormes capacités : une technologie éprouvée, des applications "pilotes" réussies, un environnement open source favorable, etc. Mozilla met l'accent sur Firefox 3 et cela leur réussit bien : la seule chose que je souhaite maintenant c'est que XUL arrive à faire encore plus parler de lui et devienne LA solution open source de développement d'interface bureau. A très bientôt j'espère !

Commentaires
1 . Le mercredi 4 avril 2007 à 00h14, par neolao
En tout cas, moi j'y crois
Ce qui m'a le plus impressionné, c'est XBL et les overlay
Tu devrais essayer Fabien :)
Sinon, que XUL ait inventé tout le bazar avant Flex ou WPF, on s'en fout un peu. Ca prouve que c'est que ça plait et les autres l'ont repris. Mais ce qui compte, c'est le présent.
J'ai aussi essayé Microsoft Expression, et ... les 3 technologies ont leurs avantages.
En tout cas sur Windows, parce que je serai étonné d'avoir toutes les fonctionnalités du WPF sur les autres plateformes.
2 . Le jeudi 5 avril 2007 à 10h17, par Maz
Merci pour cet interview très intéressant...
Firefox 3 récoltera un buzz de la même ampleur qu'Apollo, c'est sûr. Est-ce que ce sera bénéfique pour XulRunner, ça m'étonnerait... Je ne comprends pas la politique de mozilla :
>> Pour Mozilla, c'est Firefox la plateforme,
>> une plateforme de développement web par excellence
C'est XulRunner la plateforme !
Ca va semer du trouble dans la vision des gens de ce que propose Mozilla en RDA :
*quand développer pour Firefox3 ? quand développer pour XulRunner ?
*développer des applications dans Firefox3 ??? Firefox3 est un browser pas un runtime...
Mais bon, on peut comprendre qu'ils ne peuvent promouvoir deux "produits" en même temps... mais c'est tout de même dommage pour les app XUL qui étaient prometteuses
3 . Le jeudi 5 avril 2007 à 15h41, par Developpeur Xul mécontent
Le developpement Xul n est pas une mince affaire...et pourrait se nommer "slow application developpement" tant les erreurs sont imbitables (xp_no_interface et autres...) et la dimension "utilisation intensive du javascript" est problématique (support de la programmation objet tenant plus du bricolage que d une vraie integration). L enregistrement XP com est plus qu aléatoire.
Meme si la techno en elle même pourrait, à la rigueur; être considérée comme prometteuse, on est encore très loin de pouvoir developper une application complexe dans des temps raisonnable. Sans compter qu à chaque changement de version de firefox, les bindings et autres xp com ne sont pas toujours compatibles.
Le soucis majeur se situe également,dans le coté "asynchrone" non débrayable du chargement des objets xbl.
Pour moi c est une technologie à eviter à tout point de vue. Meme si je ne suis pas "pro-microsoft" On est très loin, de la facilité et la productivité du simple et très vieux visual-basic (si on fait abstraction du langage basic en lui même assez mauvais).
Cordialement
4 . Le vendredi 6 avril 2007 à 14h05, par Tristan
Très bonne interview, bravo !
Petite précision : Firefox est une plate-forme. C'est même *doublement* une plate-forme, dans la mesure où :
1 - le navigateur est une plate-forme (pour le Web, avec CSS, HTML, DOM+JS).
2 - Firefox est une plate-forme pour les extensions Firefox. (XUL, XBL, XPCOM et les précédents).
Donc Mozilla est effectivement en train de jouer le jeu de la plate-forme déjà à deux niveaux, ce qui est très loin d'être négligeable, compte tenu de la petitesse de l'équipe (une centaine d'employés).
Pour faire court : "Trois plates-formes, avec XULrunner en 3eme position, ça serait trop" ;-)
5 . Le samedi 7 avril 2007 à 00h20, par Paul
@Developpeur Xul mécontent:
Hum... j'avoue, ce n'est pas absolument évident, mais tous les problèmes que tu soulèvent ont une solution et une bonne raison d'exister. Après, il est vrai que le techno n'est developer-friendly, mais bon... ce genre de difficulté, pour le coup, c'est pas bout du monde non plus.
Ajouter un commentaire