mercredi, janvier 31

Firebug : quand l'exceptionnel se fait indispensable

Firebug 1.0 est sorti en début d'année, et si vous développez un peu, je vous encourage vivement à le mettre à jour / réessayer / découvrir si ce n'est pas encore fait. Le meilleur ami du développeur Ajax fait maintenant tout ce qu'il faut pour vous aider au quotidien :
- inspecter et analyser le code HTML élément par élément
- visualiser les styles de vos pages aisément
- voir toutes les requêtes HTTP dans le détail
- débuguer Javascript mieux que jamais
- examiner les objets DOM simplement

Et beaucoup de petites choses pratiques (messages console, débugage sous IE !) que je vous laisse découvrir en font maintenant un outil à la fois fiable et incontournable... qui nous rend impatients d'en découvrir la prochaine version !

vendredi, janvier 19

Dojo Offline Toolkit : comment ça (va) marche(r) ?

Dojo Offline Toolkit a pour but d'être, comme son nom l'indique, une boîte à outils rendant aisé le développement de fonctionnalités offline pour les applications web d'hier et de demain. Pour cela, plusieurs choses sont nécessaires :
- une librairie qui permet le stockage d'information en mode offline : ça existe déjà, ça s'appelle dojo.storage.
- un proxy web léger sur le poste client permettant de gérer le mode offline de façon transparente pour l'utilisateur (je vais y revenir).
- une API permettant aux développeurs d'utiliser facilement les fonctionnalités du toolkit

Bon, plaçons-nous maintenant sur la machine cliente qui va utiliser une application fonctionnant avec le Toolkit :
- elle va regarder si vous disposez du proxy web de dojo offline
- si vous ne l'avez pas, elle vous propose de l'installer (installation simple : système NSIS pour Windows, XPI pour Linux) immédiatement
- que vous ayez le proxy ou non, vous utilisez ensuite l'application online
- une fois hors ligne et si vous disposez du proxy, celui-ci consulte le fichier ProxyAutoConfiguration (PAC) de votre navigateur et vous dirige vers votre version locale de façon transparente de l'application
- vous utilisez l'application hors ligne qui est alors entièrement basée sur Javascript et qui vous permet de stocker des informations dans votre navigateur grâce à dojo.storage
- dès que vous repassez en ligne, le proxy vous reconnecte au serveur distant et la synchronisation offline /online peut avoir lieu

Tout le travail qui est en cours consiste donc à créer le proxy (à partir de polipo, un projet opensource existant) et construire l'API... résultat des courses dans 3 mois !

mardi, janvier 16

Valeur ajoutée du blogueur : pertinence, rareté, reformulation et droit de citation

J'aime lire les blogs. L'expression "sagesse des foules" a pour moi vraiment un sens quand je constate, chaque jour, la richesse d'information qui est désormais disponible sur la toile. Malheureusement, comme toute production, les blogs ont un déchet important... et celui que vous lisez à l'instant même ne doit probablement pas échapper à la règle !

Ainsi, l'agacement qui me gagne à la lecture de certains posts inutiles autant que l'envie de toujours apporter quelque chose à mes lecteurs m'amène régulièrement à me poser la question : qu'est-ce qui fait la valeur ajoutée d'un article ? Autrement dit au delà du sempiternel "comment mener le lecteur à mon article ?" (le référencement), j'aimerais plutôt demander "en quoi mon article peut être utile au lecteur ?".

Parce que je dois dire que j'en assez de voir des "articles" qui ne sont que des catalogues sans logique (genre "87 applications web 2.0"), des listes de liens sans explications ("bonjour, voici 3 liens intéressants !"), voire des articles à 80% pompés d'autres sources. Oui, je sais que c'est bien pratique de prendre des paragraphes entiers chez ses "copains" blogueurs : ça fait du contenu facile pour les robots, ça augmente la fréquence des posts... mais ça n'est ni malin, ni moral, ni vraiment utile à la communauté.

Qu'on ne se méprenne pas : citer les autres en les backlinkant est une excellente habitude de la blogosphère (ça permet de connaître de nouvelles sources pour les lecteurs, c'est une manière de récompenser l'auteur par de nouveaux visiteurs et ça améliore la pertinence des moteurs de recherche), les quasi-plagier en est une autre.

La moindre des choses à faire pour évoquer le contenu réalisé par autrui est de respecter quelques règles de bon sens et de respect :
- le contenu en quelques phrases tu présenteras, en perspective tu le mettras
- pas plus de 10% d'un article tu ne citeras
- toujours tes sources tu backlinkeras

Ca peut paraître évident, mais j'ai vu récemment fleurir ça et là des blogs qui se contentent des catalogues de liens et de pompages divers (et je ne parle pas des "blogs-satellites" purement utilisés pour le référencement) : valeur ajoutée = 0, pollution de la blogosphère = maximale. Voilà c'est dit, et miracle, mes aigreurs d'estomac ont disparu.

J'en viens donc à la valeur ajoutée du blogueur. La plupart des posts blogués en ce bas monde est basé sur une actualité, une analyse ou une découverte faite par autrui. Tout l'art du blogueur est donc d'ajouter une valeur supplémentaire au contenu auquel il se réfère et il a pour cela plusieurs méthodes :
- traduire le contenu dans une autre langue
- critiquer le contenu
- établir des corrélations avec d'autres contenus en les mettant en perspective
- reformuler le contenu pour le rendre intelligible à d'autres lecteurs
- analyser le contenu pour en faire ressortir des aspects particuliers ou peu évidents
- résumer le contenu (sans le trahir... exercice délicat !)
- ... (liste à compléter avec votre aide)

Je suis de ceux qui pensent que le blog n'est pas qu'un espace de liberté pour le blogueur, et que celui-ci doit avoir conscience d'un certain nombre de devoirs implicites en tant que membre de fait de la blogosphère. Or la qualité de cette dernière dépend de chacun de nous.

vendredi, janvier 12

Web offline : Brad Neuberg prépare la solution ultime

