Google avait fait l'acquisition en juillet dernier de Metaweb, la société derrière le projet Freebase. Pour ceux qui ne connaissent pas Freebase, c'est un peu le wikipedia de la base de données : Des données tabulaires libres sur des sujets variés (Artistes, Films, Livres, etc.) enrichis et maintenus par la communauté. Metaweb avait également un outil opensource nommé "Freebase Gridworks" permettant de manipuler, corriger, transformer des données. Aujourd'hui Google annonce que Gridworks et renommé en Google Refine et passe en version 2.

3 vidéos de présentations sont proposés pour mieux comprendre comment fonctionne Refine. Elles sont visible ici. On y découvre les fonctionnalités principales de Refine qui sont : corriger les données (fusionner certains types, corriger les valeurs abérantes), transformer (par exemple : découper des chaines de caractères pour créer des nouvelles colonnes), enrichir (en appellant des webservices comme googlemap pour geolocaliser, freebase, ...)

Les sources du projet sont sur google code.

Le produit peut être exécuté sur sa machine. Un simple exécutable qui, une fois lancé, démarre un serveur web. Refine s'utilise donc ensuite depuis un simple navigateur web.

Un coup d'oeil rapide au code nous permet de voir quelques unes des technologies utilisées :

  • LessCss et Lessen : Un préprocesseur CSS très à la mode qui lui rajoute quelques élements très utiles comme les variables, l'imbrication, etc.
  • Jetty 6, qu'on ne présente plus
  • Smilie Butterfly Un framework web écrit en Java. Il a été créé par Stefano Mazzocchi, créateur de Apache Cocoon. Ce monsieur a aussi contribué à quelques JSR (JSR 53 - Servlet, 63 - JAXP, et 170 - Java Content Repository). Il travaillait chez Metaweb au moment du rachat et est donc maintenant chez google (oui encore un :-D ) et travaille sur Refine. Les particularités du framework sont : pensé pour créer des applis web modulaires ; bien qu'écrit en java, fait usage de javascript à la fois sur le client et sur le serveur via Rhino.

Sur le navigateur :

  • jquery avec les plugins jquery ui et event stack

Coté build et outils :

  • Ant
  • Des fichiers .projet, .gitignore qui trainent qui indique l'utilisation d'Eclipse et de Git
  • PMD
  • Launch4j en tant que task Ant pour la génération de l'exécutable

Je trouve Butterfly intéressant, on parle beaucoup du javascript coté serveur avec node.js depuis quelques temps. La frontière entre le client et le serveur est toujours difficile à franchir surtout lorsqu'on vient du monde java, malgré les progrès effectués ces dernières années (GWT, Wicket, ...) Node.js sera justement le sujet de mon prochain billet ! J'investiguerai peut être un peu plus Butterfly pour vous en reparler. A suivre donc...

Alexandre. Twitter : @alexandre_t