[couverture de Linux Magazine 95]

Nordic Perl Workshop 2007

Article publié dans Linux Magazine 95, juin 2007.

Copyright © 2007 - Sébastien Aperghis-Tramoni

[+ del.icio.us] [+ Developers Zone] [+ Bookmarks.fr] [Digg this] [+ My Yahoo!]

Chapeau

Cette année encore, le Nordic Perl Workshop a convaincu nombre de personnes venant d'une douzaine de pays différents de se déplacer, cette fois-ci à Copenhague, Danemark, pour se retrouver et discuter autour de Perl.

Vendredi 27 avril - Pre-Workshop Beers

[logo de la conférence NPW 2007]

Respectant la coutume, les participants arrivés la veille se sont rassemblés dans un pub pour trinquer avant le début de la conférence. Après quelques bières au Globe Irish pub, la cuisine de celui-ci étant déjà fermée, la vingtaine de mongers est allé dans un restaurant japonais situé juste en face pour déguster des sushis ; ce n'est certes pas très local, mais c'était quand même bon ;-).

Samedi 28 avril

Le lieu de la conférence est un bâtiment au sein du parc scientifique Symbion, situé dans le nord de Copenhague. Deux salles sont disponibles pour les présentations, et le grand hall permet de discuter durant les pauses qui séparent les présentations.

Le public dans la seconde salle écoute Fred Moyer

Old Perls and new code - Sébastien Aperghis-Tramoni

Je suis le premier à passer dans la seconde salle, où je présente comme au French Perl Workshop 2006 des techniques pour écrire du code Perl moderne qui reste compatible avec les vieux Perl.

Handling the ball of mud - Fred Moyer

Fred donne des conseils sur la gestion des balls of mud (littéralement "boules de boue"), c'est-à-dire des programmes qui ont évolué organiquement, développés par des personnes différentes sur une assez longue période, avecla structure d'un gros plat de spaghetti. Il conseille d'utiliser Perl::Tidy et Perl::Critic pour établir des revues de code automatisées, et Smolder pour la centralisation de résultats de smoke testers et la génération de rapports.

What's new in Perl 5.10 - Léon Brocard

Léon Brocard présente les nouveautés de Perl 5.10

Léon présente les nouveautés de la prochaine version stable de Perl, la 5.10. Entre autres, say() (comme println()), l'opérateur defined-or qui permettra de remplacer $a || $b par le plus correct $a // $b, state qui permet de définir des variables d'état, le moteur d'expressions régulières qui a été radicalement optimisé (dérécursion, trie, Aho-Corasick), le support de pragmas lexicales définies par l'utilisateur, un meilleur support de Win32.

À la fatidique question de savoir quand cette version sera disponible, Léon donne la réponse officielle : after lunch, before Christmas.

Déjeuner

Innovation très sympathique, le déjeuner a lieu dans le hall, où un copieux buffet a été mis en place. C'est très appréciable étant donné que le parc Symbion n'est pas vraiment dans une zone où il y a des restaurants. Le traiteur ne s'est pas moqué des organisateurs, les plats étant vraiment bons. De même pour les pauses où des fruits, des gâteaux de couleur étrange (mais aussi très bons), et des carottes dont proposés.

Le déjeuner transforme le hall en joyeuse cafétéria

Multi-Language Test Suites - Curtis Poe

Curtis décortique le protocole TAP, utilisé par les modules de test en Perl et maintenant aussi dans d'autres langages comme Ruby, Python, PHP, Java, C. Il montre ensuite TAP::Parser, le futur remplaçant de Test::Harness, beaucoup plus modulaire, plus souple et plus extensible. Quelques exemples suivent montrant dans une même suite des tests en Perl, en Ruby et web.

An Introduction To Perl Critic - Josh McAdams

Josh présente Perl::Critic, un module d'analyse syntaxique du code Perl qui permet de réaliser une revue de code et d'en établir des critiques en fonction de politiques, en partie tirées du livre Perl Best Practices de Damian Conway. Ces politiques sont elles-mêmes groupées en thèmes qui peuvent être combinés afin de sélectionner facilement celles que l'on veut appliquer à son code. Par exemple :

    perlcritic -theme '(pbp || (bugs && security)) && !cosmetic' ...

