Clochix

Aller au contenu | Aller au menu | Aller à la recherche

vendredi 15 juillet 2011

XUL est mort, vive le Web ?

GROS LAPSUS au moment de la mise en ligne de ce billet, le titre est évidemment XUL est mort et non Mozilla est mort :S

Ce billet n'est que le reflet de mon état d'esprit actuel, de ce que je ressens à la lecture de différents canaux d'information sur Mozilla, essentiellement les blogs et leurs commentaires, et des discussions entre Mozilliens. C'est un ressenti et une tentative de réfléchir un peu avant de me réfugier dans l'amertume et le trollage.

Le futur est au Web

Je suis depuis longtemps persuadé que l'avenir des applications pour périphériques mobiles passe par le Web plutôt que des développements natifs à chaque plateforme. Mais j'avais jusqu'à présent refusé de pousser la logique jusqu'au bout, de l'appliquer au PC. Je viens d'un temps où le PC était roi et les téléphones des gadgets tout juste capables de faire tourner poussivement Tetris. Mais je dois me rendre à l'évidence: le PC ne sera bientôt plus qu'un périphérique comme un autre, et l'évolution entamée sur les mobiles ne l'épargnera pas. En d'autres termes, sous peu, les applications Web vont prendre le pas sur les applications natives. Pas pour tout bien sûr, il y aura toujours des niches où l'on aura besoin d'applications "lourdes". Mais ces niches vont se réduire. Pour la messagerie déjà, et bon nombre de fonctions de communication, les Webmails et les applications Web ont supplanté les clients lourds. La bureautique suit peu à peu, les jeux aussi, le traitement en ligne de photos, son, vidéos, devient chaque jour plus envisageable. Ce n'est plus qu'une question de mois avant que des applications Web ne puissent répondre à l'essentiel de nos besoins[1].

La conséquence est évidente: les applications clientes lourdes n'ont d'avenir que dans des niches. Mozilla veut rendre Internet meilleur pour l'ensemble des internautes. Maintenir une plateforme de développement pour applications lourdes n'entre pas dans cette mission: donc Mozilla va cesser de défendre et de développer la plateforme XUL.

XUL n'est par mort pour autant. Par bien des aspects, lui et ses technologies sœurs (XBL, XPCom, etc) sont pour l'instant irremplaçables. Mozilla va encore les utiliser pendant quelque temps dans Firefox, même si je pense que leur remplacement par une interface entièrement en HTML n'est qu'une question d'années. Mais l'écosystème qui depuis longtemps s'est développé autour de ces technologies est lui sérieusement menacé.

Chronique d'un abandon annoncé

L'abandon de la plateforme XUL ne devrait être une surprise pour personne. Il est implicite depuis des mois. Mais comme il n'a jamais été officiellement annoncé, je refusais de voir la réalité, j'étais dans le déni. Aujourd'hui, vu la mauvaise tournure que prennent les évènements, je pense qu'il est temps de crever l'abcès, de cesser d'être dans le déni, de regarder la vérité en face.

Car si Mozilla n'a jamais dit ouvertement arrêter de s'occuper de la plateforme, c'est implicite dans l'évolution de sa communication et dans de nombreux documents publiés ces derniers temps.

Le Manifeste parle d'Internet (le mot est cité 21 fois, contre une seule fois pour Web). La description de la mission de Mozilla, plus récente je crois, ne parle elle plus que du Web: Mozilla's mission is to promote openness, innovation and opportunity on the web. Le reste des usages d'internet n'est donc plus au cœur des préoccupations de la Fondation. Il y a quelques années, elle développait un navigateur Web, un logiciel de messagerie et une plateforme permettant de créer des logiciels pour d'autres usages du réseau. Aujourd'hui, elle ne semble savoir que faire de Thunderbird, et la plateforme n'est plus du tout mise en avant.