Alors que l'iPhone remporte (déjà) la palme du buzz 2007 et que myBlogLog se fait racheter par Yahoo, Brad Neuberg s'apprête tout simplement à changer le monde du web.

Cet illustre inconnu n'est autre que le génial créateur de Dojo.storage, la librairie qui vous permet de stocker des données de manière persistante et hors ligne dans la mémoire de votre plug-in Flash ou de votre navigateur.

Son nouveau projet, très remarqué par de nombreux hackers de premier plan, se nomme Dojo Offline Toolkit et a pour ambition de rendre disponible en mode offline toute application web de manière assez simple pour les développeurs.

Je vous encourage vivement à regarder les petits cas d'utilisation qu'il a imaginés pour illustrer les possibilités que va offrir son outil (Gmail, Blogger...). Si cela vous intéresse, je pourrai aussi vous expliquer comment cela va marcher techniquement (et je n'oublie pas que je vous dois un tutoriel sur dojo.storage qui est en préparation) dans un prochain post.

jeudi, janvier 4

Apollo, XUL, WPF... qui sera la prochaine plate-forme web de référence ?

Ayant récemment découvert l'excellent blog "Universal Desktop", je me permets de faire un point sur ce qui sera certainement une des grandes batailles de 2007 : qui sera la plate-forme de référence pour les interfaces web riches ?

Apollo d'Adobe est un nouveau runtime permettant de visualiser des contenus DHTML, Flash ou PDF hors du navigateur. Ce runtime aura d'une part toute la puissance d'Adobe pour s'imposer sur les postes de travail (qui n'a pas Adobe Reader et/ou Flash Player sur sa machine ?), et toutes les communautés de développeurs Ajax, Flex (un excellent framework de développement d'applications web riches) et Flash potentiellement accessibles.
Apollo pourrait bien être la grande nouveauté 2007, surtout lorsque eBay fonctionnera sous ce runtime (c'est pour très bientôt)...

WPF de Microsoft est, là encore, une tentative de faire du web riche hors du navigateur. Les possibilités visuelles que promettent WPF seraient, semble-t-il, bien au-dessus du lot (avec notamment la 3D)... et Microsoft y utilisera ses meilleures armes : d'excellents outils pour le développement (avec par exemple le déconcertant Windows Expression), un déploiement de base sur toutes les machines Vista, utilisation de l'excellent Framework .NET.
WPF/e (e pour everywhere) est le portage de WPF au sein du navigateur pour les gens ne disposant pas du framework. Le "everywhere" est néanmoins très relatif : un plug-in navigateur sera nécessaire et fonctionnera uniquement pour Windows et Mac.

XUL de la fondation Mozilla a le mérite d'être le pionner du genre (et a d'ailleurs été largement copié par MXML d'Adobe et XAML de Microsoft) : réaliser rapidement des applications desktop web riches s'exécutant dans Mozilla Firefox ou un runtime spécifique est maintenant possible depuis plusieurs années... mais XUL ne perce pas significativement malgré tout. Trop en avance sur son temps ? Toujours déservi par un manque criant d'outils adaptés pour le développement ? Mozilla n'a néanmoins pas encore perdu la bataille et avec un soutien extérieur (IBM, Google...), il est possible que XUL refasse surface.

Le web riche classique (Ajax, Flash... et Java ?) a l'avantage considérable d'être le standard actuel surlequel de nombreux dévéloppeurs, mais surtout la majeure partie des utilisateurs, ont leurs habitudes. Ses possibilités sont encore très grandes (COMET, mode offline)... mais plus on va loin dans la richesse et la portabilité des interfaces Ajax, plus le développeur est au royaume de la bidouille Javascript (jusqu'à atteindre des niveaux de productivité lamentable).
Les navigateurs ont néanmoins fait beaucoup de progrès : ie7 et ff2 gèrent tellement mieux JS que leur prédécesseurs que les choses pourraient s'arranger avant que les développeurs (et ceux qui les payent) ne soient complètement dégoutés de ce type de développement.

Quelques challengers tenteront d'émerger dans cette guerre sans merci :
OpenLazlo 4.0 (actuellement en bêta) qui n'est pas une plate-forme à proprement parler mais qui permettra aux développeurs de réaliser une interface Flash et son équivalente Ajax avec le même code.
Quicktime pourrait semble-t-il marquer l'arrivée d'Apple sur ce marché : l'outil est pour le moment techniquement sous-exploité alors qu'il est très répandu sur le poste de travail... à suivre !
Google Desktop qui offre désormais la possibilité aux développeurs de construire des widgets
relativement facilement constitue encore une piste. Cette solution aura néanmoins du mal à offrir plus que de petits gadgets aux utilisateurs finaux.

Au milieu de cette foule de nouveautés, une seule certitude pour le monde du web (utilisateurs, développeurs, décideurs) : préparez-vous au changement !

jeudi, décembre 28

Tim O'Reilly : "Le web 2.0 est un fait, une nouvelle ère. Il n'a donc pas de définition…"

J'en rajoute une couche sur le thème "le web 2.0 n'a pas de définition". Comme je l'ai évoqué à plusieurs reprises sur ce blog et dans plusieurs débats, le web 2.0 désigne une époque, pas un concept précis.

J'ai vu aujourd'hui avec un certain plaisir que c'était également l'opinion de Tim O'Reilly, c'est du moins ce qu'il a dit à Francis Pisani.

Bon, je vous embête plus avec ça, promis.

jeudi, décembre 14

Pour en finir définitivement avec le web 3.0...

Non, je ne vais pas vous parler cette conférence "Le Web3" à laquelle je n'étais pas et qui ne m'intéresse pas vraiment (malgré les polémiques qu'elle a créées) : le programme manquant un peu de concret au goût du petit entrepreneur-bidouilleur que je suis.

Le web 3.0 est un truc dont certains ont eu l'idée (quelle originalité !) dès que le concept de web 2.0 a un peu pris. Chacun met un peu ce qu'il veut derrière cette idée (comme pour le 2.0, me direz-vous ?) et personnellement je ne lui trouve pas de sens... mais il me faut probablement expliquer pourquoi !

Le web 2.0, je l'ai dit à de nombreuses reprises, est un constat a posteriori d'un changement générationnel : après la crise 2001-2003, des modèles (techniques et business) nouveaux, plus solides et plus ambitieux apparaissent et font leur preuve. En 2004, Tim O'Reilly fait donc le point sur cette nouvelle génération qu'il nomme "web 2.0".

Tout ça a bien une logique et c'est celle des cycles économiques de l'innovation. La formule est immuable : une phase d'émergence (pour le web avant 1995), suivie d'une croissance rapide (1996-2000)... après l'euphorie c'est inévitablement la crise qui corrige les excès (2001-2003) et permet une phase de consolidation (depuis 2004). L'histoire nous montre que toutes les révolutions industrielles ont subi les mêmes cycles et que les crises jouent systématiquement le rôle de révélateur des bons et des mauvais modèles : c'est pourquoi le moment où le concept de web 2.0 a émergé est aussi important que le contenu de "What is web 2.0". C'est probablement cela que les tenants du web 3.0 n'ont pas compris.

Maintenant que nous sommes dans la phase de consolidation, le web va continuer ses avancées sans toutefois connaître les mêmes soubresauts que durant sa jeunesse : il y aura toujours des innovations, toujours des phénomènes spéculatifs, mais les croissances fulgurantes tout comme les grands désastres devraient s'atténuer peu à peu (laissons-nous quand même encore un peu de temps, la phase de consolidation n'a fait que débuter !).

Il en va autrement d'internet de manière plus générale : des réserves de croissance considérables sont encore très faiblement explorées. Les univers virtuels tels que les phénomènes SecondLife ou World Of Warcraft sont par exemple un aperçu de ce que nous réserve l'avenir. Ces univers possèdent en effet déjà leur propre économie interne avec des possibilités de faire de l'argent (immobilier virtuel dans Second Life, revente d'objets magiques dans WoW) pour des usagers imaginatifs et/ou déterminés.

Il en est de même pour l'usage du mobile qui n'a toujours pas percé. Les promesses du wifi universel, du wimax répandu, ou de l'UMTS bon marché ne sont pour le moment que des promesses. Pourtant, les applications qui vont s'ouvrir à l'utilisateur lorsqu'elles seront devenues réalité seront considérables et elles ne concerneront pas toutes, loin de là, le seul web.

Un des rares à y voir clair dans cette histoire est une fois encore Fred Cavazza qui propose l'hypothèse d'un Internet 3.0... mais nous avons encore tout le temps avant de nous apercevoir que nous nous trompons, c'est tout l'intérêt de la prospective !

mercredi, décembre 6

Synchronisation Desk Office / Web Office : ca bouge très vite

J'annonce déjà depuis quelques temps l'apparition imminente de solutions permettant de tirer le meilleur parti du webtop et du desktop... j'avais ainsi parlé il y a quelques mois de l'éventuelle arrivée d'un plug-in Writely pour Microsoft Word permettant de synchroniser le contenu d'un document Word avec sa version en ligne Writely.

C'est finalement, Zoho, un excellent outsider du weboffice, qui a sorti le premier ce fameux plug-in, marquant ainsi quelques précieux points dans la lutte qui l'oppose à Google et aux autres challengers du domaine.

LiveDocuments est une autre initiative récente permettant le travail collaboratif au sein d'Office... une solution qui comporte un désavantage majeur par rapport à Zoho, puisque vous restez contraints à l'utilisation de Ms Office et de votre poste de travail. LiveDocuments reste néanmoins une solution intéressante pour des utilisateurs sédentaires qui souhaitent collaborer sur un document Ms Office sans rien changer à leurs habitudes.

Je pense que la stratégie de Google Docs sera encore différente des deux précédentes : elle consistera probablement à embarquer un petit serveur web sur la machine du client afin de faire tourner l'application en mode déconnecté et à permettre par la suite une synchronisation client/serveur.
Rien est encore sûr sur le sujet mais quelques morceaux de code actuels de Google Docs donnent quand même beaucoup de raisons d'y croire... et puis je doute que Google veuille inciter ses clients à utiliser Ms Office !

Microsoft parie de son côté sur plusieurs produits pour parvenir à cette synchronisation :
- son excellent portail d'entreprise Sharepoint dont l'intégration avec Office est très réussie
- Groove (création du nouveau "Chief Architect", Ray Ozzie) qui est une sorte de livedocuments améliorée (et payante).
Mais pour l'utilisateur moyen ne disposant pas d'une grosse infrastructure, "le dinosaure de Redmond" ne propose à ma connaissance rien... et ça, c'est un gros manque pour le moment.

Enfin, la dernière option qui pourrait être utilisée est celle de Moxie (un traiement de texte web fonctionnant en mode connecté ou déconnecté sans aucune installation) si cette application était un peu enrichie d'un point de vue fonctionnel. Je remercie au passage Brad Neuberg d'avoir intégrer ma petite contribution à dojo.storage, le système de sauvegarde local de Moxie.

vendredi, décembre 1

Un an de web2rules (attention, post "tarte à la crème")

Voilà donc un an que je me répands dans ces pages web (de manière assez aléatoire, je le concède) pour mon grand plaisir et celui, beaucoup plus sujet à discussion, de mes lecteurs.

Vous vous en moquez probablement mais au moins, c'est dit... et pour que ce post ait quand même un intérêt, je vais maintenant tenter d'y résumer l'ensemble de cette année de blogging (attention, très dangereux, à ne pas reproduire chez vous).

Pour ceux qui aiment les chiffres :

Environ 150 personnes en viennent à butiner en ces lieux chaque jour : si la moitié le fait pour lire la bible du web 2.0 francisé par votre serviteur, il en est une autre moitié qui suit plus ou moins régulièrement mes divagations sur le webtop, google (dont je me promets de ne plus parler... dans ce post), les technos du web 2.0 et l'avenir du web en général.

Les lecteurs sont souvent français et très régulièrement franciliens, sont des fans de Firefox, et aboutissent près d'une fois sur quatre en ces pages via Google (et c'est déjà perdu pour la promesse !).

Les posts les plus lus (hormis la traduction de What is web 2.0) sont :
- COMET : complément ou sucesseur d'AJAX ?
- Migrer vers Gmail sans douleur
- Votre premier hack COMET en PHP


Pour ceux qui aiment les lettres :

Les principales idées que j'ai voulu faire passer sont :
- le web 2.0 ne répond pas à une définition précise mais caractérise plutôt une époque
- il y a, techniquement parlant, encore beaucoup de choses à explorer dans le web d'aujourd'hui : COMET et le mode déconnecté en sont 2 exemples très symboliques
- les applications desktop et les applications d'entreprise vont continuer à migrer vers le web
- l'intéraction entre le desktop et le webtop est un enjeu fondamental pour l'avenir
- nous vivons bien sûr une période très excitante où les innovations et les succès sont légion, il y a néanmoins des survalorisations (youTube, Skype, le cours de l'action Google, des start-up qui n'ont rien montré...) et certains lendemains s'avèreront difficiles.
- le web 2.0, c'est pas du buzz !!!

L'avenir de web2rules :

J'avoue avoir encore du mal à percevoir le profil du public qui lit régulièrement ces lignes étant donné que j'aborde aussi bien la technique que les concepts tournant autour du web 2.0... donc si vous avez des envies particulières quant aux thématiques que j'aborde, merci de me laisser un petit commentaire.

Enfin, afin d'avoir un peu plus de liberté dans l'utilisation et l'évolution de ce blog, j'ai prévu de migrer vers wordpress prochainement et de me faire héberger sur un des serveurs de ma société... ce qui entrainera sans doute une petite perte d'audience mais me permettra de quitter définitivement Blogger et ses limitations.

jeudi, novembre 30

Javascript est le nouvel HTML

Du SQL à Javascript

Lors de l'avènement des pages web dynamiques (que PHP venait de simplifier considérablement), une phrase commença à se répandre pour signifier que nous entrions dans une nouvelle ère du développement web : "SQL est le nouvel HTML".

Cela était aussi bien révélateur d'un changement de paradigme technique (le langage majeur du web n'était plus vraiment HTML mais les langages serveurs qui permettaient de tirer parti d'une base de données) qu'un changement en terme de fonctionnalités attendues par les utilisateurs : ceux-ci voudraient des pages toujours plus dynamiques, régulièrement remises à jour et centrées sur leur utilisation.

Et même si je ne cherche pas à devenir un de ces prophètes 2.0 autoproclamés, je crois qu'il est aujourd'hui temps de dire : "Javascript est le nouvel HTML" (bruit de tonnerre).

En effet, après une période où Javascript était considéré comme un gadget proscrit par tous les architectes web dignes de ce nom, AJAX lui a assuré un retour en grâce aussi rapide qu'inespéré. Si l'on entend encore parler des sempiternels supposés problèmes d'accessibilité, de sécurité et de portabalité de Javascript, ces voix sont devenues ce qu'elles auraient toujours dû être : trollesques et minoritaires.

Javascript rules the web

Javascript est devenu un composant incontournable de toute application dite web 2.0 et je pense pouvoir dire qu'il va en devenir un élément central. Le langage se structure de plus en plus, la communauté js s'étoffe et comporte désormais des architectes qui n'ont rien à envier aux langages serveurs considérés comme "nobles" : des frameworks, des conventions architecturales, de vraies possibilités de coder "full object", une amélioration continue du langage que les navigateurs s'efforcent de suivre plus fidèlement qu'ils ne le faisaient, des usines logicielles qui s'adaptent... bref, son potentiel est reconnu et enfin exploité.

La possibilité naissante de disposer d'application web fonctionnant en mode déconnecté est elle aussi décisive : en déportant toute la logique côté JS et exploitant les possibilités de stockage des navigateurs, l'application ultime est sur le point d'apparaître :
- interface riche
- portable
- sans installation
- sans problème de maintenance des postes clients
- nomade
- fonctionnant sans réseau
- technologie universelle et complètement ouverte

Développeurs, architectes, préparez-vous : Javascript, c'est vraiment pas du buzz...

lundi, novembre 27

Retour d'expérience sur Google app for your domain

Google App for you domain vous propose de vous créer un webtop d'entreprise utilisant le nom de domaine de celle-ci. Je teste la solution en ce moment, et je dois avouer être séduit même si tout n'est pas encore parfait.


Google App for your domain, c'est quoi ?

C'est un ensemble de services Google bien connu qui utilise votre nom de domaine plutôt que les "google" ou "gmail.com" à chaque fois que cela est possible. C'est aussi et surtout un ensemble d'outils pour administrer cet ensemble pour tous vos collaborateurs de manière cohérente.
Concrètement ça donne :
- L'interface Gmail pour le courrier électronique
- GCalendar pour les agendas partagés
- Google Talk pour le chat
- Une page d'accueil Ajax
- La possibilité de créer des pages web et de les ajouter au domaine facilement avec une interface Ajax


Les équivalents pour l'entreprise

Cette solution, d'un point de vue fonctionnel, se rapproche beaucoup des solutions de groupware classique à base d'Exchange ou encore en mode web (ces derniers sont d'ailleurs assez nombreux).

Je trouve personnellement que quasiment tous ces composants sont en avance sur ce que propose la concurrence en terme d'ergonomie et de simplicité de gestion. Seul bémol sur la page d'accueil qui présente encore pas mal de limites dans sa customisation.

Les 2 gros défaut de G.A.F.Y.D (Google app for you domain) sont :
- le mode hébergé sur les serveurs de Google qui facilite certes les choses d'un point de vue gestion mais qui fait perdre beaucoup de contrôle à l'entreprise sur la solution. Je parie depuis longtemps sur l'intégration de tout cela dans une Google Appliance similaire à celle qui existe pour la recherche documentaire d'entreprise.

- l'absence de quelques éléments presque indispensables de tout groupware : traitement de texte et tableurs collaboratifs (docs and spreadsheets n'est pas encore intégré), le wiki d'entreprise (jotspot !!!), une éventuelle application de gestion de projet (un baseCamp-like... si quelqu'un avait un jour la bonne idée de se rapprocher des génies de 37signals !).

