Retrouvez cet article dans : Linux Magazine 98
Reprenant son tour d’Europe, la conférence annuelle de la communauté Perl de l’Ancien Monde s’est déroulée cette année à Vienne, en Autriche, du mardi 28 au jeudi 30 août. Malgré la défection d’Audrey Tang, la conférence s’annonçait encore meilleure que les précédentes de par la présence de Larry Wall, Damian Conway et Mark Jason Dominus, et de par l’incroyable affluence, près de 340 personnes. Le thème de la conférence était " Social Perl ".

Jour 0 – lundi 27 août
Comme de coutume, la conférence commence en partie la veille au soir par un rendez-vous donné dans un pub de la ville. Il s’agit du Centimeter III, où l’on peut déguster de la viande embrochée sur une épée et boire de la bière au mètre ! Cela permet aussi de commencer l’enregistrement des personnes présentes, ce qui n’est pas inutile vu le nombre record d’inscriptions. Mais ce que les organisateurs n’avaient pas prévu, c’est que l’affluence à cette soirée même serait bien supérieure à celle prévue : une centaine de personnes au lieu d’environ cinquante.
Jour 1 – mardi 28 août
Thomas Klausner ouvre la conférence à l’heure dite, présente quelques points pratiques et passe la parole à Karen Pauley qui annonce où aura lieu la prochaine conférence : Copenhague, Danemark. Lars Thegler présente la ville de manière amusante ainsi que le thème de l’an prochain : Beautiful Perl.
Suit José Castro qui explique dans How to get the most out of a YAPC ce qu’est une conférence Perl. Il fait lever les mains aux nouveaux venus, facilement la moitié de l’assistance, puis aux plus anciens, afin que les nouveaux sachent à qui ils peuvent demander de l’aide. Il donne le mot de passe secret pour aborder les autres : " can I offer you a beer ? "
Larry Wall – Keynote
Larry est d’accord, mais à sa manière : " this is social Perl, so I brought my wife ". Il résume ensuite l’histoire de Perl en présentant les différents langages qu’il a étudiés au cours des années, et fait remarquer que Perl a été créé pour combler le vide entre les deux extrêmes que sont le shell et le C. Il présente ensuite différents points d’architecture des langages de programmation, expliquant où Perl 5, Perl 6 et d’autres langages se situent. Il termine en montrant STD.pm, les règles Perl 6 qui constituent l’analyseur Perl 6 sur lequel il travaille, et l’exécute avec Pugs.
R. Geoffrey Avery – Manage::Objects
Geoffrey présente un ensemble de modules, regroupés sous le nom Manage::Objects, dont le but est de simplifier la gestion de certaines tâches très courantes, comme les options, la configuration, les connexions réseau et DBI, les mots de passe, etc. L’esprit est de créer un objet pour chaque type de donnée à gérer, et de les relier entre eux au fur et à mesure, ce qui permet d’accéder à l’ensemble dès qu’on en a un. Ses modules seront bientôt sur le CPAN.
Marcus Ramberg – Bag of tricks from Iusethis
Marcus explique comment il a monté le site iusethis.com avec Arne Fismen, sans surprise en utilisant Catalyst. Sa philosophie pour construire le site a été principalement guidé par le bon sens et la simplicité : les URL ont de l’importance, et c’est quand même bien pratique de pouvoir les taper de manière naturelle, sans chercher quels sont les bons arguments. Il a aussi utilisé AJAX, mais là où cela avait du sens, et, en pratique, il a plutôt utilisé de l’AJAH (injection directe de HTML dans le DOM). Bien sûr, il supporte les standards en vigueur et propose des formats alternatifs (RSS). Il peste contre les sites qui utilisent des pseudo-liens en JavaScript, et conseille d’utiliser uri_for() pour permettre une relocation aisée du site. Il remercie Léon Brocard pour HTML::TagCloud qui simplifie grandement la mise en place de tags.
Paul Johnson – Gluing a Bank Together
Paul explique qu’il travaille pour UBS, une grande banque suisse qui réalise plus de 3,4 milliards de dollars en faisant du cash management, ce qui nécessite de gérer des milliers de messages par MQ (un gros logiciel IBM), mais aussi par mail, SMS et autres canaux. Ces messages, tous dans des formats différents, doivent être travaillés et convertis dans un format commun. Ces applications étant, sans surprise, assez critiques, elles sont surveillées par un Nagios avec une kyrielle de plugins Perl.
Gunnar Wolf – Integrating Perl in a wider distribution: The Debian pkg-perl group
Gunnar Wolf commence par établir un parallèle entre Perl et Debian : les deux sont connus pour leur qualité, mais sont décriés pour leur lenteur d’intégration et leur obsolescence. Il rappelle l’histoire du CPAN et constate qu’il est toujours en pleine croissance. Il note par ailleurs que si Perl dispose d’outils comme CPAN.pm et CPANPLUS, cela n’importe pas vraiment à l’utilisateur final qui veut simplement installer des programmes et leurs dépendances, et se fiche d’outils bien léchés, surtout que chaque langage a le sien. Il présente ensuite le rôle des mainteneurs de paquets Debian comme filtre de problèmes, puis le groupe pkg-perl qui maintient 370 des 1303 modules Perl fournis dans Debian.
Leon Brocard – Scaling with memcached