C'est encore plus clair dans l'un des meilleurs documents que j'ai trouvé pour éclairer la stratégie actuelle de Mozilla: la feuille de route de Firefox pour 2011[2]. Elle dit explicitement Our mission is to promote an Open Web Platform which is the most compelling environment for modern applications. Dit autrement, le Web est la plateforme d'avenir, la seule que nous défendons. Dans l'ensemble du document, comportant pourtant quelques parties techniques, XUL n'est pas cité une seule fois.

Il suffit donc de lire pour réaliser que Mozilla est en train d'abandonner la plateforme. Une plateforme qui pourtant a grandement contribué à son actuel succès.

Séquence nostalgie

Je fais partie des développeurs pour lesquels la plateforme Mozilla avait suscité de l'espoir dès le début des années 2000. Pour qui a touché au développement d'applications "lourdes" et se souvient du bordel que c'était (c'est ?), Mozilla offrait une solution simple, élégante et multi-plateforme. Un socle solide permettant de créer facilement et rapidement des applications, avec un minimum de connaissances techniques (XML, JavaScript, CSS). L'environnement était de plus extensible pour qui en avait besoin via des bibliothèques externes. Mozilla promouvait l'utilisation des technologies, et en a fait une véritable la plateforme: le cœur en a été extrait, devenant un moteur d'exécution à part entière, XulRunner, au dessus duquel s'exécutent les applications de la Fondation, Firefox et Thunderbird.

Entre ses qualités techniques et le soutien implicite de Mozilla via la création de XulRunner, beaucoup ont cru en cette plateforme et l'ont adoptée avec enthousiasme. Le wiki de Mozilla liste une cinquantaine d'applications basées sur XulRunner et plus encore d'autres utilisant certaines des technologies de la plateforme. Parmi les dizaines de milliers d'extensions disponibles pour Firefox, bon nombre sont bien plus que des bookmarklets améliorées (ce que sont les extensions Chrome <troll>ou Jetpack dans Firefox</troll>). Elles n'ont étés rendues possibles que parce qu'elles ont pu accéder au cœur du navigateur, se brancher dans l'interface avec les overlays, la bidouiller en XUL, utiliser des composants binaires externes avec XPCOM. Si Firefox n'avait pas été bâti sur une plateforme, nous n'aurions pas eu autant d'extensions. Et je suis sûr qu'il n'aurait pas eu un tel succès. Les extensions ont été un formidable terrain d'expérimentation pour bidouiller le navigateur et étendre ses capacités dans de nombreuses directions inédites. Les extensions ont permis de réellement personnaliser Firefox. Je n'utilise pas un navigateur nommé Firefox, j'utilise mes propres navigateurs, adaptés à mes besoins, l'un outil pour surfer protégé, un autre pour développer… Par leurs contributions au code, par leurs apports à l'expérience utilisateur des internautes, tous ces développeurs XUL ont grandement contribué aux succès tant de Mozilla que du Web.

Les histoires d'amour finissent mal…

Aujourd'hui, ces développeurs se retrouvent abandonnés et, quelque part trahis. Lorsqu'on a passé des années à s'investir sur une technologie, son abandon par son créateur est pour le moins douloureux. Et encore plus douloureux lorsque la communication autour de cet abandon est mal faite. La situation actuelle est détestable, faute de position claire sur le sujet se multiplient les débats avec leurs lots de trolls, de phrases définitives, de pathos et de drames. Les décisions mal assumées ou mal expliquées, les phrases maladroites, les trolls stériles peuvent faire énormément de mal. Les séparations sont rarement des moments joyeux. Celle-ci est en train de virer au tragique. Les récents débats, certains propos lus, m'ont rappelé la tristement célèbre « courbe du deuil » et surtout l'utilisation qui en est faite par les "managers" chargés d'organiser le changement dans de grosses sociétés[3]. La comparaison est sans doute méchante, excessive, mais c'est l'image qui m'est venue lorsque j'ai lu certain responsables de Mozilla entonner un "marche ou crève". Les développeurs d'extension devront s'adapter, marcher, migrer vers JetPack, ou crever. Idem pour ceux développant des applications tierces: passe à js-ctype, recompiler toutes les 6 semaines, ou crever. Ce sont des propos particulièrement durs, violents, adressés à des gens qui ont tant contribué au succès de Mozilla et que l'on abandonne sur le bord du chemin.

