Les 3 et 4 mars avait lieu la conférence Symfony Live 2011 à Paris, où se sont tenues une trentaine de conférences sur le framework PHP Symfony.
L’occasion pour l’équipe de symfony de présenter Symfony2 et quelques unes de ses nouvelles fonctionnalités, avec quelques surprises à la fin de la session. Clever Age y était, et voici notre retour sur ce qui a été présenté.
Première journée
The lost art of simplicity
On commence la journée par une piqûre de rappel à propos de la simplicité par Josh Holmes, de Microsoft. « Une idée n’est pas une bonne idée tant que tu ne peux pas l’expliquer simplement. », nous explique-t-il. On comprend relativement facilement qu’il est préférable de concevoir et lancer un produit simple, limité au niveau de ses fonctionnalités, et de les ajouter par la suite.
Les slides sont disponibles sur Slideshare.
Gwen : très bon conférencier, Josh Holmes nous ouvre l’esprit à la simplicité, conférence non technique, un poil philosophique, très bienvenue pour commencer une journée bien remplie :)
Benjamin : Une piqûre de rappel qui était nécessaire, une conférence « made by Microsoft » beaucoup plus intéressante que celle de l’année précédente.
Application Security, Dependency Injection, and AOP in Symfony2
Johannes Schmitt nous parle du composant Security qu’il a repris en Mai après la création originale de Fabien Potencier. Symfony2 est livré avec une surcouche de sécurité. Il sécurise votre application en fournissant un service d’ authentification et d’autorisation (ACL).
Gwen : Johannes Schmitt nous a présenté les différentes fonctionnalités pour les deux notions d’authentification et d’autorisation de façon assez linéaire. Ceux qui se sont déjà fait la main sur Symfony2 ou ont déjà lu la documentation sur la sécurité n’auront rien appris de nouveau.
Symfony2 CMF
La plupart des CMS du marché ont de très bon outils pour l’utilisateur final ou pour le commercial qui veut les vendre, mais pour un développeur ce n’est pas la même histoire. Souvent développé au fil du temps, leur code est rarement organisé de manière à faciliter les développements, comme c’est le cas pour un framework.
Depuis quelques mois, un petit groupe de personnes travaille sur la conception d’un CMF (Content Management Framework) basé sur Symfony2, dont le concept est diamétralement opposé à celui des CMS actuels : le framework est le point clé, alors que le CMS ne serait que secondaire.
Sf2CMF doit permettre de créer facilement un CMS possédant une base solide, maintenue à différents niveaux. La création d’un ODM PHPCR (Object Document Mapper – PHP Content Repository) permet de stocker et d’accéder de façon uniforme aux contenus, et fonctionne de la même façon que l’ODM MongoDB tout en ajoutant la gestion des Versions, et des ACLs.
Les slides sont disponibles sur GitHub.
Benjamin : Le projet est prometteur, les discussions sont nombreuses pour pouvoir fournir un CMF qui réponds aux différentes attentes. A suivre sur [Symfony-CMF->http://cmf.symfony.com].
RESTful avec Symfony & Symfony2
Présentée par les CleverPeople (nos chers et tendres collègues), Xavier Lacot et Damien Alexandre, cette conférence était l’occasion de faire le point sur l’implémentation de webservices REST sur symfony 1 et Symfony2.
Au tout début de la présentation, un petit rappel sur REST et ses concepts a permis de rentrer en douceur dans la conférence.
La première partie de cette conférence expliquait ensuite comment utiliser symfony 1 et Symfony2 pour faire des webservices REST performants avec, en fin de chapitre, un benchmark des exemples utilisés dans la présentation (avec le code sur GitHub :) ).
En deuxième partie, un tour complet a été fait sur les plugins existants pour symfony (notamment sfDoctrineRestGeneratorPlugin développé par Xavier Lacot), et le bundle Symfony2 (EverzetRestfulControllersBundle).
Pour tous les résultats, et pour plus d’informations sur les poneys (parce qu’à Clever Age on aime les poneys ;) ) et sur la conférence de nos confrères : [symfpony-project.org->http://www.symfpony-project.org], n’oubliez surtout pas de cliquer sur le lien « Damien Alexandre » tout en bas de la page pour une expérience Web 2.0 des plus folles ;)
Gwen : Trés bonne conférence avec des exemples vraiment utiles, mais la salle était vraiment trop petite par rapport au nombre de personnes voulant assister cette conférence. Rester debout pendant 45 minutes à essayer d’entendre les conférenciers (pas de micro) était presque insoutenable !
Benjamin : Du symfony, du Symfony2 et du poney… que demander de plus ?
Les slides sont disponibles sur Slideshare
Git
Présentation de Git par un employé de GitHub, Scott Chacon. Au programme, un bref historique, la présentation du SCM, et les différents modes de contributions à GIT, et notamment le workflow de contribution présent sur GitHub.
Parmi ses conseils :
– $ git diff –check
: permet de mettre en évidence les espaces en fin de ligne ;
– $ git add –patch
: permet de ne faire de stage/commit que sur certaines lignes du fichier, et non sa totalité ;
– Faire des branches pour chaque fonctionnalité, ne pas tout faire dans la branche master ;
Gwen : très très bon conférencier et conférence. Un « must have seen », jetez vous sur les slides dès que celles-ci sont en ligne ! ! !
Benjamin : Un conférencier plein d’entrain, qui donne envie de tester Git, et quand vous l’aurez testé, vous l’adopterez !
SF2 Best Practices
Noël Guilbert de SensioLabs a présenté pas moins de 30 bonnes pratiques pour Symfony2, dont voici quelques exemples :
– Organiser ses bundles en briques logicielles ;
– Utiliser son propre namespace ;
– Supprimer les bibliothèques inutilisées (Doctrine/Twig/SwiftMailer/Assetic) ;
– Utiliser les variables d’environnement ;
– Utiliser des contrôleurs en tant que services, qui permettent de controller les dépendances via l’injecteurs de dépendances, et de tester unitairement le contrôleur ;
Si vous utilisez ou allez utiliser Symfony2, les slides sont à lire !
Gwen : Toujours un peu la même remarque, si on a déjà « joué avec Symfony2 », la plupart des best practices sont évidentes, mais quelques unes nous échappent toujours (et sont les bienvenues), de plus un bon petit rappel ne fait jamais de mal.
Benjamin : Il est toujours bon de voir ou de revoir les bonnes pratiques, et surtout de les appliquer !
Form
Les formulaires sont le moyen de communication entre l’homme et la machine, et ces derniers ont été réécrits pour Symfony2 :
– On y trouve toujours un grand nombre de widgets, dont certains complètement nouveaux. C’est le cas du widget ‘repeated’ qui permet d’automatiquement doubler un champ (mail ou password) et de les valider automatiquement (en vérifiant leur valeur par exemple) ;
– Les filtres permettent de modifier les valeurs de façon uni-directionnelle, par exemple FixUrlProtocolFilter
change une valeur ‘www.clever-age.com’ en ‘http://www.clever-age.com’ ;
– Les Value Transformers
font leur apparition et permettent de modifier les valeurs de façon bi-directionnelle (DateTimeToArrayTransformer
par exemple).
Les slides sont disponibles sur Slideshare.
Gwen : Bonne présentation pour permettre aux nouveaux venus dans le monde de Symfony2 de pouvoir comprendre et utiliser le composant « form ». Mais pas de réels exemples techniques, ni d’astuces, juste une présentation de l’existant.
Benjamin : Un petit aperçu sympathique, et même si on nous a promis que les « embedded forms » étaient maintenant beaucoup plus simple, j’attends de jouer avec pour en être sûr !
Symfony2
Fabien Potencier présente rapidement Symfony2, les nouveaux composants, la nouvelle structure des dossiers, et comment faire un hello world.
Gwen : Conférence qui n’a pas servi à grand chose, à part bien rire, pas de slides, un petit tour d’horizon de Symfony2 trés basique, on voit bien que Fabien potencier n’avait pas vraiment préparé cette présentation.
Benjamin : Combien de développeur Web faut-il pour faire un hello world en 25 minutes en Symfony2 ? Apparemment, 500. \o/
Deuxième Journée
Symfony2 – from the trenches
Lukas Kahwe Smith et Jordi Boggiano ont parlé de l’utilisation de Symfony2 sur des projets réels (ils ont depuis de nombreux mois des projets en production sur Symfony2). De nombreuses personnes contribuant au core du framework ont aidé pour la réalisation des slides (Kris Wallsmith, Thibault Duplessis, Jeremy Mikola, Jonathan H. Wage, Bulat Shakirzyanov).
Tous les points importants de Symfony2 ont été abordés (Setup, configuration, Controller, Doctrine ORM, cache, performance, astuces , etc…).
Les slides sont disponibles sur Slideshare.
Gwen : Conférence que j’attendais avec impatience et qui m’a finalement le plus déçu, beaucoup d’astuces, de structuration des développements, mais beaucoup trop rapidement passés en revue, et surtout sans exemple.
Assetic
Assetic est la librairie incluse dans Symfony2 qui permet de gérer les assets de son projet. La librairie s’occupe de combiner, et de minifier les fichiers CSS/JS. Cette librairie gère de nombreux outils, comme LESS, Saas, Google Closure, YUI Css/JS Compressor, …
Les slides de Kris Wallsmith sont disponibles sur Slideshare.
Gwen : Je ne connaissais pas Assetic, et cette conférence m’a mis l’eau à la bouche. Nous avons ici avec Assetic une vraie gestion des assets dans Symfony, on peut presque tout faire ! A voir en pratique si cela n’est pas trop verbeux.
Benjamin : Des techniques essentielles à mettre en place pour tout bon site Web sont dorénavant facilitées par Assetic, un composant inclus dans le core de Symfony2 : super !
HTTP Cache
Fabien Potencier explique que les spécifications HTTP possèdent de nombreuses conventions concernant le cache.
En symfony 1, le cache était géré par le framework, il fallait donc initialiser tout le framework pour aller chercher un fichier en cache. Symfony2 utilise quant à lui le cache HTTP, qui, couplé à un reverse proxy cache (Varnish, Squid, …), délivre la page demandée. L’application et le framework ne sont alors tout simplement pas appelés et/ou utilisés.
Benjamin : Nous travaillons avec le protocole HTTP tous les jours, et avec cette présentation, on se rend compte que l’on ne le connait pas si bien que ça. Les benchmarks montrent bien que le cache HTTP est une excellente solution pour les performances d’une application Web.
Varnish Cache and you
Cette conférence animé par Kristian Lyngstøl nous apprend toutes les fonctionnalités du proxy cache Varnish en version 3.0. La configuration de Varnish est entièrement programmable et de nombreuses fonctionnalités sont présentes, comme la gestion des tags ESI énormément mise en avant avec son implémentation dans Symfony2.
Gwen : Présentation de beaucoup de fonctionnalités (trop même), ce qui fait qu’à la fin de la conférence j’avais l’impression que Varnish pouvait aussi faire le café :). Manque cruel d’exemples appliqués et de cas d’études.
Doctrine : A real work example
Jonathan Wage présente l’utilisation de Doctrine2 chez OpenSky, où sont utilisés conjointement l’ORM et MySQL pour stocker toutes les informations des commandes, alors que l’ODM et MongoDB sert à stocker toutes les informations des vendeurs, des produits, etc…
Gwen : La présentation à été vite expédiée, dommage le sujet était vraiment intéressant (Comment gérer ODM et ORM) mais le fond était malheureusement trop inconsistant.
Benjamin : Les réglages du projecteur ne nous permettant pas de voir le code source présent sur les slides, la conférence a été très courte, et finalement peu intéressante.
Being dangerous with Twig
Ryan Weaver nous présente Twig : le moteur de template créé par Fabien Potencier. Il fait le tour des fonctionnalités de Twig.
Gwen : Ayant déjà utilisé Twig, je m’attendais vraiment à une conférence sur l’utilisation avancée de Twig (ce que le titre m’a fait croire). Que nenni, belle présentation mais une fois de plus rien de plus que la documentation officielle.
Behavior Driven Development for Symfony2
Konstantin (@everzet) a expliqué très simplement en quoi consistait la méthodologie BDD (Behavor Driven Development) dérivation de la méthodologie TDD (Test Driven Development). Il a ensuite parlé de l’intégration de Behat avec Symfony2 grâce au bundle BehatBundle.
Gwen : Je ne connaissais pas cette méthodologie, je reste assez sceptique quand à sa mise en place dans une grosse équipe. Le problème reste l’attribution de l’écriture des différents scénarii, MOA/MOE ou développeur. A voir en tout cas.
IsCool
Weka Entertainment, société éditrice de jeux, notamment de jeux Facebook, présente la mutation de leur jeu phare IsCool d’un code PHP non-MVC à Symfony2, qui a permis des gains de performance de l’ordre de 40 %.
Pour une application avec 100 à 500 millions de pages vues par jour, il était impensable de couper l’application. La migration s’est donc faite de façon transparente, et elle a commencé par les pages les moins visitées. En trois mois, la totalité du jeu n’est pas encore passée sur Sf2, mais ils ont développés de nombreux bundles (Bundle d’interaction avec Redis, Memcache, Pinba, …).
Benjamin : Il était très intéressant d’avoir d’ores et déjà un retour d’expérience sur une migration raw-PHP vers Symfony2. On espère que l’équipe de développement de Weka Entertainment pourra rendre open-source certains des bundles qu’ils ont codés (Pinba, Redis, …)
There is one more thing
Fabien Potencier remonte sur scène pour la dernière conférence de ce salon, pour annoncer les dernières nouveautés du monde Symfony. On nous annonce que Symfony2 est bientôt né grâce à la collaboration de 150 contributeurs, et que Symfony bénéficie d’un nouveau site Web (http://www.symfony.com]), d’une nouvelle identité visuelle, et de nouvelles distributions « prête à l’emploi » (HelloWorld Edition, Standart Edition, CMS Edition, …)
[La vidéo de la présentation.
Gwen: On a eu le droit à un show à la « Steve Jobs » avec vidéo / musique et des annonces « surprises », manquait plus que des petits fours et du champagne !!! On a quand même eu le droit à un tee-shirt symfony avec le nouveau logo \o/
Unconference
Cette édition 2011 du Symfony Live était également l’occasion de tester un nouveau genre de conférences, les unconferences. Ce sont des mini-conférences de 10 minutes où n’importe qui peut présenter sa méthode de travail, son bundle, son projet, etc…
En voici quelques unes :
– Thomas Rabaix a présenté son AdminBundle (anciennement BaseApplicationBundle). Basé sur le module Admin de Django, le bundle ne génère pas de code. Il gère les relations one-to-many, many-to-one, et permet de modifier facilement le formulaire à l’aide d’un fichier de configuration;
– Nils Adermann a tenté de nous présenter en 10 minutes comment est pensé le système de Package Manager pour phpBB4, basé sur Libzypp de SUSE, et il qui permet d’ajouter/supprimer facilement des paquets, en incorporant un solveur de dépendances puissants;
– Lukas Smith a expliqué comment déployer une application Symfony2 avec un package Debian, sans avoir de problèmes avec les différentes dépendances requises. Le code est dispo sur github.
Conclusion
Gwen : Cette édition 2011 avait pour thème principal Symfony2, celui-ci n’étant pas sorti en version stable et non finalisé encore à la rédaction de cet article, les conférences ne pouvaient pas être trop techniques. Nous avons eu beaucoup de conférences de qualité variables (en général c’était quand même trés trés bien :) ) mais qui relevait généralement de la documentation. Je n’ai donc pas appris grand chose sur les 2 jours, mais j’ai pu assister à beaucoup de rappels importants.
Un des grands point noirs de cette édition est, je trouve, l’organisation qui n’a pas été à la hauteur. Les présentations avaient lieu dans deux salles – une très belle, grande salle toute équipée (micro, caméra, etc ..) et une toute petite salle (une salle de classe en somme). Cela donne une impression de conférences un peu mises sur le côté (ce qui dans l’esprit n’était pas cela du tout), et du coup beaucoup de personnes n’ont pu assister aux conférence dans cette salle, faute de places. Un peu dommage je trouve. Mais l’ambiance était vraiment là, les gens très sympathiques, les conférenciers abordables et désireux de parler avec la communauté. Bref une édition un peu mitigée mais qui je pense apprendra de ses erreurs. Vivement Symfony Live 2012. J’y serai :)
Benjamin : 2 jours en compagnie de plusieurs centaines de geeks, des conférences plutôt sympathiques dans l’ensemble, une organisation un peu moins bonne que les années précédentes hélas… Un grand merci à Scott Chacon et Github pour les (trop) nombreuses bières payées le vendredi soir !
Un grand merci également aux conférenciers des présentations auxquelles nous n’avons pu assister – il faut faire des choix dans la vie, et malheureusement aucun des Clever-Agiens endurcis que nous sommes n’était présent ! Voici les slides de ces présentations :
– slides de la présentation «Speedy App» ;
– [slides de la présentation «Apostrophe, A Symfony-powered CMS your clients will love»->http://www.slideshare.net/tompunk/apostrophe-improved-paris-edition] ;
– slides de la présentation « Embed sf1 in SF2 » ;
– slides de la présentation au sujet de la refonte de phpBB4 ;
– slides de la présentation « Adopt Devops philosophy on your Symfony projects » ;
– slides de la présentation « Application Gruyere : Security at Hand » ;
– slides de la présentation « Quid de mes applications symfony1 » ;
– slides de la présentation « Integrating the Solr search engine » ;
– slides de la présentation « Symfony2 en pièces détachées ! ».