Le jardin des hackerz

Le jardin des hackerz, ou hackergarten dans le texte, est une association de bonnes volontés dont le but est de contribuer au développement open source. La contribution peut se faire de plusieurs manières :

  • écrire une documentation ;
  • corriger un bug ;
  • ajouter une fonctionnalité ;

à un projet existant, ou pourquoi pas un nouveau projet. C’est aussi l’occasion pour des personnes qui aiment développer de se retrouver dans une ambiance amicale, clavier sous les doigts, et d’envoyer du code dans les repositorys Git de la planète open source.

Hackergarten

Il se trouve que le 7 mars dernier, une réunion hackergarten était organisée à Paris, par Eric LefevreMathilde Lemée, et Brice Dutheil. Les projets présents étaient :

  • Hibernate OGM, encadré par Emmanuel Bernard en personne ;
  • Maven / Jenkins, encadré par Arnaud Héritier ;
  • FluentLenium, encadré par Mathilde Lemée ;
  • et Mockito, encadré par Brice Dutheil.

Techniquement, les choses se passent de façon très simple : il suffit de s’inscrire (ok, ça ne marche pas pour tout le monde…), de venir avec son portable, et d’y avoir installé ce qu’il fallait auparavant.

Les locaux de Valtech dans le 7ème arrondissement sont simplement magnifiques. Je m’y suis un peu perdu en arrivant, ce qui m’a permis de garder quelques souvenirs. Il s’agit en fait d’anciens bâtiments de France Telecom, qui y a eu son siège jusqu’en 2007. La Tour du télégraphe qui domine la superbe cour intérieure est inscrite aux bâtiments de France. C’est ici que les premières émissions télévisées françaises ont été filmées. Une petite photo du hall d’accueil.

Hall d’accueil de Valtech

Le début de soirée

Une fois dans la salle de travail, on est immédiatement gagné par l’ambiance geek. S’y trouvent déjà quelques habitués des User groups parisiens, dont ceux du Paris JUG bien sûr. Eric et Brice nous présentent la soirée, et tout le monde se répartit autour des tables. Un projet, un mentor, une table, les idées les plus simples sont toujours les plus efficaces !

Présentation de la soirée par Eric et Brice

Personnellement, j’étais venu avec pour objectif de travailler sur Mockito. Mockito est un excellent framework de mocking d’objets. Je le trouve agréable à utiliser et son API m’est très naturelle. Je ne sais pas si Mockito est le « meilleur » (si tant est qu’il puisse y avoir un « meilleur » dans ce domaine…), mais c’est celui que je préfère.

L’atelier Mockito

Objectifs de la soirée pour les trois participants de l’atelier Mockito : prendre un des points numérotés sur la page Issues du projet, et en deux heures de temps (he oui, le temps de se congratuler et de s’installer, il faut bien une heure), arriver à écrire quelque chose qui soit livrable.

Brice me propose une belle chose à faire. Mockito permet de mocker des objets, c’est entendu, et il permet également d’espionner des objets. C’est une caractéristique également intéressante, à laquelle on peut en ajouter une troisième : mocker une interface, en redirigeant les appels à cette interface vers une instance précise, fournie lors de la construction du mock. Une possibilité en fait intermédiaire entre un pur mock et un pur espion.

La chose me tente : je me lance. Le pattern à implémenter est clair, et documenté dans une Issue déjà écrite, la 280, elle-même fusionnée avec la 145 et la 275. Quelques conseils de Brice, qui me met sur la bonne voie en deux phrases, et en route.

Une classe supplémentaire, quelques modifications dans le code existant en tentant de respecter au mieux la structure déjà là, un peu de gestion d’erreur, quelques tests. Le rouge passe au vert, les cas de tests semblent bons en termes de recouvrement.

L’heure tourne, les pizzas offertes par Valtech arrivent, rapidement englouties par quelques développeurs affamés.

Les pizzas n’auront pas fait long feu !

Il ne reste plus beaucoup de courageux lorsque je présente la chose à notre mentor Mockito. Le code semble pas mal, il semble que l’Issue 280 soit résolue. Il est tard, le temps pour les derniers acharnés de rentrer chez eux.

Les derniers acharnés du Hackergarten

Quelques ajustements finaux plus tard, repris à tête reposée, un patch envoyé par mail, et Mockito s’enrichit d’une nouvelle possibilité :

List<String> listOfString = new ArrayList<String>() ;
List<String> mockedList =
   mock(List.class, withSettings().forwardTo(listOfString)) ;

À noter que listOfString pourrait aussi être une instance d’une classe finale, non mockable par Mockito.

Conclusion

Une soirée passionnante, fructueuse, dans une ambiance très amicale, et studieuse. Merci aux organisateurs du Hackergarten, ainsi qu’à Valtech pour nous avoir accueillis. Merci aux mentors. Bilan de la soirée : un peu plus de code pour les projets open source présents, c’est toujours bon à prendre. Venir à ce genre de réunion, c’est la garantie d’apprendre des choses, la satisfaction de contribuer, même modestement à un projet open source. On prend, on donne, que demander de mieux ?