Je ne discute pas du fond, car je pense que la décision de ne plus soutenir la plateforme est la bonne pour Mozilla. Le but de la Fondation et de promouvoir l'ouverture et l'innovation sur le Web. Dans le contexte actuel, avec l'arrivée de Chrome qui a fortement relancé la compétition et Microsoft qui semble enfin réellement se réveiller, Mozilla doit se concentrer sur Firefox pour qu'il reste techniquement crédible, donc continue d'attirer un nombre suffisant d'internautes pour pouvoir peser sur les évolutions du Web (on l'a vu par exemple lors des débats sur les codecs pour la balise Video: le refus de Firefox d'implémenter le format H264 n'a de poids que parce qu'il impacte un tiers des internautes). Je comprend et approuve que Mozilla mette l'essentiel de ses forces dans Firefox, je comprend également que cela implique de considérer le navigateur comme une application à part entière, optimisée de base en haut, et non plus comme un client s'exécutant au dessus d'un moteur d'exécution.

Mais je conteste fortement le calendrier, la méthode et l'absence de communication.

Le calendrier, parce que malgré toutes ses évolutions, HTML ne sera pas à mon avis crédible "sur le bureau" avant plusieurs années. Dans l'intervalle, on a encore besoin de XulRunner. Prenons l'exemple du mail. Je suis persuadé que l'avenir est aux Webmail, que les clients lourds sont condamnés (du moins chez les particuliers). Pourtant, il leur reste une fonctionnalité que je ne vois pas les Webmails implémenter à court terme: la sauvegarde locale des mails. L'archivage de ses mails sur son disque pour les sauvegarder sur d'autres supports, etc. Je sais que certains font déjà confiance au Nuage pour cela. Mais beaucoup d'internautes veulent encore avoir des copies locales, et tant que les Webmails ne le permettront pas facilement, nous aurons besoin de Thunderbird, donc de XulRunner.

La méthode parce que je l'ai dit, certains propos sont particulièrement violents et à mon sens inacceptables.

La communication enfin, car comme lors du récent débat sur l'intérêt de Mozilla pour les entreprises, je la trouve mauvaise. Mozilla sait lancer de jolies campagnes de marketing à destination du grand public, mais j'ai l'impression que la Fondation a beaucoup plus de mal à communiquer avec ses fans. L'abandon de XUL est déjà assez douloureux à vivre, ne rendons pas les choses encore plus difficiles en ne disant pas les choses clairement. J'aimerais que, si Mozilla ne soutient plus la plateforme XUL, elle l'annonce officiellement.

Alors Mozilla, s'il te plait, exprime toi, sans langue de bois, sur tes intentions vis à vis de la plateforme.

Yes future ?