D'autres retours d'expérience sur le sujet ?

lundi, novembre 13

Le mode offline par l'exemple...

Après avoir exposé dans mes 2 posts précédents, l'intérêt et les différentes stratégies du web en mode déconnecté, je vous propose d'en découvrir le fonctionnement via un exemple construit à l'aide de la librairie Dojo : Moxie est un petit éditeur de texte en mode en web que vous pouvez utiliser hors ligne sans aucune installation.

Moxie fonctionne à l'aide de la couche d'abstraction de stockage "dojo.storage" mise au point par Brad Neuberg : le seul "driver" utilisant officiellement cette couche d'abstraction se base pour le moment sur les "cookies Flash" (bien que l'application soit en elle-même en Javascript).

Pour l'exemple, j'ai écrit un autre driver qui utilise le système de stockage de Firefox 2 que vous pourrez tester ici ... Exemple de test : utilisez Moxie avec Firefox 2 puis avec Internet Explorer, vous verrez que les informations stockées sont différentes (puisque selon le navigateur, elles seront stockées dans Flash ou dans une mémoire propre à Firefox 2).

Prochaines étapes :
- implémenter un driver utilisant le mécanisme de stockage propre à Internet Explorer
- développer un exemple de synchronisation online / offline pour Moxie

dimanche, novembre 5