Bien sûr les réglages peuvent être stockés dans un fichier de configuration, ce qui permet de les partager et de les réutiliser par exemple depuis Test::Perl::Critic, qui permet d'intégrer Perl::Critic à sa suite de tests.

Un gâteau.. vert !

Testing large software - Erwan Lemonnier

Erwan explique qu'il travaille pour une organisation qui maintient une très grosse application Perl, de plusieurs milliers de lignes de codes et comment ils ont montés un serveur d'intégration continu : à chaque commit dans le VCS, ce serveur récupère les sources et lance un smoke tester.

Leur principal problème était au niveau de la base de données, trop complexe pour être simulée et trop grosse pour être regénérée à chaque exécution. La solution adoptée a été de n'utiliser qu'un extrait de cette base, le mettre dans une archive tar et d'ajouter ce fichier au VCS.

Lightning talks

Abigail commence avec sa présentation sur l'avertissement "%s (...) interpreted as function" qui l'irrite parce qu'il se produit de manière incohérente. Je le suis avec mes règles d'utilisation de Sys::Syslog, inspirées de celles de Fight Club. Anton Berezin continue avec une démonstration de la méthode pour plier les t-shirts en 2 secondes, suivie d'une explication détaillée avec schémas et décomposition du geste.

Josh McAdams présente son matériel audio

brian d foy vient avec une version courte de pourquoi il ne faut pas utiliser Benchmark.pm : There are lies, damned lies, and benchmarks. Dmitry Karasik présente son module Array::Slice qui offre un itérateur de tableau pour le parcourir par tranche (très utile). Josh McAdams termine en déballant tout le matériel qu'il utilise ou a utilisé pour réaliser ses enregistrements pour son podcast Perlcast. Quand on lui demande pourquoi il utilise Skype pour les entretiens, il répond simplement qu'il n'a pas de téléphone fixe.

Evening Beers

Le soir, les participants se sont retrouvés dans un café sur l'île Brygge pour boire un coup ensemble et discuter. Personnellement, je n'y suis allé qu'après avoir fait un tour avec Salve J. Nilsen (l'organisateur de NPW 2006 à Oslo, Norvège) et Claes Jakobsson (l'organisateur de NPW 2005 à Stockholm, Suède) au parc d'attractions Tivoli où pour faire des montagnes russes et des auto-tamponeuses :-)

Dimanche 29 avril

Flexible Business Rules with Brick - brian d foy

brian propose de faire dialoguer ces deux personnes !