Leon Brocard et son adorable petite peluche de dromadaire
 Léon commence sa présentation en rappelant les différents mécanismes traditionnels de cache et, bien sûr, leurs problèmes, puis introduit Memcached, qui part du constat que si les disques sont lents, les mémoires et réseaux sont rapides. Memcached est donc un genre de gigantesque table de hash distribuée sur différents serveurs, à laquelle on peut accéder depuis tous les langages courants. Il donne comme exemple Facebook qui utilise 200 serveurs AMD64 quad-core avec 16 TB de mémoire chacun... 3 téras de mémoire cache ! Il indique les limitations actuelles, la principale étant l’absence de gestion des pannes de serveurs, un point qui fait partie des améliorations planifiées.
Tatsuhiko Miyagawa – Practical Web scraping with Web::Scraper
Tatsuhiko montre l’état de l’art du web scraping actuel et rappelle qu’il y a encore bien des cas où c’est nécessaire. Il montre des modules du CPAN qui utilisent des regexps, ce qui est fragile et difficile à maintenir. Et encore faut-il gérer proprement l’encodage du document et les entités HTML. Il montre un exemple écrit correctement, qui utilise XPath et les sélecteurs CSS pour trouver les éléments. C’est bien mieux, mais aussi plus long. Il a donc décidé de factoriser toute la partie mécanique dans Web::Scraper. Il fait ensuite une démo live sur la page des horaires de la conférence. C’est très cool et ça donne envie, même si la syntaxe d’utilisation est un peu spéciale.
Richard Dice – Finding Perl’s place in the world
Richard s’appuie sur les résultats de différentes études, qu’il présente au fur et à mesure, pour essayer de déterminer la situation de Perl par rapport aux autres langages. Par exemple, l’étude Forrester Wave donne à Perl une place similaire à PHP, hormis le fait qu’il manque le support d’une société. Richard résume la situation en remarquant que " Perl is the duct tape of Network 1.0, but not of 2.0 ", ce qu’il confirme par le résultat du concours Plat_Forms : le code et les templates en Perl prenaient bien moins de place que les équivalents en Python et Java, mais avec plus de lacunes au niveau GUI. Il termine en expliquant le rôle de TPF (The Perl Foundation), qui permet de financer certaines conférences, les hackathons, le développement de projets.
Jour 2 – mercredi 29 août
Damian Conway – Keynote: Antisocial Perl
Damian commence par remercier le public, puis les sponsors qui ont payé pour son voyage, inventant des histoires démentielles à leur sujet, telles que comment ils durent vendre enfants et maison pour trouver l’argent. Il compare ensuite les cultures autrichienne et australienne avec d’un côté Mozart et Freud et de l’autre Priscilla, AC/DC et Crocodile Dundee :-)
Damian explique une découverte récente : Larry ne vieillit pas, alors que lui-même constate que ses propres cheveux ont grisonné depuis qu’il a rencontré Larry. Il prouve ce qu’il dit par des photos qui montrent Larry au Congrès de Vienne en 1814, Larry avec Lady Ada Lovelace, et même Larry avec les Romains ! Damian conclut que lui-même n’est en comparaison qu’un humble homme et qu’il va rester à ce qu’il sait bien faire : créer des théories de complot absurdes et " photoshopper " Larry ;-)
Passant à un sujet plus sérieux, il explique que le futur de l’informatique est dans la nanotechnologie, et montre comment créer des ports logiques avec des nanotubes. Voulant faire quelque chose de semblable en Perl, il présente Rod::Logic, un module pour exécuter des programmes écrits avec des tiges (-, /, |, \, _). Après quelques exemples, il montre un long programme qui convertit le binaire en décimal… il affiche 42.

