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

jy[B]log

Journal d'un geek

jeudi, février 9 2006

Conférence sur le client riche avec XUL et PHP

Pour le 2 Mars prochain, l'AFUP a eu la bonne idée d'organiser un rendez-vous techno (non, rien à voir avec le courant musical du même nom :-) ) : clients riches avec XUL.

J'animerai une conférence sur les technologies Mozilla, en particulier XUL. Au programme : petit historique, déscriptif de XUL, et que faire avec XUL, pourquoi et comment : architectures possibles d'une application XUL (client lourd riche, client léger riche...), interaction de XUL avec d'autres technos et usages (XBL, SVG, JS, Ajax, services webs, PHP...), avantages et inconvénients par rapport aux autres technos (HTML...) etc..

Elle sera suivit par une conférence animé par Edouard Andrieu et Olivier Grange-Labat, respectivement chef de projet et responsable technique au sein de LeMonde.fr. Ils vous montreront un exemple concret d'une application réalisée avec XUL : "Le sept". C'est le système de gestion de publication de contenu pour le site lemonde.fr, avec une partie cliente en XUL, sous forme d'extension pour Firefox (partie dont j'avais démarré le développement ), et une partie services web développée en PHP.

Si vous voulez voir ce qu'on peut faire avec du XUL et les autres technologies Mozilla, c'est un moment à ne pas rater. L'application "Le sept" est impressionnante à voir (moi-même je reconnais à peine ce que je leur avait laissé, ils ont super bien bossé chez lemonde.fr :-) ), montrant les avantages d'utiliser des technologies adaptées pour faire du client riche, plutôt que d'utiliser des veilles technologies comme HTML.

Nous serons bien sûr aussi là tous les trois pour répondre aux nombreuses questions que vous nous poserez.

Pour les renseignements pratiques, les inscriptions (c'est gratuit), voir sur le site de l'AFUP.

jeudi, février 2 2006

Montée en puissance de XUL dans les entreprises

Je n'ai finalement pas passé une journée, mais deux au salon Solutions Linux (qui se termine ce soir). En tant que membre de Mozilla-Europe, j'étais bien entendu sur le stand de l'association. Et comme d'habitude, j'avais une triple casquette : Mozilla-europe, xulfr, et Disruptive Innovations. Je dois dire que je n'ai pas été déçu par cette édition 2006.

Lire la suite...

lundi, décembre 19 2005

SkyMessenger : Skyrock se lance dans le XUL

Paul avait annoncé il y a trois jours que le nouveau client de messagerie instantannée de skyrock, SkyMessenger, était fait en XUL. J'ai voulu en savoir plus.

Lire la suite...

lundi, décembre 5 2005

Demandez la lune en SVG

Via cette petite démo en SVG, essayez de mettre la lune en orbite :-) (bien sûr, il vous faut Firefox 1.5)

Plutôt sympathique je trouve, et, à part les formules mathématiques, on peut voir que l'on peut faire des choses plutôt puissantes en SVG tout en ayant un code relativement simple et léger (essayez de faire la même chose en HTML ;-) ). Je crois qu'on va bientôt voir debarquer de nombreuses démos et applications utilisant SVG...

vendredi, novembre 25 2005

L'avenir des clients riches

J'ai été invité hier à participer à une table ronde au forum intégration : Évolutions vers le client riche et client intelligent. J'étais au milieu d'intervenants venant de boîtes dont vous avez certainement entendu parlé un jour ;-) : Adobe, Microsoft, Sun Microsystems. Dans une ambiance tout à fait conviviale, chacun a présenté au public comment leur entreprise voyait l'évolution du client riche, et surtout comment cela se concrétisait dans leurs produits : technologie Flex chez Macromédia, plateforme .Net/Avalon chez Microsoft, les évolutions de J2EE chez Sun (JSF etc), et bien sûr, pour ma part, la plateforme Mozilla et son langage XUL.