Soyez cool, soyez offline...

Comme évoqué dans mon post précédent, le moment où le web 2.0 va se débarasser de son dernier gros problème technique (l'absence de mode offline) ne m'a jamais semblé aussi proche. L'arrivée de Scrybe et l'hypothétique apparition de Google Docs en mode déconnecté confirment cela tout autant que la grosse activité de Dojo sur le sujet.

Les méthodes comme c'est souvent le cas dans le web existent depuis un petit moment, j'en distinguerai néanmoins plusieurs familles en fonction des réponses aux questions suivantes :

  1. A-t-on besoin d'installer quelque chose pour faire fonctionner l'application en mode offline ?
  2. Un plug-in navigateur est-il nécessaire ?
  3. Sur quels navigateurs peut-on faire fonctionner l'application ?

1- La solution "installation sur poste client"
Tout ce qui peut être pénible pour le web offline trouve une solution immédiate avec une installation côté client :
- les données sont librement stockées côté client
- il reste possible de faire fonctionner du "code serveur" en mode déconnecté

Du côté des moins : il faut installer quelque chose sur le poste client avec tous les problèmes que ça peut entraîner (portabilité, installation/réinstallation, maintenance...). Ce qu'on gagne en richesse, on le perd en légereté du client.

Pour ceux que cela intéresse, je conseille de regarder vers Lighttpd pour un serveur web embarqué léger et efficace et du côté de SQLite pour la même chose du point de vue des bases de données.


2- La solution "plug-in"
Cela consiste cette fois à utiliser Flash ou Java pour stocker des informations côté client. Java permet cela à condition d'utiliser des applets signées (et que les utilisateurs fassent confiance à votre certificat). Pour ce qui est de Flash, il est nécessaire d'utiliser les Local Shared Objects (LSO) qui constituent des sortes de "FlashCookies"... et fait extrêmement intéressant, la librairie Dojo permet désormais d'y accéder facilement via Javascript.

La solution Flash semble être meilleure que Java (pas de certificat à faire accepter par l'utilisateur), le seul problème étant la nécessité pour le client d'avoir le plug-in approprié (96% des lecteurs de ce blog ont Flash, 98% ont Java).


3- La solution "100% navigateur web"
C'est une solution conceptuellement très séduisante. En quoi consiste-t-elle ? Il s'agit de tirer au mieux parti des caractéristiques installées de la machine cliente : au final, une petite couche d'abstraction cachera au développeur Javascript la complexité du stockage local.
Que fera cette couche d'abstraction ? Elle va regarder les différentes stratégies de stockage local qui s'offrent à elle :
- les lso Flash
- le stockage local de Firefox 2
- le mécanisme de stockage local d'Internet Explorer
- les cookies
- tout autre solution de stockage local plus ou moins bizaroïde disponible sur toutes sortes de configurations plus ou moins obscures

... et en fonction de la configuration cliente rencontrée, elle choisira la plus adaptée.
Dans l'ordre, le choix le plus pertinent me semble être : stockage firefox 2, sinon stockage lso Flash, sinon stockage IE, sinon cookies.

Il faudrait regarder d'un peu plus près les statistiques des configurations clientes rencontrées, mais je pense que les machines n'ayant ni Flash, ni Firefox 2, ni Internet Explorer et ses contrôles ActiveX représentent moins de 1% des configurations (2% sur ce blog) : cette solution paraît donc viable dès maintenant.
Où trouver la fameuse couche d'abstraction ? Chez nos amis de Dojo, bien sûr... ils n'ont malheureusment implémenté pour le moment que le driver Flash : étant donné que c'était aussi le plus difficile à mettre en place, on peut espérer que la suite vienne prochainement.

Pour info, savez-vous quelle société est le plus gros soutien de Dojo ? Non ? C'est tout simplement Jotspot, récemment racheté par Gooooooogle... Je vous laisse méditer là-dessus et me laisser un commentaire si vous voulez que je développe tout ça (un tutoriel ?) dans un prochain post.


Edit : contrairement à ce que j'ai écrit précédemment, l'objet ActiveX FSO n'est pas une bonne solution pour le stockage local (voir les commentaires).

mardi, octobre 24

Le client web en mode déconnecté arrive

C'est une petite révolution qui s'apprête à se produire avec l'arrivée imminente de scrybe qui propose une application de calendrier web fonctionnant en mode déconnecté.
En lisant la description du service, je me suis dit "ils embarquent probablement un petit serveur web à installer qui prend le relais lors de la déconnexion"... et puis j'ai lu : "aucune installation d'aucune sorte". Ca m'a paru bizarre, mais c'est en réalité tout à fait possible.

Première possibilité : le pattern "richer plug-in"
Flash ou Java permettent d'écrire des données sur le poste client et donc de créer le cache local nécessaire. Flash et Java étant maintenant très répandus, on peut en effet considérer qu'une telle application n'impose aucune installation sur le poste client.

Seconde possibilité : le pattern "gâteaux-gâteaux"
Ce pattern devrait rester dans les tiroirs tant il pose de problème... mais développons un peu. Les cookies sont un moyen de stocker des données en local lorsque l'application est déconnectée et ne fonctionne qu'à coups de javascript.
Deux énormes soucis néanmoins : le premier est que les cookies sont petits (vous n'avez droit qu'à 20 cookies de 4 ko chacun : c'est TRES peu), le second est que les cookies sont fragiles : il est non seulement facile de les effacer, mais en plus le navigateur les efface peu à peu de lui-même lorsqu'il atteint la limite de 300 cookies ! Tout cela est donc très amusant conceptuellement mais pas réellement envisageable dans la vraie vie.

Troisième possbilité : le pattern "browser features"
Le but est ici d'utiliser les particularités des navigateurs couramment utilisés pour arriver à notre objectif. Ajax marche comme ça par exemple : on utilise deux techniques différentes (un contrôle ActiveX avec Internet Explorer et l'objet XmlHttpRequest avec Firefox) pour arriver au même but.
Notre objectif étant de stocker des données en local avec javascript, que peut-on envisager ? Là encore le duo Windows/Internet Explorer nous offre la possibilité d'un composant ActiveX pour lire et écrire des fichiers texte sur le poste client. Du côté de Firefox, depuis la très récente sortie de la version 2.0, il est possible d'utiliser un stockage local, une sorte de "super-cookies" n'ayant pas les restrictions évoquées plus haut... le pari semble donc jouable, même si aucune implémentation n'en est connue à ce jour !

Conclusion de tout ça : avec l'arrivée d'applications web fonctionnant en mode déconnecté, une des dernières restrictions à l'adoption massive du mode web pour les applicatifs est en train de tomber... plus que jamais, la révolution est en marche !


PS : j'ai appris aujourd'hui que c'est Flash qui avait été utilisé pour Scrybe

jeudi, octobre 19

Retour sur les derniers exploits de Google

Après avoir autant que possible limiter l'inflation de posts sur Google, je craque. Oui, je l'avoue, l'actualité a été telle que je ne peux m'empêcher, malgré toutes mes bonnes résolutions, de souffler à nouveau quelques petits mots ce qui est désormais pour moi l'emblème de la génération web 2.0.

Le webtop en a donc pris un sacré coup avec l'arrivée surprise de Google Docs and Spreadsheets qui fait désormais du Google Office la référence en matière de webtop unifié (mail, agenda, tableur, traitement de texte). Seuls bémols : la page d'accueil Google n'est pas toujours pas au niveau d'un Netvibes et GTalk reste un univers fermé (Meebo n'ayant pas encore son équivalent chez Google, probablement pour des raisons stratégiques d'ailleurs).

La bulle 2.0 a quant à elle encore un peu enflé grâce au gros paquet de billets mis par Google pour prendre YouTube. Et là, j'avoue être très surpris par la démesure de cet achat : selon mes propres calculs, cela revient à "acheter" $45 l'utilisateur de YouTube, là où habituellement Google paye entre 2 et 3 dollars annuels (cf. les cas Dell, Firefox et MySpace). Si l'on ajoute à cela les terribles problèmes auxquels Google va devoir faire face suite à ce rachat (droits sur les videos, comptes d'exploitation fortement négatifs)... ça paraît d'autant plus étrange !

Enfin l'extraordinaire retour en grâce de Google chez nos amis de Techcrunch n'en finit pas de m'étonner, tout comme les explications des contributeurs de ce blog sur le fait qu'ils n'ont absolument pas changé d'analyse sur le sujet... alors mauvaise foi ou procès d'intention de ma part ? à vous de juger !

lundi, octobre 9

What is web 2.0, un an après : les prophéties d'O'Reilly au révélateur de l'actualité

Cela fait désormais à peu près un an que le bon Tim nous a légué ce joli morceau qu'est "what is web 2.0" : une leçon de clairvoyance au pays des marketeux et autres chercheurs de tendance en mal de nouveaux labels.
Si vous trainez ici, c'est que vous connaissez déjà probablement ses 7 grandes leçons... mais avez-vous pris le temps de regarder le chemin qu'avait parcouru notre (déjà) vieux web vers la terre promise ? Non ? Alors, posez votre bâton de pélerin et arrêtez-vous ici quelques instants...

Première leçon, probablement à la base de toutes les autres, "le web en tant que plate-forme" est une réalité que personne n'ose aujourd'hui contester tant les progrès accomplis sont flagrants :
- la promesse d'un webtop rendant le desktop obsolète se réalise peu à peu à travers des outils chaque jour plus nombreux mais aussi plus efficaces : messageries instantanées, traitements de texte, mails, tableurs...
- tous les services modernes en ligne sont désormais compatibles avec Firefox, affranchissant définitivement le web grand public de tout produit Microsoft (ie6 et Windows) ou d'une autre plate-forme technique d'accès au web.
- les connexions permanentes ont continué à se mutliplier et à les tuyaux nous reliant au réseau des réseaux ont encore grossi.

C'est au second point, "tirer parti de l'intelligence collective", que le social web dont on vous a tant rabattu les oreilles entre en jeu. Le tagging est désormais partout, les systèmes de votes et les commentaires aussi. Le wiki n'est plus une blague mais un truc hype tandis que les réseaux et autres communautés se mettent à valoir de l'or.
Je dois dire que je suis réservé sur ce point : si Digg est une incontestable réussite, il est resté un service essentiellement consommé par les technophiles. De même les fameux Flickr et del.icio.us restent des produits de consommateurs avertis.
Seules exceptions : MySpace et YouTube mais qui ont marqué avant tout des points grâce à un marketing viral rarement vu à une telle échelle. D'ailleurs pour l'un et l'autre de ces services, l'intelligence collective n'est que très accessoire, c'est le bon vieil effet communautaire qui joue là avant tout.
Donc, rien de réellement révolutionnaire pour l'instant, et le web 2.0 cherche encore l'équivalent de ce que fut à son époque l'arrivée du PageRank.

Si l'on se souvient que "la puissance est dans les données", alors on peut dire que le web continue à monter en puissance : nos vieilles mapemondes s'affinent à une vitesse impressionnante, les blogs fleurissent en même temps que leur contenu, des bases de données en tout genre deviennent disponibles... oui, ce nouveau paradigme était terriblement bien énoncé par O'Reilly et l'on sait désormais qu'il risque de se vérifier pour un bon bout de temps.

"La fin des cycles de release" n'a jamais été le point de l'article fondateur à m'avoir le plus emballé. Je suis personnellement las de toutes ces bêtas qui n'en finissent pas et si je suis un fervent de l'XP programming, je ne l'ai pas vu se répandre autant que cela semblait énoncé. Pour le moment, parmi les grands, seul Google et sa galaxie de produits semblent appliquer ses principes... les années à venir devraient néanmoins voir les autres migrer vers ce concept indiscutablement performant.

Qu'en est-il de ces "modèles de programmation légers" évoqués étant comme le nouveau modèle à suivre ? Difficile à dire... je crois néanmoins que là aussi, un certain nombre de progrès sont observables :
- REST qui prend de plus en plus le pas sur SOAP
- le phénomène Ruby (via RubyOnRails) qui rejoint les PHP et autres Python au royaume de la simplicité populaire et efficace.
- l'esprit "small is beautiful" (attention, c'est un ressenti 100% subjectif) qui règne sur la toile : SQLite ou LigHTTPD ne sont plus (disons plutôt moins) regardés de haut tandis que les Struts, et autres Oracle apparaissent de moins en moins comme les références incontournables pour tout "projet sérieux".