Je voudrais finir ce billet sur une note un peu plus optimiste. Si Mozilla arrête de soutenir la plateforme, ça sera un coup rude, mais ne signifiera pas forcément la mort de la technologie. Je pense que quoi qu'il arrive, elle a encore de beaux jours devant elle, tant de par ses qualités propres que par la valeur des développeurs qui l'investissent. L'abandon de la suite Mozilla au profit de Firefox, Thunderbird et Composer a donné naissance au projet SeaMonkey. Qui sait si l'annonce de la fin du soutien de Mozilla à la plateforme XUL ne provoquerait pas un sursaut de la part de l'ensemble des développeurs de l'écosystème pour créer un projet spécifique. Il serait certes autrement ambitieux, car il ne s'agirait plus de bâtir des applications sur un socle maintenu par Mozilla, mais bien de prendre en charge la maintenance d'une version spécifique de ce socle lui-même. Bref, pour le coup, de forker XulRunner. Laisser Mozilla en développer une version optimisée pour Firefox, et probablement à terme réintégrée avec le navigateur, et créer à partir de l'existant une branche spécifique permettant le développement d'applications clientes multi-plateformes lourdes. Beaucoup de gens ont besoin de cette version de la plateforme. Tant les très nombreux projets qui se basent dessus, dont certains développés par des entreprises qui ont quelques moyens, que certains utilisateurs actuels de Firefox et Thunderbird (entreprises, administrations). Ceux qui ne peuvent ni ne veulent suivre le nouveau rythme de sortie de Firefox, mais ont besoin de produits stables sur de longues périodes. J'ai cru entendre qu'au sein même de Mozilla, certains développeurs du cœur ne seraient pas contre donner un coup de main à un tel projet, ne serait-ce que pour rétro-porter les correctifs de sécurité. De nombreuses sociétés commerciales y auraient sans doute un marche. L'écosystème XUL n'est donc pas condamné à court terme, certaines conditions sont réunies qui permettent d'espérer.

Mais encore une fois, pour que cet avenir s'éclaircisse, il faudrait lever les doutes, les incertitudes. Il faudrait que Mozilla s'exprime explicitement sur ses intentions à long terme vis-à-vis de la plateforme. Cela permettrait peut-être à la créature, enfin sûre de ne plus avoir grand-chose à attendre de son créateur, de rebondir. J'espère que cette clarification va venir rapidement, avant que trop de gens n'aient quitté le navire, dégoûtés, avant que la confiance et le respect entre gens unis dans un projet par un même idéal n'aient volés en éclats.

Notes

[1] je passe sous silence l'aspect "moral" de cette évolution, elle n'est pas l'objet de ce billet

[2] c'est d'ailleurs intéressant: en 2008, Mitchell Baker avait lancé une réflexion sur les objectifs de Mozilla d'ici 2010. Je n'ai pas trouvé de document plus récent concernant le projet Mozilla dans son ensemble, juste Firefox. Si vous en connaissez, merci de me les signaler

[3] l'exemple le plus emblématique est France Telecom

dimanche 8 novembre 2009

Avec Jetpack, si tu sais cuisiner un site Web, tu peux aussi bidouiller Firefox

Si tu sais cuisiner une page Web, tu peux créer une extension pour Firefox. Ainsi pourrait être résumée la philosophie de Jetpack, un projet actuellement développé par les Laboratoires Mozilla et qui devrait devenir d'ici un an la base du nouveau mécanisme d'extensions de Firefox 4. Le but est de permettre à tout développeur Web de pouvoir bidouiller Firefox sans devoir apprendre un nouveau langage. Petit tour d'horizon à l'occasion de l'arrivée de la version 0.6

Lire la suite...

mardi 16 septembre 2008

XUL est-il encore le bon choix pour une application web riche ?

Celles et ceux qui suivent un peu ce journal savent que je développe depuis quelques temps une application web[1] dont l'interface utilise la technologie XUL. Le développement n'avance plus depuis quelques mois parce que je me suis lancé dans une itération de refactoring dont je n'arrive pas à me sortir, entre autre parce que quitte à effacer et ré-écrire des bouts de code, je ne cesse d'élargir le périmètre des travaux, et que j'ai fini par me demander s'il était encore judicieux de continuer à utiliser XUL, ou si je ne devais pas recommencer la partie client en pur HTML. Bref, je suis en plein doute, ce qui explique que je perde mes soirées à traîner sur des blogs et à m'épancher ici au lieu de coder[2].

Notes

[1] qui vise, soyons modeste, à être un client web universel. Pour l'instant des clients de messagerie électronique (POP et IMAP), instantanée (Jabber) et de base de données sont à peu près utilisables