Le public a pu ainsi voir un panorama des principales solutions du marché (il en existe d'autres bien sûr, moins connu mais tout à fait concurrentielle, comme xWidglets) pour la réalisation d'applications reposant sur du client riche.

L'avenir des applications web, donc, c'est certain, ce n'est pas HTML, ni Ajax tel qu'on le connait, comme je l'avais dit. Les nouvelles plateformes proposent en effet des technologies qui permettent la réalisation d'interfaces utilisateur riches (avec des vrais menus déroulants, des vrais onglets, des vrais treeviews etc.) pouvant interagir facilement avec des services web avec un minimum de transparence (bye bye la manipulation de xmlhttprequest ou autres API bas niveau).

Bien qu'elles aient les mêmes objectifs, ces technologies vont se différencier par leur approche. Par exemple, si on veut une intégration poussée et une relation étroite entre une multitude d'applications, le choix se tournera vers Microsoft qui fait de Windows (Vista, .Net...) une véritable plateforme d'exécution et de développement (en schématisant, le client n'est plus le navigateur, mais windows). Mais si on est dans un environnement avec des systèmes hétérogènes (windows, macos, linux), on se tournera plutôt vers du Mozilla, J2EE ou Flash+Flex solutions qui se différencient aussi entre elles (mais je ne vais pas détailler...).

L'autre point qui va aussi faire la différence dans le choix d'une de ces solutions va être les outils de développement associés. Et là il est clair que Microsoft écrase tout le monde avec son Visual Studio. Alexis de chez Sun a même avoué qu'ils prenaient Microsoft comme modèle pour cet aspect, mais qu'ils leur restaient encore du chemin à parcourir :-)

Coté Mozilla pour le développeur, il est clair qu'on est encore loin d'avoir quelque chose qui ressemble de loin par temps de brouillard à du Visual Studio. Mais ça va venir : des plugins pour Éclipse sont en train de voir le jour (et même utilisables). Et il ne faut pas non plus perdre de vue que les technologies Mozilla, par la richesse de XUL, permettent d'être déjà bien plus productif que lorsqu'on développe une appli web classique en HTML (même en ayant pour outils qu'un simple éditeur de texte).

dimanche, novembre 6 2005

Faire de l'Ajax sans le savoir

Dans un billet précédent, "Ajax est obsolète", j'expliquais que pour moi, Ajax n'est pas une solution d'avenir car trop complexe et trop bas niveau (le fameux xmlhttprequest).

J'avais alors émis l'idée d'avoir plutôt des balises spécialisées, interpretées directement par le navigateur, qui se chargeraient des opérations bas niveau et avec lesquelles on aurait juste à indiquer des informations minimales dans des attributs comme l'URL du service web à invoquer. Elles permettraient donc de faire de l'Ajax sans le savoir, sans avoir à taper des lignes de codes javascript complexes. Exactement en fait comme la balise HTML <a> ou <form>, qui utilisent finalement une forme d'Ajax sans que vous le sachiez : elles ont une url dans un attribut, elles envoient des données via xmlhttprequest à cette url, et elles modifient (ou plutôt remplacent) la page courante à partir du contenu de la réponse reçue.

J'avais donné alors l'exemple de la balise template en XUL qui est parfaitement dans cet esprit : on cache ce qui est bas niveau (xmlhttprequest), on permet d'éviter l'usage du javascript. Le résultat est alors une techno simple à utiliser pour développer, économe en temps de dev, de débuggage, et économe en bande passante ou en ressource système (il n'y a pas 50ko de scripts à executer puisque les balises sont directement interpretées par le navigateur).

Je voulais commencer à faire une bibliothèque JS qui permettrait de vous montrer concrétement mon idée. Mais en fait d'autres l'ont fait avant moi. Je suis en effet tombé, au hasard du surf, sur l'offre de backbase. Ce qui est intérressant sur ce site, c'est le code source de leur page. Que voit-on ? Des balises <include>, <event>, <buffer>, des attributs behavior, followstate etc.

On devine alors aisément à quoi elles servent : inclure des morceaux de pages à des endroits précis, qui sont éventuellement rechargés à l'apparition d'évènements particuliers, déclenchés par des actions spécifiques de l'utilisateur. En clair : vous avez le même résultat que ce que l'on fait en Ajax, mais sans avoir à écrire une seule ligne de code javascript. Quelques balises et quelques attributs bien placés, et vous voilà avec une interface utilisateur dynamique.

Exactement donc dans le même esprit que la balise html <a>, <form>, ou la balise XUL <template> : simplicité, efficacité. Bref, une techno accessible à tout développeur web, et pas seulement aux geeks.

Ce qu'a fait Backbase a toutefois un inconvénient : avoir une page utilisant leurs balises nécessite d'inclure leurs fichiers JS qui sont volumineux. Ce javascript sert à parser la page, et à interpreter les balises et attributs. On a donc une page lourde et longue à charger mais aussi longue à s'éxecuter.

Cependant, imaginez que le navigateur puisse interpreter nativement des balises du même style que celles de Backbase. Là je pense qu'on pourra vraiment parler de web 2.0 (ou 3.0 ?) ;-) (tout en résolvant une partie des problèmes d'accessibilité posés par Ajax).

vendredi, novembre 4 2005

Firefox 2 et 3

Gecko, en tant que plateforme de développement prend de plus en plus d'importance pour Mozilla. En effet, ils sont en train d'établir une roadmap dédiée à Gecko, en plus des roadmaps habituelles conçernant chaque produit (Firefox, Thunderbird...). Chacune des roadmaps produits vont se calquer sur la roadmap Gecko.

Firefox 1.5 n'est pas encore sorti qu'un premier brouillon de la nouvelle roadmap de Firefox vient d'être publié. Il indique que Firefox 2.0 sera basé sur Gecko 1.8.1 et non 1.9, et sortira dans la seconde moitié de 2006. Ce ne sera qu'à partir de la version 3 que Firefox pourra profiter des nombreuses nouveautés de Gecko 1.9, et ce, en 2007 seulement. Cette version 3 marquera d'ailleurs une étape importante dans l'histoire de Mozilla, puisqu'elle utilisera XulRunner, le lanceur d'applications XUL, intégrant Gecko 1.9.

Firefox 3.0 se résumera alors à un zip de fichiers XUL, XBL, javascript, et CSS. Ce qui correspond en gros aujourd'hui, dans votre répertoire Firefox, aux fichiers chrome/browser.jar, chrome/en-us.jar (ou fr-fr.jar), chrome/classic.jar (le thème classic) plus éventuellement quelques composants (.so ou .dll). Ce qui veut dire que vous aurez un navigateur de seulement 2-3Mo à télécharger, occupant seulement 2-3 Mo sur votre disque (en plus de XulRunner bien entendu, mais comme celui-ci sera partagé avec d'autres applications tierces...).

