Voilà quasiment 5 mois que j'ai proposé les premières fiches concernant des technologies. Comme dans l'informatique tout va vite (et certainement très vite cette année en ce qui concerne les RIA et les RDA), je viens de les mettre à jour, notamment pour modifier quelques numéros de version ou corriger quelques erreurs. Vous retrouverez donc :
Evidemment maintenant je pense qu'il faudrait en rajouter quelques unes... (WPF/e, Slingshot, Eclipse RCP, etc.) A méditer tout de même sur le caractère riche de certaines technologies.

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.

Bonjour Laurent, tout d'abord pour ceux qui ne te connaissent pas, pourrais-tu te présenter ?

Je suis développeur. Je travaille avec pas mal de technos, en particulier celles du web. En effet je me suis pas mal impliqué dans la promotion des standards du web en France (contributeur au site http://openweb.eu.org) et je suis l'auteur de quelques projets en PHP dont le framework Jelix. Parallèlement à ça, je fais la promotion des technos Mozilla depuis 2003, au travers de conférences et au travers de mon site xulfr.org, géré maintenant par l'association xulfr. Mon implication dans les technos Mozilla ne s'arrête pas là, puisque chez Disruptive Innovations, je développe des applications avec celles-ci, allant de la simple extension pour Firefox jusqu'à des logiciels plus pointus comme Etna, un éditeur XML wysiwyg, qui nécessitent de modifier Gecko, le cœur de Mozilla Firefox.

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 ?

Si on parle de l'ensemble des technos mozilla, dont le langage XUL, je dirais : un avenir radieux ? :-)

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 !

Joyent a présenté presque en même temps que la sortie d’Apollo son framework pour déployer des applications rails sur votre bureau : Slingshot. Passé un peu sous silence, Slingshot mérite tout de même que l’on s’y attarde un minimum.

Slingshot est un environnement d’exécution (un peu comme Apollo ou la virtual machine de Java) permettant d’utiliser des applications Ruby on Rails sur le bureau. Pour le moment, il n’y a eu qu’une annonce mais Slingshot serait prêt pour fin avril, et disponible sur Windows et MacOS X.

 Joyent Slingshot

Au niveau des fonctionnalités, Slingshot propose :

  • Une synchronisation hors ligne / en ligne
  • Les interactions avec le bureau via drag and drop
  • La « gestion complète » de Rails, c'est-à-dire qu’on peut y ajouter des extensions (gems)

De plus, Slingshot est gratuit... si vous hébergez votre application chez Joyent (appelé Accelerator). Il n’y a pas de prix fixé pour une utilisation extérieure.

Pour tout connaisseur de Ruby on Rails, Slingshot (qui se présente également comme un framework) conserve la « mentalité » Rails, c'est-à-dire pas de configuration mais des conventions. Donc ici aussi, la synchronisation se veut rapide, intuitive et facile.

Joyent propose un produit très professionnel, avec quelques fonctionnalités mais qui seront à mon avis bien exploitées par certaines applications. Par exemple, Joyent propose déjà une suite appelée Connector servant de suite collaborative, d’outils de back-ups et d’hébergement pour les petites structures. L’utilité de pouvoir porter l’application sur le bureau serait un avantage certain vis-à-vis des entreprises.

Je suis séduit par la clarté du message qui est passé : Joyent fait bien les choses, et leur site est classe (ça me fait penser à Squarespace). Néanmoins je trouve Slingshot tout de même limité. Dommage surtout que son utilisation ne soit pas gratuite si l’hébergement se fait « à l’extérieur ». Je souhaite tout de même que cette technologie rencontre un succès qui permettra aux développeurs Rails de faire leurs propres applications de bureau.

Quelques liens :

Bon évidemment vous n'allez pas me croire si je vous dit que Vista est une application riche... et pour cause, ça n'en est pas une. Mais l'application que je souhaite vous présenter n'est pas autre chose qu'une émulation graphique de... Windows Vista ! Attention, WPF/E est nécessaire (à télécharger ici).

Windows Vista en WPF/E

Vous connaissiez peut-être déjà cette application, qui a fait quelques bruits il y a quelques temps. C'est en fait un slovène appelé 'smargroth' qui a développé ceci grâce à WPF/E. Ce qui veut donc dire que ceci est aussi utilisable sur MacOS X. Là où j'hallucine,  c'est sur cette qualité graphique qu'a su retrouver le développeur pour offrir un webtop (bureau sur le web) totalement skinné à la manière de Vista. Sans oublier les effets, transparences, etc. Je suis bluffé.

Sans parler du temps de développement qui a du être relativement long, on s'aperçoit donc de la puissance de WPF/E qui ne doit pas avoir grand chose à envier à Flash (hormis son taux de pénétration, pen-rate comme dirait certains ;)). Sur le lien que je vous propose, vous apercevez même un élément en 3D qui tourne, et bien qu'il n'est pas sans défaut, c'est très surprenant et agréable de trouver ceci dans son navigateur.

Vista 3D

J'ai encore du mal à cerner l'utilité totale d'un webtop, mais si on ne garde que le coté graphique, on s'aperçoit alors de la force des technologies riches. Ne se dirige t'on pas vers une fusion des technologies pour les applications "natives" comme l'on pourrait créer avec WPF et celles dites "web" comme celles créées avec Flex ou WPF/E ? Les mêmes outils sont utilisés pour créer des interfaces, peu importe le type de service. Cela m'amène à conclure que l'interface a une importance considérable dans l'expérience utilisateur. Et c'est maintenant qu'apparraissent les véritables technologies capables d'offrir un meilleur confort d'utilisation à l'utilisateur.

Rechercher