Damian Conway explique comment les instructions futures auront eu envoyé leurs résultats aux instructions passées.
Damian rappelle ensuite les paradigmes qu’il a introduit les années précédentes : calcul " en temps constant ", puis " en temps nul ". Il veut donc maintenant le calcul " en temps négatif ", ce qui nécessite de fusionner la mécanique quantique et la relativité restreinte. Il introduit donc l’équation de Paul Dirac qui prévoyait des particules alors inconnues, qui furent découvertes par la suite et nommées " positrons ", que nous savons maintenant être à la base de l’I. A. et des robots (voir I, Robot). Damian montre les diagrammes de Feynman et explique comment on peut voir un positron comme un électron voyageant à rebrousse-temps. Il propose donc d’utiliser des variables positroniques afin de réaliser des calculs en temps négatifs, et montre des exemples de programmes avec des pv (positronic variables) et les diagrammes de Feynman correspondants. Il a véritablement écrit le module Positronic::Variables ! Il exécute les exemples et montre comment le module fonctionne. Mais il y a des cas où les changements ne peuvent se produire, car ils ne se sont pas déjà produits... Il utilise donc Quantum::Superposition afin de maintenir la cohérence du programme entre les différentes lignes de temps parallèles.
En résumé, Damian peut maintenant exécuter des programmes en temps négatif, dans autant d’univers parallèles que nécessaires. Lors du prochain YAPC, il aura eu effectué le calcul " en temps imaginaire " !
Mark Jason Dominus – Perl Program Repair Shop and Red Flags

Mark Jason Dominus cherche un nouveau travail : " Gimme a PHP job, please ".
En attendant que son ordinateur redémarre, Mark joue de l’harmonica (afin de se forcer à respirer profondément explique-t-il). Lui aussi commence par des comparaisons entre Vienne et sa ville natale, Philadelphie : d’un côté, Rußauer Lände, de l’autre Rush Hour Land.
Qu’est-ce qu’un red flag ? Un signe visible de quelque chose dans le code qui pourrait bien être sous-optimal. Il base ses exemples sur le module Class::Observable. Premier exemple, ajouter des éléments à un tableau en utilisant une variable qui en contient la taille. C’est fragile et on peut remplacer ce code par push et assimilés. De même, le dernier élément s’accède par l’indice -1.
Deuxième exemple, des variables globales de classe qui stockent des informations sur les objets créés : cela empêche de dériver facilement et introduit des bugs. Mark montre une manière à son avis meilleure, puis digresse sur les moyens de mieux écrire le code de Class::Observer.
Will Whitacker – How to Find Vulnerabilities in Perl Code
Will note que si le CPAN contient plus de 10 000 modules, on peut en trouver 50 fois plus par Google Code Search. Il rappelle rapidement les problèmes classiques (injection SQL, XSS), puis pointe vers des outils pour trouver les points faibles : RATS, App::Ack, App::Grepl, Stompy, SideJacking. Il conseille enfin d’utiliser des fuzzers (génération aléatoire de données) et pointe vers Peach Fuzzer.
Chia-liang Kao – Jifty Now!, suivi de Advanced Jifty
Chia-liang montre comment construire l’équivalent de Doxory (un site web où on peut poser des questions et où tout le monde peut vous répondre et vous conseiller) avec Jifty. La création des modules, des modèles et de plusieurs composants passe par la commande jifty(1), qui permet aussi de gérer facilement les mises à jour de bases de données.
Laurent Dami s’inquiète de voir une syntaxe Jifty assez différente de Perl, mais Chia-lang le rassure : c’est du Perl valide, pas un filtre de source. D’autres demandent une comparaison avec Catalyst : Jifty fournit des composants par défaut ce qui permet de démarrer rapidement, alors que Catalyst, plus flexible, peut au début vous noyer sous tous ses plugins.
Larry Wall & Damian Conway – Perl 6 Update

Larry Wall (à droite) et Damian Conway (à gauche) expliquent les nouveautés de Perl 6.
Larry et Damian présentent l’état actuel de Perl 6. Damian fait remarquer que tout programme qui passe la suite de tests peut être considéré comme un interpréteur Perl 6. Mais qui décide de ces tests ? " A cabal of white males :) "
Les classes et modules peuvent avoir des attributs comme la version, le nom de l’auteur, etc. Cela permet de résoudre les conflits de noms et aussi de créer des alias. Larry précise que rien n’est dit concernant le stockage des modules sur disque afin d’avoir la liberté de gérer ça librement, y compris par une base de données.
On dispose de commentaires de blocks : some code #{ some comment } more code.
$_ n’est plus la variable par défaut de nombreuses fonctions internes, mais on peut utiliser un appel de méthode réflectif à la place : .=chomp.
L’opérateur ¥ (zip) s’écrit maintenant Z, les opérateurs min et max ont été ajoutés, ainsi qu’une fonction roundrobin(). min et max ont des formes réduites :
   $first_val = [min] @values;    $last_val = [max] @values;
Et si les tableaux sont vides ? Damian : " the entire Universe collapses into this tiny space and imploses in a giant explosion, in negative time. " Larry : " the Right Thing happens. "
Les opérations sur intervalles sont plus intelligentes et préservent l’abstraction autant que possible, ce qui permet la gestion des listes infinies.
      my @pre_squares = (1..*) ** 2 - 1;  # do not try to pop that array...
