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).