Une partie essentielle pour moi, "le logiciel se libère du PC", ne s'est pas encore réalisé comme je l'avais envisagé : le "mobtop" (le desktop sur téléphone portable) met du temps à se démocratiser tandis que la consommation du web par des appareils portables tels que l'Ipod reste limitée. D'importantes réserves de croissance à long terme du web (ou plutôt, d'internet en général) sont pourtant là. J'irais même jusqu'à dire que la massification de ce phénomène sera probablement à la base d'un prochain cycle de croissance.

Enfin, plus personne n'a besoin d'être convaincu des possibilités d'"enrichir les interfaces utilisateur". Ajax et Flash ont l'un et l'autre continué à progresser pour offrir un confort d'utilisation sans commune mesure avec nos vieux sites 1.0. La marge de progression est néanmoins encore considérable et bien des défis restent à relever dans l'amélioration de l'expérience utilisateur web.

En résumé, une bonne partie du web 2.0 reste encore à construire : l'observation de la toile durant cette dernière année montre que la webosphère prend bel et bien le chemin indiqué par le prophète... mais que la route semble encore longue, très longue même si l'on regarde tous ces dinosaures du monde applicatif qui n'ont pas encore bougé !

jeudi, octobre 5

Vers un environnement de développement AJAX de référence...

A l'heure d'aujourd'hui, même si les progrès depuis plus d'un an sont considérables, le développement AJAX reste une galère.

Du côté des progrès :

- des patterns de référence

- des frameworks bien foutus exploitant les possibilités de Javascript

- une communauté d'Ajaxiens imaginative, partageuse et grandissante

- la reconnaissance qu'Ajax n'est pas qu'une mode et doit maintenant passer à l'industrialisation

- des outils de software factory pour Javascript

Le manque principal, je l'ai déjà dit assez souvent, c'est un environnement de développement fait pour JS : autocompletion, débugage, etc... Aptana tente de répondre à ce besoin, mais pour l'avoir un peu testé, c'est loin d'être encore au point.

Tibco General Interface est une autre tentative qui me paraît assez intéressante : en tout cas, l'environnement 100% ajax proposé pour développer est très impressionnant. Dans l'ergonomie, on retrouve pas mal de petites choses similaires à un Visual Studio, d'un point de vue technique, savoir qu'il est basé sur prototype.js ne gâche rien. et, last but not least, une version free est désormais proposée.

Tibco s'inscrit par ailleurs dans le cadre de l'initiative OpenAjax qui a pour but la normalisation des techniques ajax et dont je vous conseille un excellent "whitepaper".

samedi, septembre 30

L'application web d'entreprise : enfin une évidence ?

L'application d'entreprise est marché étrange où l'on trouve à la fois une terrible inertie des vieilles habitude et un pérpétuel intérêt pour l'innovation. Face à cette situation paradoxale, les DSI cherchent le plus souvent à être rassurés quant aux technologies de leurs applications stratégiques : si bien que le choix se fait plus sur l'éditeur de la solution, que sur la solution en elle-même. En fonction de leur profil, les décideurs peuvent donc pencher pour l'éditeur à la plus grande renommée (Oracle, Microsoft, SAP...) ou celui dont ils se sentent le plus proche (en fonction de leur parcour personnel et de leurs a priori technologiques).

Dans ce contexte, on peut dire que l'application web ne s'est pas imposé dans un premier temps pour des raisons culturelles. Malgré tout, sa percée dès la fin des années 90 dans les entreprises reste assez remarquable étant donné les contraintes de l'époque : tarifs élevés, maîtrise de la technologie limitée, débits plutôt faibles, richesse d'interface quasi-nulle. Le web fut donc suffisamment hype et ses avantages déjà assez évidents pour ouvrir une première brèche dans la forteresse de l'application d'entreprise alors tenue par le client ultra-léger (mode texte) et le client lourd (client/serveur).

Ses avantages, est-il vraiment besoin de les rappeler ? Un petit retour aux bases ne fera de mal à personne : portabilité, déploiement, maintenance, possibilités de nomadisme. Autant de facteurs qui ont rendu très tôt le web la plupart du temps globalement plus économique que ses équivalents habituels.

Aujourd'hui, la culture web est là et bien là. Une nouvelle génération de dirigeants imprégnés de celle-ci peut désormais "penser web" alors que la plupart des obstacles d'hier sont désormais levés : la technologie est maîtrisée, les interfaces se sont enrichies, les infrastructures améliorées, les coûts ont brutalement baissé suite à l'éclatement de la bulle 1.0... bref : plus rien ne semble empêcher l'avènement de la plate-forme web pour tout nouveau projet.

C'est d'ailleurs ce que je constate à titre personnel : 90% des projets d'entreprise qui me sont soumis sont web ou le deviennent après quelques discussions. Je constate le même phénomène chez des confrères qui eux non plus ne viennent pas spécifiquement du monde du web.

Il subsiste néanmoins encore 2 résistances au web pour les applications d'entreprise :
- la première vient de la nécessité de la communication permanente : le web ne met pas encore à disposition de ses utilisateurs de solutions de cache local permettant d'utiliser l'application en mode déconnecté (le "Smart Client" comme l'appelle Microsoft). Google desktop search apporte sur le sujet une solution intéressant avec son serveur web embarqué lors de l'installation.
- la seconde vient des outils bureautiques omniprésents dans l'entreprise et où seul Microsoft apporte aujourd'hui des solutions d'intégration satisfaisantes.

On retrouve dans un cas comme dans l'autre le problème de la fameuse et nécessaire intégration webtop / desktop maintes fois évoquées dans ces pages... et je vous encourage, si le coeur vous en dit, à évangéliser sur le sujet, qui, de mon point de vue, est encore trop largement mésestimé.

samedi, septembre 23

Les bots contre le web 2.0 : sexe, mensonges et statistiques

Il a déjà été dit de nombreuses fois qu'un aspect fondamental du web 2.0 est l'intelligence collective que Tim O'Reilly décrit si bien. Cette intelligence collective tire parti du fait que les utilisateurs ne se contentent plus de lire mais aussi se mettent désormais à écrire, commenter, débattre, voter... un mot, participer, sur le web.

Evidemment, il y a ceux qui savent exploiter ce système : en gagnant des visiteurs sur son site grâce à un commentaire bien placé, en évangélisant les masses grâce à un article habilement écrit dans wikipedia, en augmentant ses revenus grâce à aux votes/notations d'utilisateurs plus ou moins réels.

Exemple typique : les articles bien notés dans Digg gagnent un nombre de visiteurs suffisamment important pour que l'on parle "d'effet Digg". Or, à plusieurs reprises dans la courte histoire de Digg, des voix se sont élevées pour crier à la manipulation de l'outil par des groupes d'influences, des administrateurs de Digg ou encore des webbots.

Et voilà où est le problème : l'intelligence collective suppose que le monde est parfait et que 100% des utilisateurs seront humains, or dès qu'un service a du succès, il est quasi-certain que ce ne sera plus le cas. Les sites, marchands, et autres bidouilleurs peu scrupuleux connaissent trop les ficelles du web pour ne pas s'en servir... c'est ainsi qu'apparurent :
- les spameurs des commentaires des blogs (splog)
- les spameurs de wikis
- les robots voteurs
- les robots noteurs

Pour coller à l'actualité, certains d'entre vous auront ainsi peut-être remarqué que les votes de wikio étaient parfois très étranges, cela ne manque d'ailleurs pas de provoquer des remous et des débats... à la petite échelle de Wikio.
Mais les conséquences sont grandes puisque d'une part les Wikio, Digg et autres Fuzz redistribuent un traffic de plus en plus important (donc de plus en plus d'argent), et que d'autre part ces sites tirent leur pertinence des recommendations humaines.

Conclusion : dans la lutte pour la pertinence et contre les actions marketing, la lutte contre les robots n'est pas des moindres. Or, les anti-bots ne sont d'après moi pas encore à la hauteur des défis qui les attendent.

Passons en revue les méthodes classiques :
- identification du voteur par cookie : il suffit au bot d'effacer ses cookies !
- identification du voteur par IP : il suffit d'utiliser un proxy pour contourner le problème
- identification du voteur par compte : un peu plus dur, il faut alors créer des comptes manuellement ou automatiquement.

On peut aussi évoquer les méthodes anti-bot (CAPTCHA) :
- un texte en image à recopier
- un mot prononcé à écrire
- une question aléatoire à laquelle un humain sait répondre

Les deux premières méthodes ont leur parade avec les systèmes de reconnaissance visuelle et sonore. La troisième peut être solutionnée par un bot disposant d'une bonne base de données de réponses et d'un système d'analyse sémantique adéquat.

Et puis il y a l'anti-CAPTCHA (c'est à dire l'anti-anti-robot) ultime : celui qui fait appel à des utilisateurs humains à la recherche de contenu gratuit. Le principe est simple : les utilisateurs sont aguichés par une ressource gratuite (en général, du porno), on leur demande alors de répondre au système CAPTCHA à pirater pour accéder au dit contenu... et le tour est joué !

La solution se trouve peut être dans une analyse statistique des actions faites par les robots et les humains. On pourrait alors mettre en place des systèmes de filtres baysiens comme on le fait aujourd'hui pour éliminer le pourriel. Mais d'ici là, les robots auront certainement fait beaucoup de mal au web 2.0...

jeudi, septembre 21

Développer et tester en Javascript par le concepteur de scriptaculous

Scriptaculous est une librairie javascript désormais fameuse pour qui veut développer une application web bénéficiant d'une "ergonomie 2.0". Thomas Fuchs est l'auteur de cette impeccable surcouche du génial prototype.js et ces conseils en matière de développement javascript valent de l'or.

Il nous prodigue dans son dernier billet quelques conseils pour développer et surtout tester nos codes javascript à partir d'une présentation qui, outre la pertinence, a le mérite de ne pas se prendre au sérieux.