brian explique comment créer un meilleur code de validation de données. Déçu de Data::FormValidator, il a décidé de créer Brick, axé sur un modèle avec une séparation entre la saisie et la validation, en le concevant comme autant de petites briques (ce n'est qu'a posteriori qu'il a réalisé que le Danemark était la patrie du LEGO).

Le fond du problème est que d'un côté seuls les programmeurs savent écrire du code, et que de l'autre seuls les hommes d'affaires connaissent les bonnes règles de validation. Il faut donc faire dialoguer les deux côtés pour arriver au meilleur résultat.

Code generation - Nelson Ferraz

Nelson commence par montrer comment il transforme un say "hello world" en code Java équivalent. Puis montre comment il génère du code Perl, SQL et d'autres fichiers (JavaScript, CSS, TT2) à partir d'une tripotée de fichiers XML décrivant les structures de données et le code.

Josh McAdams montre comment étendre Perl::Critic

Customizing and Extending Perl Critic - Josh McAdams

Josh rappelle brièvement les bases de Perl::Critic et que la distribution est livrée avec 98 politiques, groupées en 16 catégories. Des politiques supplémentaires sont disponibles sur le CPAN comme Perl::Critic::Bang par Andy lester et Perl::Critic::More par Chris Dolan qui va profiter d'un financement de la Fondation Perl pour porter 20 politiques supplémentaires de Perl Best Practices.

Josh explique ensuite comment créer sa propre politique et rappelle l'esprit derrière celles déjà existante : innocent until proven guilty. Il conseille l'utilisation de Perl::Critic::Utils qui fournit plus d'une trentaine de fonctions pour faciliter l'analyse des documents avec PPI, qui n'est sinon pas très simple à maîtriser.

The Perl Debugger - Richard Foley

Richard montre les différentes manière d'invoquer le débugger Perl et en détaille les principales commandes. Il fait remarquer qu'on peut utiliser DDD et ActivePerl comme interfaces graphiques, plus agréables que l'interface en ligne de commande. Il fait remarquer qu'on peut aussi débugger les programmes mod_perl avec Apache::DB et cite les autres outils de débuggage comme Devel::Command, Devel::Trace, Devel::DProf, Devel::ebug, ptkdb.

brian d foy explique comment gérer
ses modules Perl sans devenir fou

Managing Perl Modules Without Going Crazy - brian d foy

brian conseille de ne pas suivre les leaders (y compris lui-même) et en conséquence recommande d'utiliser les vieux outils éprouvés au lieu des nouveaux outils récents, tels Module::Build auquel il trouve de nombreux problèmes. Il introduit ensuite Module::Release, son module qui effectue une suite de vérifications sur une distribution avant dépôt sur le CPAN, SourceForge, etc. Il fait remarquer que plusieurs CPAN Testers ayant des systèmes totalement en vrac, si un module marche chez tous les CPAN Testers, il marchera probablement n'importe où.

Barely Legal XXX Perl - Jos Boumans

Jos fait à nouveau sa présentation sur les dessous de la syntaxe de Perl, ce langage diabolique car trop dynamique et faiblement typé, ce qu'on appelle des "fonctionnalités" ;-)

Only perl can parse Perl. Pour illustrer les bizarreries de la syntaxe Perl, Adam Kennedy a écrit Acme::BadExample, un module qui ne peut pas être exécuté, et a mis au défi quiconque serait capable d'écrire un module Anti::Code capable de l'exécuter. Jos a relevé le défi et explique les techniques utilisées :

Au final, Jos a réussi à "exécuter" Acme::BadExample, et à réclamer à Adam les bières qu'il promettait :-)

Lightning talks

Erwan Lemonnier montre comment retarder le chargement de modules avec use later (mais il ne le conseille pas vraiment pour du code de production). Abigail revient râler, cette fois-ci sur File::Copy qui il est vrai a plusieurs défauts (mauvaise API, perte des attributs du fichier copié). Je le suis avec ma présentation sur Acme::JavaTrace histoire d'amuser un peu le public. Anton Berezin présente le Sub::PatMat qui permet d'invoquer différentes versions d'une fonction suivant les arguments qui lui sont passés (je crois que c'est un genre de MMD). brian d foy vient expliquer dans Fear and loathing in Perl les longues heures que la communauté Perl lui prennent chaque soir. Enfin Josh McAdams présente une méthodologie de développement agile utilisée dans son entreprise, nommée Scrum (cf. Wikipédia pour une description très complète).

Photo de groupe des participants au NPW 2007

Wrap-up

Jonas B. Nielsen reprend la parole pour remercier les Mongueurs de Perl, qui ont fournit la plate-forme de conférence Act, leurs sponsors, les nombreuses personnes de l'équipe qui ont assurés le bon déroulement de la conférence, les conférenciers (34 présentations) et bien sûr tous les participants. Il annonce que le prochain Nordic Perl Workshop retournera à Stockholm, en Suède. Il convie enfin ceux qui ne partent que le lendemain à se retrouver dans un pub pour une dernière volée de bières.

Conclusion

Le Nordic Perl Workshop confirme encore à nouveau son côté à la fois très international et très convivial, par un emploi du temps moins serré que le YAPC Europe qui permet plus facilement aux participants de discuter entre eux. Cela a aussi permit à Josh McAdams de réaliser plusieurs interviews (dont une avec votre serviteur) dans de bonnes conditions (bien meilleures qu'à OSCON selon lui). On ne peut qu'inviter les hackers Perl français à faire le déplacement l'an prochain à Stockholm pour découvrir la chaleureuse ambiance des pays du Nord.

Liens

Auteur

Sébastien Aperghis-Tramoni, {Marseille,Sophia}.pm, <sebastien@aperghis.net>

Merci à Jonas B. Nielsen et Lars Thegler pour leurs photos.

[IE7, par Dean Edwards] [Validation du HTML] [Validation du CSS]