Petit compte-rendu de la soirée du 11 mai 2010 au Paris JUG. Le thème de ce soir est consacré au principe de DVCS avec une présentation de Sébastien Douche. Puis ensuite une introduction à Git par David Gageot, suivie d’une présentation Maven 3 par Arnaud Héritier et Nicolas de Loof. Enfin une présentation de l’outil DeployIt par Guillaume Bodet et Benoît Moussaud.
Le W3C
Alexandre Bertails nous a tout d’abord présenté en 15 minutes le W3C et son nouveau poste au sein de l’équipe Système. Avant tout, allez voir le site web du W3C. C’est un exemple de ce que l’on peut faire et qui respecte les standards du Web. Fondé en octobre 1994, le World Wide Web Consortium (W3C) est un organisme de standardisation, à but non lucratif, chargé de promouvoir et d’assurer la compatibilité des technologies comme HTML, XML, XHTML, RDF, SOAP ou CSS.
Avec 65 groupes, environ 400 membres, 18 bureaux à travers le monde, Alexandre explique que le travail au quotidien ne manque pas. Ses outils pour travailler ? Les standards du Web. Il utile d’ailleurs pendant la présentation des slides réalisés en HTML5 sur un simple navigateur. Depuis son arrivée au W3C, il travaille sur différents sujets. Il y a du Java bien sûr, avec les outils de validation HTML, qui tourne sur le moteur Jigsaw. Des sites du W3C reçoivent entre 1 et 5 millions de hits par jour. Certains services sont en Java, et ça tourne !
Alexandre sera là mardi 18 mai pour faire une présentation sur Scala lors de l’inauguration du Paris Scala User Groupe, en principe chez Xebia. Je vous tiens au courant, je suis inscrit et je compte bien y aller.
I. DVCS
Sébastien Douche a ensuite donné une très bonne présentation de son expérience avec DVCS. J’ai vraiment bien aimé. Sympa, détendu et un poil polémique histoire que nous nous endormions pas. Comme on dit : SEB c’est bien.
Il lance ses slides et commence par se présenter. A chaque fois qu’il vient au Paris JUG, Antonio l’appelle « Onon Palui« .
Il faut dire que Sébastien est un extraterrestre : c’est un expert Python, il ne fait pas de Java. Ce qui donne des bons échanges, parfois musclés, mais toujours sportifs.
Il nous propose de découvrir DVCS (le concept) et parle de DCVS (qui est un logiciel). Directeur technique d’une Startup, il raconte sa propre expérience. Pour lui, la gestion de version du code source est le premier filet de sécurité. Le deuxième étant les tests. Un développeur qui n’écrit pas de tests lorsqu’il écrit du code, n’est pas un développeur. Point à la ligne.
Avec son background, lorsqu’il prend le rôle de Tech Lead en 2007 dans son entreprise il arrive avec son package habituel : Trac et SVN. Comme nous, c’est quelqu’un qui fait du SVN depuis fort, fort, fort longtemps… et il a arrêté.
Le logiciel de sa Startup demande beaucoup de refactoring, à comparer avec la gestion du cycle de vie d’une application en maintenance. Il explique que pour une application avec 2 ou 3 ans de code, il y a des traces dans la neige pour skier. Son souci pour son produit, c’est que tout est à faire. Un peu comme descendre une piste de poudreuse la première fois. Le refactoring est important. Les développeurs ne sont pas toujours d’accord, les discussions fusent… et il commence à souffrir avec SVN.
Il se rend compte d’abord que SVN apporte de la souffrance. Les développeurs travaillent par « micro-commit/micro-merge ». Parfois même, ils font la course l’un, l’autre, afin de commiter avant l’autre… pour éviter le merge ! Cela nous fait rire car il a raison. Donc des commits très fréquents, sans parfois de réel intérêts pour le produit.
Après le micro-merge, il faut ensuite parfois faire des macro-merges. Vous vous dîtes : et les branches SVN ? Et bien tout le monde est d’accord pour dire que SVN traumatise. Faire des branches c’est compliqué. Il faut vraiment être motivé et avoir une personne dédiée pour cela… Quelle perte de temps.
Au final, Sébastien dit que SVN se transforme en outil de copie sophistiqué… pas en gestionnaire de code source. Il ne fait que de l’historisation.
Son souci c’est la valeur livrée. Il faut dire que c’est un passionné de l’Agilité. Il est l’un des organisateurs de la conférence Agile France qui aura lieu le 31 mai et le 1er juin à Paris.
Le but d’une équipe de développement logiciel est de livrer régulièrement de la valeur au client. Un logiciel qui marche, sur lequel il est possible de faire une démo à tout moment. Pour cela, il faut supprimer la douloureuse étape de l’intégration et de la livraison. Cela semble facile, mais c’est très difficile avec SVN.
La solution est simple : faire de l’isolation ! Au lieu d’avoir une vision « version par fichier » ou « vision par répertoire », le principe des DVCS est de travailler sur des petits incréments, sur les différences des fichiers au sens contenu.
Sébastien prévient tout le monde : vous avez fait du SVN ? Le passage à Git, à Mercurial ou à Bazaar sera difficile. J’ai fait mes premiers pas avec Bazaar, sur le framework Play! et c’est simple à comprendre. Le problème est que SVN nous a détruit le cerveau, et qu’il sera difficile de réapprendre.
La première notion importante dont parle Sébastien, c’est la notion de Workflow. Il existe plusieurs Workflows :
– votre manière de commiter à vous, le workflow personnel
– la manière de commiter/merger par rapport à vos collègues (inter-personnel)
– le workflow organisationnel, imposé par le projet ou l’organisation
Le premier intérêt de Git ou Mercurial : comme chacun dispose d’un repository local, avec l’ensemble du projet, vous pourrez commiter à votre rythme, comme vous voulez, localement. C’est votre workflow perso.
Ensuite, lorsque vient le temps d’intégrer, le workflow interpersonnel permet de construire le logiciel en isolant les incréments des autres développeurs, pour construire si j’ai bien compris, la version « commune ».
Les nouveaux workflows apportent du vocabulaire différent. Sébastien et David parlent de Cherry Picking, de la possibilité d’envoyer des patchs facilement, de bosser sur plusieurs repositories…
Dans le monde SVN, quelqu’un qui fait des commits toutes les 10 mn gène ses voisins, qui doivent s’adapter à son Workflow. Dans le monde DVCS ce n’est pas le cas.
La 2eme notion : les DVCS sont orientés contenu. SVN est orienté ChangeSet. DVCS en fait se fiche pas mal des noms des répertoires ou des fichiers. Le principe c’est de travailler sur le contenu et de s’échanger le contenu, pas le contenant.
Pour conclure, Sébastien (dont j’ai résumé ici la présentation) donne les points qui ont changé pour lui :
– Tout d’abord les développeurs sont focalisés sur le code, ils ne perdent pas de temps avec la gestion de source
– Git ou Mercurial sont très souples, et vivent leur vie en dehors de l’organisation, ce qui vous laisse toute la liberté nécessaire pour travailler.
– Les pushs de code se font vers un repo central ou vers le repo de ses voisins par fonction. C’est bien plus logique. Cela ressemble à une copie intelligente du code d’un poste de travail vers l’autre finalement
– Les revues de code sont faciles à faire, et systématique.
– Il est possible de faire des démos à tout moment, car la version commune marche forcément. Les démonstrations se font dès qu’une fonction est livrée.
– Il y a moins de stress dans l’équipe
– Le projet est beaucoup plus stable
Bref Sébastien nous encourage à regarder vers l’avenir et à nous remettre en question. Ce fut une présentation très sympa et bien animée.
II. Git, la gestion de configuration qui vous veut du bien
David Gageot est le CTO d’AlgoDeal.com. C’est un hedge fund qui recrute ses Quants sur Internet en proposant une plateforme de valorisation, pour pouvoir créer des algos de passage d’ordre automatique sur le marché. Le tout avec du Java, des technos sympathiques comme Voldermort par exemple.
Git est un outil de gestion de versions distribué créé par Linus Torvald (note : si tu ne connais pas Linus à 30 ans, tu as raté ta vie). Ecrit en C, c’est un outil bas niveau qui permet de gérer de manière décentralisée le code source d’un projet. En l’occurrence, le noyau Linux. Autant dire que c’est pas un truc de Mickey, et que le système est éprouvé. Mais pour Linux…
David comme Sébastien est très direct : oubliez SVN ! SVN pas bien ! SVN poubelle ! Celui qui fait repousser les cheveux, qui fait revenir l’être aimé, qui vous donne de beaux abdos c’est Git !
Lancé en avril 2005, suite à quelques différents autour de BitKeeper, Git est plutôt bien documenté. David cite le Git Community Book qui a été traduit en Français sur le site d’Alex Girard.
Du côté des outils, Git est fournit avec un client Tcl/Tk. David cite GitX pour Mac OS. Côté Windows il ne semble pas y avoir d’outils très performant pour l’instant.
Personne n’a parlé du support dans IDEA IntelliJ. Dommage car JetBrains explique que Git est supporté sans devoir installer un plugin… comme dans l’autre logiciel là… néclipseu… Enfin bref vous me comprenez.
Pour continuer, David montre 2 fonctions clés de Git qui permettent de gagner du temps. Tout d’abord Git bisect puis ensuite le principe du build incassable.
Git bisect est un script qui permet de retrouver à quel moment votre logiciel a cassé. Pour illustrer cela, il prend un cas vécu : après Noël, il se rend compte que la commande « mvn eclipse:eclipse » ne marche plus sur son projet. En remontant sur d’anciennes versions, il se rend compte que c’est le cas depuis pas mal de temps… Mais impossible de trouver un commit évident.
Grâce à Git bisect, il va pouvoir ressortir les versions antérieurs de son projet, pouvoir lancer son script maven, et détecter quand exactement celui-ci a cassé le build. Ce fut assez bluffant.
La doc de Git Bisect est sur le site kernel.org. Déjà, cela fait plus sérieux qu’un site pingouin.com…
David parle ensuite du build incassable. Ce fut très intéressant. Pour illustrer cela, il nous montre son écran de contrôle Hudson : il est éteint. Et un gros sticker vert affiche « Build is Ok ». Car l’intégration continue de son projet ne casse jamais.
Pour ce faire, lorsqu’un développeur veut commiter, il va utiliser un petit script qui grâce à Git, va préparer une version dans un répertoire de travail sur le poste du développeur. Ensuite, le projet se compile, et si jamais le build fonctionne, alors Git termine le commit vers le serveur central. Et c’est tout !
David explique que dans l’ancien système basé sur SVN, il fallait parfois 11 minutes pour faire un « mvn clean install ». Et souvent, il allait prendre un café avec ses collègues. Aujourd’hui, plus besoin de perdre du temps, et il prend moins de café. Emmanuel Bernard me glisse à l’oreille : « Du coup, Git c’est un peu Anti-Social comme système : tu ne bois plus de café avec tes collègues » LOL :-))))
Bref Git c’est pas forcément plus simple, sur Windows ça pique un peu les yeux. Mais qui développe encore sur Windows ?
Fin du show, moi j’ai beaucoup aimé. David redonnera la présentation complète à la conférence Agile France et aussi à l’USI 2010. A ce propos, il reste 3 places pour ceux qui sont intéressés.
Le moment du buffet
Après cette première heure, 220 geeks ont soif. Et lorsque le geek a soif, il descend prendre un verre. Pour l’accueillir : un buffet offert par l’eXpress-Board, le site d’offres d’emplois que j’ai lancé en mars dernier. Pour moi ce fut l’occasion de rencontrer des candidats, des gens intéressés par la partie technique, des annonceurs intéressés comme la société qui fait le lapin Nabaztag, un éditeur de logiciel dans la sécurité, et beaucoup de candidats intéressés. Le message que plusieurs m’ont dit : on veut pouvoir déposer un mini-CV et être contacté. Donc le message est reçu, et je vais travailler sur cette partie. L’une des personnes (Yann je crois) m’a donné quelques idées très sympathiques, bref ce fut très sympa.
Maven 3 et Deploy It
Ben là… désolé Arnaud et Nicolas… désolé Guillaume et Benoît… mais je n’étais pas là. J’ai passé une heure à discuter avec pas mal de monde et je n’ai pas assisté à la suite.
Enfin la 3ème mi-temps fut courte, c’est pas tout mais il y a du boulot.
Conclusion
DVCS et Git, très intéressant. On attend un peu de voir les outils, et de comprendre les concepts, mais cela semble prometteur. En même temps, je pense que SVN sera encore là pour longtemps… comme Java.
Merci aux gars qui étaient là ce soir et qui ont parlé de l’eXpress-Board à leur société. La petite cacahuète de la table 4 c’est Pierre, le méga gros fromage sur la table 1 c’est grâce à Paul, la bonne bouteille de Bordeaux c’est grâce à Geoffrey… Tout cela grâce à tout le monde.
Je crois au concept des annonces distribuées. Si nous devons faire une analogie avec SVN versus Git, voici ce que je dirai : SVN a besoin d’un serveur central pour fonctionner, comme un site d’offres d’emplois classique. Git au contraire vous permet de cloner en local le contenu et de travailler sans devoir subir un Workflow lourd.
Le site l’eXpress-Board c’est exactement pareil : les offres sont disponibles via un flux RSS comme un Blog. Vous pouvez donc les ajouter sur votre Google Reader et suivre celles-ci sans devoir venir sur le site. Vous pouvez même partager ces offres comme autant de billets de blogs sur votre interface Google Reader.
Je crois plus à la force du réseau et au bouche à oreille pour trouver un boulot. Les offres du site ne sont donc que les étincelles qui doivent ensuite amener les candidats à contacter les annonceurs. Enfin vous l’avez compris, en donnant votre avis sur les offres, vous encouragez les annonceurs qui sortent du lot. Et écrire une annonce différente est loin d’être facile.
Je conseille donc aux sociétés qui souhaitent passer une annonce de demander à leurs Geeks et à leurs développeurs. Cela prend 10 minutes, et c’est un projet passionnant.
En fait, si j’étais un responsable RH, je ferai un concours pour que mes gars préparent une annonce. Et ensuite, l’annonce la plus sympa est mise en ligne sur le site. Si un candidat signe et rejoint alors la société, et bien je verserai la prime de cooptation à la personne qui a écrit l’annonce.
C’est tout pour ce soir, à bientôt.
(le bonhomme au milieu c’est moi)
Concernant maven3, pour ceux pour ceux qui se demandent « mais quand c’est que ça sort la GA de maven3 ?! » :
Arnaud Heritier m’a répondu en off : ça devrait être entre juin et septembre, plus probablement septembre selon lui.
J’ai du rater ma vie car je ne connais pas de Linus Torvald mais un proche homonyme Linus Torvalds
Moi je suis bien content d’être passé en premier : les suivants ont fait des présentations de fou 🙂
A propos de la partie sur DVCS et Git.
A vrai dire je suis un peu mitigé.
D’un côté je suis le premier à être favorable à de nouvelles idées, à être séduit à priori par les avantages cités et à rêver d’avoir un projet pour essayer.
De l’autre quand je lis « SVN poubelle », je me dis : c’est quoi cet esprit sectaire, depuis quand les logiciels libres se crachent les uns sur les autres? Encore une guéguerre stérile à la KDEvsGnome au grand dam de leurs auteurs respectifs?
Avant de vouloir convaincre toutes les entreprises de passer à Git, pourriez-vous svp. essayer de les convaincre d’abandonner leur vieux CVS voire même pour certaines, Microsoft VSS? Et là ne dites pas que je crache sur ces produits, ils sont officiellement en fin de vie de l’aveu même de leurs auteurs.
Pour ce qui est du support de Git sous Windows, il y a Tortoise Git qui est pas trop mal : http://code.google.com/p/tortoisegit/
En plus, pour les utilisateurs de SVN sous Windows, y’a des chances qu’ils ne soient pas trop perdus.
Juste pour bien comprendre : on ne fait plus de merge avec Git et les DVCS ?