[2] après mes doutes sur mon envie de continuer à faire du web, on pourrait penser que je suis en pleine crise de la quarantaine. Mais pas du tout, puisque j'ai toujours 10 ans

Lire la suite...

mercredi 23 juillet 2008

Une gestion d'évènements pas à la hauteur DOM

Le DOM est une méthode pour représenter un document sous forme d'objets arborescents. Cette méthode est par exemple utilisée pour manipuler des documents XML ou des pages web en HTML. Plusieurs spécifications ont défini le modèle, des méthodes pour y accéder, le modifier, etc. L'une d'elles permet de gérer des évènements survenant sur les objets. Malheureusement, j'ai toujours trouvé cette spécification étonnamment incomplète. Elle présente à mon sens 2 lacunes:

  • elle ne permet pas de connaître les guetteurs associés à un événement
  • elle ne définit pas, ou mal, ce qui doit arriver à ces guetteurs lors de manipulations du document.

La méthode de gestion retenue est en effet de permettre d'attacher à chaque objet des guetteurs qui seront appelés quand surviendra un événement. Malheureusement, la spécification ne dit pas ce qui doit arriver à ces gestionnaires quand l'objet est déplacé, par exemple dans un autre document, ou dupliqué. Chaque implémentation de la spécification a donc dû décider de l'attitude à adopter dans ces cas. Dans le cas de Firefox, les guetteurs sont perdus en cas de déplacement du nœud dans un autre document (par exemple lorsqu'on essaie d'insérer dans une fenêtre popup des éléments générés dans la fenêtre mère), ou lorsqu'on le copie (la spécification indique effectivement quand un objet Node est recopié en utilisant la méthode cloneNode, les guetteurs EventListener attachés à l'objet Node source ne le sont pas sur l'objet Node copié, cf la définition des guetteurs.

Petit exemple: imaginons que l'on ait besoin de créer dynamiquement un formulaire permettant à l'utilisateur de saisir un nombre quelconque de réponses, chaque réponse étant l'objet d'une validation. Cela pourrait se coder ainsi:

<!-- Création du formulaire -->
<form id="my_form">
<input type="button" id="button_add" value="ajouter" />
</form>
<script type="text/javascript">
function init(){
  // on crée une ligne permettant la saisie
  var _div = document.createElement("div");
  var _input = document.createElement("input");
  _input.setAttribute("type", "text");
  // on attache un guetteur qui affiche la saisie quand le curseur quitte la zone
  _input.addEventListener('blur', function(){alert("la valeur saisie est : " + this.value);}, false);
  _div.appendChild(_input);
  // on insère la première ligne
  document.getElementById("my_form").appendChild(_div);
  // chaque pression sur le bouton insérera une nouvelle ligne
  document.getElementById("button_add").addEventListener('click', function(){document.getElementById("my_form").appendChild(_div)}, false);
}
</script>

Ce code ne fonctionnera pas. En cliquant sur le bouton "Ajouter", on insère bien une copie de la première ligne, mais le guetteur censé valider la saisie n'a pas été recopié par le cloneNode.

Cet exemple est bien sûr trivial, il suffirait, après le clonage, d'ajouter un nouveau guetteur sur le champs de saisie. Mais cela suppose de connaître tous les guetteurs qui ont été associés, potentiellement par d'autres portions de code, au fragment cloné. En l'absence d'interface pour connaître ces guetteurs. le problème est difficile à résoudre. C'est pour le contourner que je me suis enfin intéressé à XBL, dont je vous parlerai dans les prochains jours (ce billet ne servait qu'à liquider ce problème auquel je me suis heurté vainement pendant pas mal de temps en codant Couac )

(toute ceci ne concerne que Firefox. Il parait que les récentes versions du malware au 'e' bleuté dupliquent les guetteurs lors d'un cloneNode. Je n'ai pas été vérifier)

