JUG Summer Camp 2010 : OpenSocial (2/5)

Comme promis, voici la seconde partie de mon compte rendu du JUG Summer Camp 2010. En espérant qu’un nouvel événement similaire soit organisé en 2011 !

eXo Platform & OpenSocial

Juste avant la pause déjeuner, j’ai fait le choix de suivre la présentation de Tugdual Grall sur OpenSocial car je m’intéresse beaucoup aux réseaux sociaux et à leur intégration dans la façon de communiquer/travailler des entreprises. Tugdual Grall est responsable de la stratégie produit au sein d’eXo Platform, il est également co-leader du Nantes JUG.

Pour ceux qui ne connaissent pas, eXo Platform est ce que l’on appelle un “portail web” qui sert de conteneur de portlet : il héberge plusieurs applications, des portlets (normes JSR 168 et JSR 286), pouvant peut être configurées par l’utilisateur. Chacun peut ainsi construire son espace de travail personnalisé.

Gadgets ?

Depuis peu, eXo Platform permet également d’utiliser des applications de type “client-side” : des gadgets. C’est le type d’application que l’on retrouve par exemple sur iGoogle. Elles permettent de réaliser rapidement des mashups et notamment de jouer avec les API d’OpenSocial.

Comme les gadgets peuvent être “hors du contrôle” de l’administrateur du portail (i.e.. utilisation de descripteurs externes), les gadgets sont tous autonomes. Cela implique que chaque gadget est embarqué dans une iFrame : si le gadget est mal écrit, il n’aura que peu d’impact sur les performances/le fonctionnement de l’ensemble.

Dans eXo Platform, il est possible de stocker des gadgets soit directement dans le repository JCR (qui permet de faire des copies, du versionning, etc…) soit de faire appel à des gadgets distants via une simple URL. L’accès au repository JCR étant par ailleurs possible directement depuis une URL WebDAV, on peut développer offline les gadgets puis les déployer directement depuis un partage réseau.

Tugdual explique, que de son point de vue, les gadgets apportent plus d’agilité que le développement classique de portlets : ils permettent une intégration rapide – mashups – depuis des serveurs externes (Google API’s, LinkedIn, JIRA) ou encore de faire rapidement du GWT pour obtenir un rendu sexy.

Cet aspect agile, est encore renforcé par la démonstration de l’utilisation de eXo IDE : on peut éditer directement le code source d’un gadget et voir le résultat, en simultané, dans le navigateur. Évidemment, on peut utiliser un workspace dédié au développement et déployer vers le référentiel “public” l’application “finalisée”. Il est également possible d’aller un peu plus loin et d’implémenter des services JAX-RS via des script Groovy, toujours depuis eXo IDE.

La définition d’un gadget se fait depuis un fichier XML qui contient deux balises essentielles :

  • *Module* qui décrit ses pré-requis / features
  • *Content* qui peut contenir directement le code HTML ainsi que l’enregistrement des fonctions Javascript

Attention cependant, Tugdual précise bien que le développement peut se faire en dehors de ce descripteur (et c’est indispensable dès qu’on dépasse le stade du prototype).

Une petite démonstration d’un gadget à particulièrement retenu mon attention. Il s’agit de l’insertion du widget développé via Spring Roo qui permet de générer des graphiques directement depuis des entités JPA : on sélectionne une source de données, on sélectionne l’attribut qu’on souhaite afficher et le type de graphique. Le résultat est vraiment bien fait et l’implémentation semble simple (3j de boulot à priori). On voit bien ici l’objectif même des gadgets : permettre à des non-spécialistes de développer leurs propres composants pour faire, par exemple, des extractions de données pour un tableau de bord.

Un autre projet que j’ai noté dans mes petits papiers, mais que je n’ai pas encore eu le temps de tester : eXo chromattic. Il s’agit d’un framework, développé par eXo, qui permet d’accéder à un repository JCR via la sémantique JPA. A suivre !

Utilisation d’OpenSocial

Tugdual explique tout d’abord qu’OpenSocial se compose de deux types d’éléments :

  • des API d’intégration pour les “données sociales” (Profils, Groupes, Activités, Données applicatives) : 1. Javascript API (pour les gadgets)
  1. REST/RPCAPI
  2. (eXo) Java pour le back-office
  • des conteneurs de gadgets : 1. iGoogle
  1. eXo Platform (via eXo Social)

L’implémentation “eXo Social” se base sur Shindig (RI d’OpenSocial). Cette API est intégré au coeur du moteur d’eXo. Par exemple, l’ensemble des contenus, des utilisateurs et leurs préférences sont stockés dans l’entrepôt JCR. Les gadgets OpenSocial sont disponibles via un dashboard ou bien un portlet d’enrobage (ie. wrapper). L’Application Registry permet de configurer les droits d’accès aux gadgets.

Les “fournisseurs” de données OpenSocial sont en fait nombreux : LinkedIn, Orkut, Hi5, SalesForce.com, Twitter, Google. Pour ma part, je dirais que l’absent – de taille – c’est quand même Facebook !

Voici un exemple d’appel Javascript pour obtenir une liste de personne depuis l’API Javascript d’OpenSocial :

req = opensocial.newDataRequest(); req.newFetchPersonRequest req.addParam() ... req.send();

Une problématique importante d’OpenSocial, se situe dans la propagation d’identité entre les différents fournisseurs de données et les applications. Pour cela, c’est le protocole oAuth qui est utilisé : il permet un simple échange de token (via une validation manuelle de l’utilisateur) entre deux applications. Il ne s’agit pas d’un système d’authentification – comme OpenID – mais bien d’un système de propagation : le token reçu par l’application ne contient aucune donnée personnelle.

Le futur

Tugdual présente ensuite quelques nouveautés qui devraient apparaitre dans les prochains mois. Tout d’abord, il souhaite que eXo IDE puisse prendre en compte un système de workflow (à la JBPM) ainsi que la gestion de composants de type formulaire (à la Google Docs). Un focus sera également fait sur l’intégration avec GWT pour la couche graphique des Gadgets.

Par ailleurs, Tugdual explique que eXo travaille à la mise à jour de la spécification OpenSocial pour la rendre Entreprise Ready. Il évoque la notion de “destinataire” sur une Activité pour sélectionner la portée d’une information : ses amis, ses collègues, son groupe de travail, etc…

Voila, c’est tout pour aujourd’hui. Rendez-vous demain pour un résumé de la conférence Hibernate par Emmanuel Bernard.