XulRunner interresse de plus en plus de monde. Il est encore loin de sa version 1.0, mais des applications commençent déjà à sortir, comme Daim XUL, un logiciel de traitement d'images, dont j'avais pu voir une démonstration plutôt impressionnante aux JDLL en octobre dernier.

samedi, octobre 1 2005

Pourquoi les extensions sont désactivées dans une nouvelle version de Firefox ?

Beaucoup s'interrogent sur le fait que des extensions qu'ils ont installés dans Firefox 1.0, soient désactivées automatiquement lorsqu'ils testent par exemple Firefox 1.5 beta. Voici quelques explications.

Lire la suite...

Lecture du livre XUL

J'ai lu le livre que j'ai reçu la semaine dernière Les Cahiers du programmeur : XUL.

Il passe en revu les technologies principales de Mozilla, comment les utiliser. Le lecteur a un bon aperçu de toutes les possibilités de la plate-forme, et ce au travers du développement d'un forum. Une personne totalement néophyte en développement web saura à la fin du livre se faire de petites applications ou des extensions sympas en XUL. En effet, il y est expliqué les bases des langages XUL, CSS, Javascript, mais aussi de XBL, RDF, SOAP etc. C'est un bon tutoriel pour découvrir la plate-forme Mozilla et ses diverses technologies, et voir les relations entre elles dans une application. Il parle même du futur de la plate-forme, comme par exemple XulRunner.

Bien entendu, ce livre est clairement destiné aux débutants et avec ces quelques 300 pages, il paraîtra léger aux développeurs un peu confirmés dans le domaine puisqu'il ne décrit pas tout en détails. Cependant il donne pas mal de liens tout le long du livre, vers lesquels s'orienter une fois que l'on maîtrise les bases et que l'on veuille en savoir plus.

vendredi, septembre 30 2005

Recherche de projets XUL pour les JDLL

Paul Rouget cherche des personnes qui ont réalisé des projets basés sur la plateforme Mozilla, afin de montrer ces applications lors des Journées Du Libre à Lyon lors de sa conférence. Si il y en a qui veulent aussi participer au stand pour montrer leur application, qu'ils se fassent connaître !

Plus de précision sur le blog de Paul.

mardi, septembre 27 2005