lundi 14 juillet 2008

Créez vos prototypes d'interface dans Firefox avec Pencil

Je cherche depuis très longtemps un outil libre pour créer rapidement des prototypes d'interface ou de pages web à insérer dans un storyboard. J'ai essayé différents outils de dessins comme Dia ou de conception (Nvu), sans jamais en trouver qui me satisfasse vraiment.

Je découvre aujourd'hui un petit nouveau, Pencil, qui m'a l'air prometteur. Il permet de créer des pages, d'y insérer des composants et d'enregistrer le tout sous forme d'images PNG. Les composants fournis couvrent la majorité des besoins des interfaces classiques: zones de textes, images, champs de formulaire, etc. On peut modifier les propriétés des éléments, les re-dimentionner, les faire pivoter, soigner leur disposition (alignement, chevauchement, etc). Il est également possible d'insérer des annotations sur la page. Bref, tout ce qu'il faut pour décrire rapidement une interface en quelques clics.

A l'usage, Pencil se révèle à la fois simple et pratique. Il faudra bien sûr que je l'essaie sur de vrais projets, mais le premier contact est plutôt positif.

Techniquement, Pencil utilise le moteur de rendu Gecko, qui motorise Firefox. On peut donc l'installer comme une extension Firefox (un fichier xpi de moins de 400ko !), ou comme une application à part entière, qui s'exécute grâce à XULRunner. Bien que relativement jeune, le projet dispose d'une interface soignée et d'un site web avec quelques documentations.

Pencil est un projet libre (sous GPL v2), et les développeurs viennent de rendre le source accessible sur Google Code.

XUL, GPL, je crois bien que je vais l'adopter ;-) Hop, un petit exemple de l'interface:

Exemple de prototypage d'une page web avec Pencil

mercredi 12 décembre 2007

Ya un Couac, ou la naissance d'une appli web

Ce blog est en sommeil depuis longtemps, par manque de temps pour m'en occuper. La faute au salariat et à ma plongée pendant quelques mois dans le codage d'une application web, Couac. Aujourd'hui, elle a atteint un niveau qui commence à la rendre utilisable, même si je butte sur une erreur de choix architectural qui risque de lui être fatale. Et comme je n'ai plus guère de temps pour m'en occuper, il est temps que je la rende publique, dans l'espoir qu'elle puisse servir et que d'autres contributions viennent l'améliorer.

Lire la suite...

mercredi 8 août 2007

Firefox 3 implémente les "cross site XMLHttpRequest" !

En parcourant la liste des évolutions de la dernière version de test de firefox (FF 3a7) j'ai eu la surprise de tomber sur cette note : Cross site XMLHttpRequest specification implemented. Firefox 3 pourra utiliser XMLHttpRequest pour envoyer des requêtes ailleurs que sur le site d'origine de la page !

Lire la suite...

vendredi 19 janvier 2007

Concevoir des applications web selon un modèle événementiel

Je suis tombé sur un fort intéressant billet de Christian Heilmann publié sur le blog de YUI. Il suggère d'utiliser une approche événementielle pour concevoir des applications web.

Lire la suite...

lundi 25 décembre 2006

Sur la route de Firefox 3

Alors qu'une première version de Firefox 3 alpha est sortie il y a quelques jours, Tristan signale une présentation des futures nouveautés de Gecko 1.9 par Stuart Pavlov. Petit résumé de ce que j'ai cru comprendre... euh et de quelques recherches dans les roadmaps du projet.

Lire la suite...

lundi 31 juillet 2006

Thunderbird 2 pointe son museau et autres nouvelles du Lézard

Un première version de test de Thunderbird 2 vient de sortir, pendant que les versions stables de FF et TB passent la 1.5.0.5, correction de quelques soucis de sécurité obligent. Et la communauté du lézard continue s'activer...

Lire la suite...

- page 1 de 2