Live Mesh : WebDesktop, Sync Framework et compagnie!
Tout le monde en parle et... tout le monde se demande aussi ce que c'est! Mon Rédo vous en a parlé ce matin dans un post de blog. Je comprends son enthousiasme (que je partage) par rapport à ce projet mais je vais tenter d'aller plus loin dans l'explication pour que vous puissiez voir ce qu'une telle plateforme peut apporter aux développeurs que nous sommes.
"Live Mesh... Un petit pas pour l'homme, un grand pas pour le web de demain" (Version Microsoft)
Live Mesh c'est d'abord un changement de mentalité (déjà engager depuis un moment notamment chez Google). Quand on y pense, lorsque j'étais tout petit, je me souviens que j'avais internet en 56k avec un modem qui faisait un bruit d'enfer à la connexion. Aujourd'hui, j'ai internet sans m'en rendre compte. J'arrive au boulot le matin, je branche mon PC et il me semble normal de pouvoir lire directement mes mails. Je rentre chez moi en voiture, je suis dans les bouchons, je regarde mes mails et ça me semble normal. Enfin, à la maison, de la même manière qu'au boulot, j'ai internet! C'est bien là qu'est le changement :
- Avant : on allait sur internet.
- Après : internet vient à nous, internet est partout.
Ca vous rappelle peut être une publicité :-) mais c'est bien ça.
Sans compté le nombre incroyable d'appareils que nous avons. Je vais peut être paraître mégalo mais si je regarde actuellement ce que j'ai devant moi :
J'ai encore un autre mobile et un autre ordinateur chez moi. Sans compté que d'autres appareils viennent s'ajouter à cette liste :
- Certain réveil sont connecté.
- Des robots.
- Application de lecture (notamment chez Amazon).
- ...
Ouais ouais, bref tout ça on sait et alors? Aujourd'hui on connait pas mal d'application qui permettent de synchroniser des données entre plusieurs ordinateurs. Prennez par exemple Foxmarks, un petit add-in pour Firefox qui permet de synchroniser nos favoris entre plusieurs ordinateurs. Microsoft Live Mesh c'est ça mais ça va plus loin. D'abord car Live Mesh ne synchronise pas seulement les favoris...
... mais synchronise tout ou presque!
En le voyant comme ça, on pourrait confondre avec FolderShare, mais non!
Et là, je me permet de revenir au titre! J'ai noté WebDesktop (ou WebOS, ou Webtop, peu importe comment vous appelez ça). C'est bien de cela qu'il s'agit! Microsoft Live Mesh vous offre un burreau virtuel en ligne (limité à 5go selon mes infos) sur lequel vous pouvez venir stocker des fichiers et tout l'intérêt réside dans le fait qu'on peut y avoir accès de n'importe où. A confondre donc avec SkyDrive? Non plus! Car Mesh va plus loin avec la possibilité de synchroniser les applications, des devices (vos ordinateurs, mobile, pda)! C'est vraiment bien foutu et je vous conseil de regarder la vidéo suivante pour vous en persuader.
Mesh et les développeurs
Soyons prudent tout de même concernant les applications... Parce que là, Microsoft à besoin de nous (développeurs). En fait, Mesh utilise FeedSync pour synchroniser les applications. Si si, je suis sûr que vous en avez déjà entendu parlé. Vous vous souvenez du Sync Framework? Et bien, dans la mêlé il y avait un truc qui s'appellait Simple Sharing Extensions. C'est là que ça devient intéressant (désolé de vous avoir fait attendre aussi longtemps).
Tout le monde connait le RSS (ou Atom mais ici on va prendre RSS comme exemple). Et bien, FeedSync c'est une extension pour RSS (ou Atom). Notre RSS prendra donc cette forme :
<rss version="2.0" xmlns:sx="http://feedsync.org/2007/feedsync">
Du coup, on va pouvoir utiliser tout un tas de tags en plus (voir
http://feedsync.org/2007/feedsync). Ces tags vont permettre d'ajouter des méta data qui indiqueront l'état de l'élément avec une notion d'historique :
- L'élément est-il supprimé?
- Où en somme nous dans l'historique?
- Y a t'il des conflits?
Un beau dessin vaut mieux qu'un long discourt.
Cas d'utilisation concret : nous avons une "todo liste" que nous devons synchronisé entre plusieurs application.
1. Nous avons une "todo liste" de départ :
On remarque dans cette "Todo liste" que nous avons bien une chose à faire "Finir projet" avec une description comme dans un RSS normal, mais nous avons en plus de cela, des informations d'historiques.
2. L'application 1 ajoute un élément. On a donc une version intermédiaire qui ressemble à :
3. L'application 2 ajoute elle aussi un élément ce qui provoque la création d'une autre version intermédiaire :
4. La synchronisation s'effectue (merge des versions intermédiaire). Pour effectué le merge faut bien se mettre en tête que chaque application expose un EndPoint avec sa version modifier de la todo liste.
5. Ici pas de conflit, ce qui donne la version finale :
Rien de bien compliqué! Maintenant on pourrait imaginer que deux applications fasse une mise à jour sur le même élément en modifiant complètement le contenu de la description (celle-ci étant complétement différent de l'application 1 à l'application 2). On aurait alors quelque chose comme ceci :
On voit apparaître un autre tag : "sx:conflits". Lors du merge, on a prit comme version finale la modification qui a été faite en dernier mais nous avons la possibilité de résoudre le conflit car l'autre version n'a pas été effacée mais à a été placé dans le tag "conflicts". Ce qui veut dire qu'on à la possibilité par après de dire "non non, la bonne description c'était Implémentation....".
Voilà en gros comment FeedSync fonctionne et pour pouvoir synchroniser des applications au travers de Mesh, il faut que la communication (synchronisation) se passe avec FeedSync.
"Microsoft Live Mesh permet la synchronisation d'application si les développeurs de ces applications implémente FeedSync"
Et on a quoi comme outil pour gérer FeedSync? LINQ to XML... Non je blague! En fait, le Sync Framework gère FeedSync. Et là je vois déjà vos têtes avec au dessus une petite bulle : "C'est quoi?" Bon là on se calme, dites vous que cela va vous aider à gérer le FeedSync avec les technologies .NET. Oui car avec un tel format on peut imaginer des applications écrites en d'autres langages (et c'est bien l'idée de Microsoft) mais là, vos seuls outils (pour le moment et en attendant des projets Open Source) seront vos mains.
J'ai expliqué les principes de bases et pour la technique, on attendra un peu car d'abord j'ai des choses à faire sur Dynamic Data. Mais ce projet me passionne donc sans nul doute que je reviendrai dessus en long et en large (d'autant plus que j'ai déjà bossé sur ce framework).
Sachez également, que Microsoft proposera des APIs pour Live Mesh. Je sais pas vous en dire plus pour l'instant. Je sais juste que ces APIs permettront de gérer les feeds (qui à modifier tel ou tel document), la gestion et le partage de document etc.
WebOS, WebDesktop, WebTop
Ce projet est tout à fait intéressant et je vois en lui une tentative de Microsoft de contrer Adobe AIR et Google Gears (oh oui faut que je vous en parle aussi!). En effet, si vous avez regardé la vidéo vous avez vu sur le burreau Mesh (online desktop) qu'il reconnaissait bien le format Word (docx). En tout cas il affichait l'icône. Vous allez me dire que SkyDrive le fait aussi. Mais j'espére voir un jour tourné Word sur un tel bureau virtuel. A ce moment là, les choses pourraient devenir très intéressant malgré que le projet est dors et déjà fort prometteur.
Ce qui reste à faire :
- Gagner la confiance des utilisateurs. En effet, partager tout sur internet ce n'est peut être pas très sécurisant (voir ce qui s'ai passé avec Facebook)
- Séduire les développeurs :-).
- Attendre!
https://www.mesh.com
@ bientôt!
Ce post vous a plu ? Ajoutez le dans vos favoris pour ne pas perdre de temps à le retrouver le jour où vous en aurez besoin :