WPF/E : du XAML dans vos navigateurs

À la conférence des développeurs professionnels (PDC) de Microsoft qui a eu lieu il y a une douzaine de jour, la firme de Redmond a fait une démonstration de WPF/E : Windows Presentation Foundation Everywhere.

En gros, il s'agit d'une solution permettant de créer des applications avec le langage XAML et Javascript, et de pouvoir en afficher le résultat dans un navigateur via un plugin. Ils ont fait une démo en faisant fonctionner une appli WPF/E dans IE 7 mais aussi dans Safari, pour montrer qu'il n'y a pas besoin du framework .Net.

En clair, XAML permettra de remplacer HTML pour avoir des interfaces utilisateurs riches dans les applications web.

Au fait, ça ne vous rappelle rien ce truc ? Mais si bien sûr : ils ont repris exactement le même principe qui existe dans Mozilla depuis quelques années déjà, avec le langage XUL ! Je ne sais pas pour vous, mais je sens que ça va chauffer dur sur le web dans les prochains mois..

Quelques liens trouvés au hasard (il n'y a pas encore énormément d'infos sur WPF/E) :

via le standblog : La prochaine guerre des standards

samedi, septembre 17 2005

Nouveau livre sur XUL

C'est en français, écrit par des français, Jonathan Protzenko et Benoît Picaud , et il a l'air plutôt complet : Les cahiers du programmeur : XUL aux éditions Eyrolles. Il vient tout juste de sortir.

Je vous en reparlerai quand je m'en serai procuré un exemplaire et que je l'aurai lu. (Il parait que xulfr est cité toutes les dix pages, dixit Jonathan :-) )

vendredi, août 26 2005

XulRunner : l'arme de XUL contre XAML

Un lecteur, Thomas, me fait trés justement remarquer que cela fait presque deux ans que j'ai écris ce billet, La nouvelle bataille du web s'annonce : XUL vs XAML, dans lequel j'émettais quelques souhaits à propos de XUL pendant ces deux dernières années, de façon à être prêt face à XAML qui devait voir le jour cette année avec Windows Vista.

Cette bataille annonçée se fera-t-elle comme prévue ?

Lire la suite...

mardi, août 9 2005

MozMapEditor

Paul Rouget, de l'équipe de xulfr.org, vient de publier sur son blog les premières captures d'écran de MozMap Editor, un nouveau logiciel qu'il est en train de réaliser avec René-Luc D'Hont.

C'est un logiciel de cartographie, utilisant les toutes dernières technologies Mozilla (qui sont toujours en développement ;-) ) : xulrunner pour lancer l'application et SVG pour l'affichage des cartes. Et bien sûr ils utilisent le traditionnel XUL et XBL pour l'interface utilisateur, et javascript pour les fonctionnalités. Mais pas de composant C++.

Je suis impatient de voir ce que ça donne en vrai. Vivement la création de leur page projet sur Mozdev !

jeudi, juin 30 2005

Projet Xul dans Konqueror

Parmis les 24 projets pour KDE retenus pour le summer of code de google, il y en a un qui concerne le support de Xul dans Konqueror. Je me rejouis d'une telle initiative. Permettre d'afficher des fichiers XUL dans le navigateur permettrait d'aider à la démocratisation de l'utilisation de XUL dans les applications Web.

Mais je reste tout de même perplexe, voir même inquiet quant au résultat de cette implémentation, aprés avoir lu les motivations du développeur qui a proposé le projet.

Lire la suite...

mardi, mai 31 2005

bouffe xulfr

Discuter XUL, XPCOM, SVG, Mozilla etc. autour d'une pizza sur Paris samedi prochain, ça vous tente ? C'est par là alors...

vendredi, mai 27 2005

Pourquoi de la 3D dans XAML ?

Sur le net, partout où je lis des commentaires partisans de la technologie XAML (le langage XML pour les interfaces des futures applications dans Windows longhorn), ou même dans les conférences pro-microsoft, ils avancent tous la formidable possiblité de faire de la 3D, nativement dans XAML. Ce qui seraient selon eux un avantage indéniable face à XUL. Soit.

