Agorava : le «Social Framework»


Si vous êtes des lecteurs fidèles de ce blog, vous savez déjà qu’Ippon donne fréquemment naissance à des projets open source sur des sujets innovants. Pour ceux qui auraient raté les épisodes précédents je vous conseille d’aller lire les articles sur Wip, Nantes-mobi-Parking ou Tatami. Agorava fait donc partie des nombreux projets initiés ou, en l’occurrence, incubés chez Ippon.

Agorava qu’est-ce que c’est ?

Depuis quelques années le web est entré dans une nouvelle ère : celle des services en ligne et plus particulièrement celle des réseaux sociaux (ou des media sociaux si on reprend l’appellation promue par Twitter). La quasi totalité de ces services propose des API REST pour permettre à des applications tierces d’interagir avec eux. Agorava est un framework qui facilite le développement d’applications Java travaillant avec ces services en ligne.

Pour le moment Agorava fournit les connecteurs pour LinkedIn, Twitter et Facebook mais d’autres modules sont en cours de développement pour Github, Stack Overflow ou Ohloh.

Les origines

L’ancêtre d’Agorava est né en novembre 2010 pendant le Devoxx. C’est à cette occasion que j’ai rencontré des membres de l’équipe Seam 3 et, qu’est née l’idée de créer un module Social pour CDI. Seam Social a vu le jour au premier semestre 2011 et a connu deux itérations majeures avant l’arrêt du projet principal. En effet, à la fin 2011, les membres de l’équipe de Seam 3 décidèrent de joindre leurs efforts aux autres initiatives autour de CDI et le projet Apache Deltaspike voyait le jour.

Parallèlement à ça, une tentative de standardisation de solution d’interaction avec les réseaux sociaux était lancé au JCP par Werner Keil (un indépendant Danois très actif dans le JCP) qui me persuada que Seam Social ferait un bon candidat pour établir une telle spécification. C’est ainsi que la proposition Java Social : JSR 357 vit le jour au printemps 2012.

Cette proposition était un peu prématurée : les projets inspirateurs comme Seam Social n’étaient pas assez mûrs et ceux qui l’étaient comme Spring Social, ne donnèrent pas suite à nos sollicitations pour rejoindre la JSR. Le JCP vota donc contre la JSR 357 (5 voix pour, 8 contre et 3 abstentions). Mais le feed back ne fut pas que négatif, certains de ceux ayant voté contre, nous transmirent un retour précieux : la spécification était trop vague et surtout elle n’avait pas de «proof of concept» aboutie.

Le rejet de la JSR-357, au delà de me valoir une nomination au JCP Awards  pour ma réponse à ce vote dans InfoQ, a été le point de départ du projet Agorava.

L’ensemble des personnes ayant pris part au projet de JSR, se sont joints pour lancer ce projet. Il était destiné à servir de base à une nouvelle proposition au JCP d’ici un an ou deux, et, au cas où cette spécification ne devait pas voir le jour, il allait donner un socle solide pour constituer un framework d’interconnexion avec les media sociaux.

Pourquoi Agorava ?

Si vous allez sur les espaces développeurs de la grande majorité des media sociaux, vous verrez qu’ils proposent assez souvent des package d’API pour certains langages / plateformes. Très souvent Java ne fait pas partie de l’équation contrairement à Javascript, PHP ou Ruby. Il est vrai que les applications tierces sont souvent des applications d’intégration de contenu dans d’autres sites et que les API REST permettent de s’affranchir des langages et plateformes, toutefois, dès que l’on cherche à concevoir une application un peu plus «lourde» capable de récupérer de l’information pour la traiter (faire une application de veille ou de BI par exemple), ces outils restent un peu superficiels.

L’autre souci est de disposer d’un socle commun pour interagir avec plusieurs réseaux sociaux. On comprend bien que les acteurs n’ont pas envie (ni intérêt) à faciliter l’interopérabilité de leur plateforme avec celles de leurs «confrères». C’est là qu’une solution comme Agorava prend tout son sens.

Récemment Twitter a annoncé des modifications importantes dans ses APIs et leur conditions d’utilisation. L’article en question insiste sur le fait que la création d’application du type «client Twitter qui imitent le comportement natif du site» est découragé.

Dans le schéma donné dans l’article (reproduit ci-dessus), les deux quadrants gauche et celui d’en bas à droite sont ceux favorisés par les nouvelles API et Twitter verrait d’un bon oeil que les développeurs tiers se limitent à ce terrain. Ce sont également ceux dans lesquelles la richesse et la puissance de l’éco-système java s’exprime le mieux et pour lesquels Agorava a été pensé. L’exemple de Twitter n’est pas unique : tous les medias sociaux cherchent à éviter le clonage de leur outil à travers leurs API : on est donc sur la création d’applications à fortes valeurs ajoutées orientées business, où Java se taille la part du lion.

Et Spring Social ?

Spring Social est apparu 18 mois avant Agorava et propose une approche voisine. Nous avons même utilisé du code Spring Social pour les connecteurs et ne pas avoir a récréer le mapping vers les API REST de Twitter, LinkedIn et Facebook. Néanmoins nous avons des objectifs différents de ceux du framework de VMWare.

Agorava proposera plusieurs implémentations dont une en Java SE et une sur la JSR 330 @Inject (même si aujourd’hui la seule implémentation fonctionnelle est CDI). Alors que Spring Social ne fonctionnera que sous Spring.

Agorava propose un socle commun pour tous les médias sociaux permettant d’effectuer des traitement de manière polymorphiques (authentification, mise à jour de statut, récupération de timeline)

De par sa vocation, Agorava fonctionnera au maximum avec des spécifications Java comme JAX-RS, JSONP ou Java identity.

Nous avons effectué des tentatives pour nous rapprocher de Spring Social et mettre en commun le code des connecteurs mais malheureusement sans succès pour le moment.

Les sponsors d’Agorava

Le principal sponsor d’Agorava est bien sûr Ippon Technologies qui me permet d’utiliser une partie de mon temps à travailler sur ce projet. Agorava sera probablement bientôt utilisé pour créer un pont entre tatami et Twitter dans un «Cross Over» social. Là encore Ippon contribuera à l’avancée du projet.

Le deuxième sponsor est JBoss qui nous fournit une partie des outils nécessaires à la conduite du projet comme le serveur Jira ou le wiki confluence.

D’autres sponsors plus classiques comme Cloudbees, Jetbrains ou JRebel apportent une aide précieuse à travers leur programme favorisant les projets Open source.

A suivre

Mon prochain article passera en revue le protocole au coeur de l’échange avec les Media Sociaux à savoir OAuth.

En attendant, n’hésitez pas à aller faire un tour sur le site du projet, nous suivre sur Twitter : @Agoravaproj  sur notre page github. Et si vous avez envie de contribuer au projet vous êtes évidemment les bienvenus.