Les opérateurs de fichiers (-f, -r,...) sont remplacés par le smart match, qui permet de combiner les tests.
      if $file ~~ :r { say "can read" }
Un nouveau méta-opérateur est introduit, X..X, qui permet de créer la forme cartésienne de l’opérateur.
Perl reconnaît maintenant une fonction MAIN(), avec ses arguments dans @*ARGS. Le mécanisme sophistiqué de passage de paramètres de Perl 6 peut être utilisé comme un Getopt par MAIN(). Cette fonction peut même être une MMD, et, ainsi, avoir plusieurs jeux d’options différents. Si aucune signature ne correspond, Perl appelle USAGE().
Les expressions régulières ont été repensées pour devenir plus cohérentes, ainsi les glyphes d’identifiants sont littéraux par défaut et métasyntaxiques lorsqu’ils sont protégés, et inversement pour les glyphes de ponctuation. L’utilisation d’un glyphe dont la fonction métasyntaxique est inconnue produit une erreur fatale. L’interpolation a aussi entièrement changée. atom{m,n} devient atom**n..m, l’infini étant représenté par *. Les accolades servent à exécuter du code (au lieu de (??{..})).
Les tableaux peuvent maintenant être multidimensionnels et de taille fixe :
   my @array[12 ; 30 ; *]             # 3 dimensions dont 2 fixes    my @array[100 ; 100 ; 100 ; **]    # au moins 3 dimensions
Le Pod a été rationalisé (DOM), simplifié (syntaxe) et étendu (modules).
Dîner
Faisant les choses en grand, les organisateurs ont réservé des bus pour transporter les conférenciers jusqu’au restaurant retenu pour le dîner de la conférence, situé en dehors de Vienne.
Jour 3 – jeudi 30 août
R. Geoffrey Avery – Lightning Talks
Beaucoup de présentations éclairs se succèdent. Sortent du lot, celui de Renée Bäcker sur Win32::GUITest, entièrement exécuté par ce module qui manipule pointeur et clavier, celui de José Castro en partie exécuté en temps négatif afin de gagner 8 minutes, et celui de Philippe Bruhat qui présente par un clip très bien réalisé l’annonce des Journées Perl 2007.
Juerd Waalboer – Perl Unicode tutorial
Juerd explique les fondamentaux d’Unicode et des encodages, comment s’en servir correctement et quels sont les pièges à éviter. Il déconseille fortement encoding.pm (" so broken it can’t be fixed ") et recommande son module encoding::stdio.
Gerard Goossen – Introduction to transforming source code using MAD
Gerard présente MAD (Misc Attribute Decoration), une modification de Perl 5 faite par Larry Wall pour conserver les espaces commentaires et autres données du code source qui étaient auparavant jetées. Quand on a un Perl compilé avec -Dmad, on peut exécuter PERL_XMLDUMP=filename perl program.pl pour se retrouver avec un dump XML de l’AST Perl.
José Castro – How NOT to write a Perl résumé and how NOT to behave in an interview
José raconte ce qu’il ne faut pas faire sur un CV et dans un entretien, en s’appuyant sur des expériences vécues. Nadim Khemir fait remarquer que quelqu’un qui ne sait pas faire une phrase correcte ne sait probablement pas écrire un programme. Wendy Van Dijk nous apprend qu’il existe des livres avec des listes de questions techniques (et leurs réponses) pour les personnes non techniques qui font passer les entretiens.
Vente de charité

À la demande générale, Damian Conway et Thomas Klausner font un bras de fer torse nu !
Une grande quantité de livres, de t-shirts, d’heures de formation et d’objets divers et variés est mise aux enchères. Plus, bien sûr, les délires habituels ;-)
Ainsi, les organisateurs (danois) de l’an prochain devront porter un tatouage du drapeau suédois sur le front. Quelqu’un a acheté le droit de faire retirer une règle de Perl Best Practices par Damian Conway, qui arrache la page du livre et fait mine de la manger. Un bras de fer, torse nu, est organisé entre Damian et Thomas Klausner, remporté par Damian.
Conclusion
Malgré le wifi qui était à peine utilisable (mais qui était géré par l’université et non par les organisateurs), cette conférence est, de l’avis général, la meilleure réalisée en Europe, sur le plan de l’organisation, des conférenciers, des présentations, et du large public rassemblé.
Rendez-vous en novembre à Lyon pour les Journées Perl 2007 et l’an prochain à Copenhague pour YAPC::Europe 2008.
Liens
- YAPC::Europe 2007, le site de la conférence : http://conferences.yapceurope.org/2007/
- Les vidéos de la conférence : http://www.youtube.com/results?search_query=yapceu07
- Les photos de la conférence : http://flickr.com/photos/tags/yapceu07/Â
 Retrouvez cet article dans : Linux Magazine 98