Mais j'ai une question : qu'est ce qu'on en a à fiche de faire de la 3D pour les, disont, 98% des applications développées dans le monde ou qui seront développées avec XAML ? Même les developpeurs de jeux ou de logiciels de CAO/dessin 3D n'en n'ont certainement strictement rien à fiche des possibilités 3D de XAML. Je suis certains qu'ils prefereront utiliser des bibliothèques plus bas niveau (OpenGL, directX etc..). À part pour faire des gadgets visuels inutiles, j'avoue ne pas trouver d'exemples concrets d'utilisations de la 3D dans les logiciels autres que ceux cités précédement, donc ne pas trouver d'interêt à pouvoir faire de la 3D en XAML.

mardi, avril 19 2005

Xulrunner en action

Il est possible depuis quelques temps de télécharger des executables de XulRunner, la plateforme "standalone" d'éxecution d'application XUL. En clair, XulRunner permet de se passer de Mozilla ou Firefox pour éxecuter du XUL. Il existe même des petites démos dont mybrowser.

Lire la suite...

mercredi, avril 13 2005

Hébergement pour CopixStudio

Ça y est, mon projet, CopixStudio existe officiellement si je puis dire, puisque il a maintenant son propre site et est hébergé dans le gforge de l'adullact.

Pour l'instant, le cvs est vide, mais ça ne saurait tarder à ce qu'il se remplisse. Conçernant le site, j'ai utilisé dokuwiki : c'est un système wiki qui me convient trés bien pour avoir un mini cms, trés simple à configurer, et sans base de donnée (je n'ai pas d'accés à mysql semble-t-il sur l'adullact).

Prochaine étape : recruter quelques développeurs. Si il y en a qui savent faire des extensions pour Firefox et qui connaissent Copix au moins en tant qu'utilisateur (connaître le coeur du code de Copix n'est pas nécéssaire) qu'ils me fassent signe. Cela peut être intérressant puisque CopixStudio cache un autre projet (si il avance suffisement) : un framework pour IDE en XUL (À terme, CopixStudio ne sera qu'une extension de cet IDE).

vendredi, mars 18 2005

Inclure du JS dans un JS

Mozilla/Firefox, via le composant xpcom mozilla.org/moz/jssubscript-loader;1, permet d'inclure un script javascript dans un autre script. Il faut faire comme ceci (Note : cela ne fonctionne pas dans les pages web, il faut que les deux scripts soient installés dans une extension) :

var loader =  Components.classes["@mozilla.org/moz/jssubscript-loader;1"]
    .getService(Components.interfaces.mozIJSSubScriptLoader);

loader.loadSubScript("/chemin/vers/le/script/à/inclure");

C'est plutôt interressant. Si on met ça dans une petite fonction que l'on nomme au hasard, include, c'est encore mieux. Cela évite ainsi d'avoir à mettre un multitude de balise <script>, pour les gros projets.

Mais je viens de découvrir autre chose. Passons un objet javascript en deuxième paramètre :

var monObjet = new Object();
loader.loadSubScript("/chemin/vers/le/script/à/inclure", monObjet);

Toutes les fonctions et variables globales déclarées dans le script inclus, deviennent des méthodes et propriétés de l'objet qu'on a passé ! Ainsi, si dans /chemin/vers/le/script/à/inclure, j'ai :

 function test(){ alert("bouuu !"); }

Alors je peux faire

 monObjet.test();

Cette technique est utilisée par exemple dans Chatzilla, le client IRC de Mozilla. Celui-ci offre un moyen simple de développer des plugins permettant d'ajouter des fonctionnalités au logiciel. Un plugin se résume à un simple fichier javascript, devant contenir des fonctions avec des noms bien précis. Et pour déclarer le plugin, il suffit de mettre le fichier dans un répertoire spécifique, Chatzilla n'ayant plus qu'à l'inclure lors du démarrage, en passant un objet comme je l'ai montré. Si il ne passait pas cet objet, il y aurait des erreurs de redéfinition des fonctions au chargement de chaque plugin (puisqu'elles ont les mêmes noms d'un plugin à l'autre).

Bien sûr, une autre solution serait de définir dans le fichier du plugin, un objet implémentant une interface bien précise. Mais il faudrait alors, en plus de mettre le fichier du plugin au bon endroit dans chatzilla, instancier et déclarer cet objet auprés de chatzilla, en appelant une fonction de l'API du logiciel, qui serait par exemple registerPlugin(objetplugin) ou quelque chose comme cela.. Ce qui est moins "sexy" que la méthode ci-dessus :-)

- page 2 de 4 -