La critique est aisée, mais l’art est difficile

A force de vous le répéter, je pense que vous savez tous maintenant que je m’ocupe de l’AFUP Lyon.

Nous sommes 3, Adrien Gallou, Sarah Haïm-Lubczanski et moi-même, à prendre chaque jour sur notre temps personnel pour vous proposer des événements de tout type : apéroPHP, ateliers, conférences.
Et, pour certains événements, nous faisons appel à d’autres bénévoles, qui sont moins impliqués, mais qui répondent présents lorsque nous avons besoin d’eux.

Tout ce travail est purement bénévole.

Tout ça pour vous dire que le but commun qui nous anime tous, c’est de proposer des événements techniques autour de PHP à Lyon, et permettre une émulation de notre petit monde dans notre ville, rien de plus.
Les seuls moments où nous parlons d’argent, c’est pour payer les frais engagés, rien de plus.

Alors, quand je vois un commentaire laconique, nous accusant d’avoir fait volontairement un plagiat, ça me touche beaucoup.
Je ne sais pas si c’est de la sur-sensibilité, mais j’ai lu « ah bah bravo les gars, vous faites pas chier, prenez le travail des autres sans trop vous embêter, c’est super intelligent les gars ».

Est-ce que cette personne a envisagée que nous ayons pu choisir ce logo sans savoir qu’une équipe de NFL l’avais choisi ? Est-ce que cette personne a pu envisager que nous n’avions pas de mauvaises pensées ?
Est-ce si dur de ne pas commencer en agressant les gens, mais en les avertissants ?

Et cette personne, qui nous met le nez dans nos déjections, est-ce qu’elle a fait une proposition pour corriger ?

Comme le disais Philippe Néricault Destouches :

La critique est aisée, mais l’art est difficile

Partage de configuration git

Depuis que je travaille avec Git, j’ai un problème : « comment partager mes configurations entre mon poste de travail professionnel et mon poste de travail personnel ? »

Jusqu’à ce jour, j’avais trouvé une solution pour beaucoup de mes outils, mais j’avais toujours un soucis avec Git parce que le fichier de configuration contient des éléments qui ne sont pas partageables (l’email du commiteur, par exemple)

J’ai découvert récemment qu’il était possible d’inclure une fichier dans le fichier .gitconfig, et la solution est donc apparue.
J’ai finalement placé les éléments partageables dans une fichier spécifique que je versionne, et dans mon fichier ~/.gitconfig, il me suffit de placer le code suivant :

# Use personnal shared configuration file
[include]
path = ~/path/to/Save/Git/.gitconfig

Au revoir TEA

Je sais que je fais un peu de reprise puisque j’ai déjà utilisé un titre de ce genre il y a un peu plus d’un an.

Mais oui, je suis dans le même cas de figure qu’il y a un an, puisque j’ai déposé ma démission et que je ne suis un employé de T.E.A que jusqu’au 14 juin prochain.

Il y a milles autres à ce départ, mais je n’en parlerais pas sur ce blog.

Et si vous vous demandez ce que je vais faire maintenant, la réponse est que je rejoins CleverAge Lyon, pour aller travailler en délégation chez M6Web.
Je deviens donc à la fois consultant CleverAge, et Lead Developer dans l’équipe replay de M6Web.

Je n’ai pas perdu une année, j’ai fait quelques trucs cool, j’ai beaucoup appris sur ce que je voulais et sur ce que je ne voulais pas, j’ai une idée beaucoup plus claire de la manière dont je veux travailler, et ça, c’est très important pour moi.

[EDIT]
Il s’avère que cet article a été lu de manière beaucoup plus large que ce que je m’attendais. En conséquence, je préfère le recentrer sur l’essentiel.

Retour sur le symfonyLive 2013 – partie 3 – seconde journée

Pourquoi Symfony est-il encore open-source ?

François Zaninotto a lancé très très fort cette nouvelle journée en nous parlant d’open-source, mais pas de la manière dont nous avons l’habitude de l’entendre.
En utilisant de nombreuses référence sociologique, anthropologiques et politique, il nous as donné son point de vue sur ce qu’est l’open-source, à savoir que l’Homme ne fait jamais rien gratuitement, et qu’il désire toujours un retour à toute action, y compris un don. Ce retour pouvant être matérialisé par de la reconnaissance, par un service en retour, par une discussion.
A partir de ce postulat, il démontre que les entreprises qui partagent ou qui contribuent à des projets open-source ne le font pas pour la beauté du geste, mais parce qu’elles aussi voient ce qu’elles peuvent en retirer.

Au delà de la justification un peu grosse de la monétisation que Sensio essaye de faire autour de Symfony, j’avoue que cette conférence a déclenché en mois de nombreuses questions sur lesquelles il va falloir que je me penche dans les semaines à venir, et dont j’espère pouvoir vous faire un retour

Les bundles que vous allez regretter de ne pas avoir connu plus tôt

Damien Alexadre, de Jolicode a continué en nous listant une série de bundle Symfony2 assez pratique (ou à éviter à tout prix).
Mais plutôt que de faire un grand discours, je pense que les slides parlent d’elles-même.

Development worflow

Matthieu Moquet, de Blablacar nous a expliqué le workflow de développement utilisé par Blablacar, et surtout la manière qu’ils ont utilisés pour intégrer tous les intervenants du projet (équipe QA, traducteurs) dans leurs procédure de déploiement.
Au global, le processus semble bien rodé, mais le workflow Git semble un peu trop cérémonial pour que je sois totalement convaincu.

Toutefois, petite information intéressante puisque j’ai appris qu’ils ont utiliser Crew, de l’excellent @dondouny, pour gérer leur revues de code.

Twig et composant de formulaire

J’ai suivi par la suite 2 conférences, une sur Twig donnée par Grégoire Pineau, et une sur le composant de formulaire de Symfony2 par Hugo Hamon.
Bien que le contenu de ces présentation était clair et efficace, je n’y ai rien appris puisque j’utilise déjà ces 2 outils.

42 bonnes pratiques pour Symfony2

La dernière conférence de la journée était présentée par Tugdual Saunier qui nous a transmis une liste de 42 bonnes pratiques pour bien développer avec Symfony2.
Pour ma part, j’en retiendrais surtout 3 :

  • Ne jamais prendre une recommandation au pied de la lettre, toujours la contextualiser
  • Symfony2 est un framework PHP Objet, donc chercher comment développer en PHP Objet, pas en Symfony2
  • La documentation est importante, lisez là. Et si vous l’avez déjà lu, relisez là.

Keynote de clôture

Lors de la keynote de clôture, Fabien Potencier et Grégory Pascal, nous ont annoncés les prochains évènements à venir, à savoir les prochains Symfony Live (Berlin, Londres, …), mais surtout la création d’un nouveau cycle de conférence, la SymfonyCon, qui sera LE grand évènement international de la communauté Symfony, et qui aura lieu une fois par an dans une ville d’Europe, les Symfony Live devenant eux des évènements locaux.
La première SymfonyCon aura lieu en décembre 2013 à Varsovie.

Retour sur le symfonyLive 2013 – partie 2 – première journée

Keynote d’ouverture

Pour bien commencer cette conférence, Fabien Potencier a pris la parole pour nous parler de qualité. Il est vrai que, vu de ma fenêtre, Symfony a beaucoup participé à la démocratisation de bonnes pratiques de développement, et donc à l’augmentation générale des projets PHP.

Après nous avoir rappelé l’importance de la qualité, il a fait un petit tour des outils de tests et des plateformes d’intégration continues qui existent actuellement sur le marché pour les projets PHP.

Tout ça pour, au final, nous présenter le service SensioLabs Insight, qui est une plateforme d’intégration continue développée par SensioLabs, et qui est destinée à pousser la validation des projets un peu plus loin, et particulièrement sur un axe qui manque aux outils existant, selon lui : les actions à mener lors de la détection d’un manque de qualité.

Ce service me semble, sur le papier, très intéressant car il analyse les projets selon plusieurs axes :

  • Analyse statique : comme des outils comme PHPMessDetector, il analyse les fichiers à plat et remontes les manques
  • Analyse contextuelle : Il est possible de conceptualiser le projet (Symfony, Magento, Drupal, EzPublish, Silex, …) et donc de pousser l’analyse statique sur des bones pratiques de l’outils
  • Analyse tendancielle : Plutôt que de fixer des seuils d’alerte globaux, et hurler à la moindre petite entorse, ce service va partir sur des indicateurs fixe, mais en les rapportant au projet global, et donc en s’autorisant un delta si c’est la seule anomalie du projet, mais également pour indiquer que, sans dépasser les seuils, les indicateurs de qualité sont à la baisse, et donc prévenir avant qu’il ne soit trop tard
  • Analyse dynamique : le service, lorsqu’il déroule les tests du projet, boote une VM dédiée pour le projet, qu’il est possible de personnaliser via un fichier de configuration. Cela permet de dérouler les tests dans un contexte proche de celui de production

Une fois toutes ses analyses faites, un rapport détaillé contenant pleins d’informations utiles est généré :

  • La liste des anomalies, par niveau de criticité
  • Pour chaque anomalie, une explication complète et détaillée sur ce qu’elle représente, les conséquences possibles et les bonnes pratiques qui permettent de la résoudre est accessible facilement
  • Pour chaque anomalie, une estimation du temps de correction nécessaire est donné
  • A partir de ses temps de correction, une estimation de la dette technique du projet est avancée, permettant aux décideurs d’un projet de se baser sur des données quantifiées, et non plus seulement sur un ressenti de l’équipe de développement.
  • Un « grade » est attribué au projet en fonction du nombre d’anomalies détectées et de leur criticité

Au final, c’est un service qui me tente, je me suis d’ailleurs déjà inscrit sur la beta pour le tester et faire des retours.

J’attends maintenant les gammes d’offres qui vont être associées une fois le service stabilisé

Apporter du TDD sur un projet existant

Cette conférence, donnée par Benjamin Grandfond était une explication de ce qu’est le TDD et comment l’introduire dans un projet existant.
Il est toujours intéressant de voir des conférences qui évangélisent le test, et les bonnes pratiques associées, mais étant déjà sensible à ces pratiques, j’avoue que cela ne m’a pas particulièrement apporté

Dependancy Injection Container

Lorsque j’ai vu que Thomas Rabaix donnais cette conférence, je me suis dit que c’était un « must see ». Mais, comme j’ai profité de la pause pour faire un peu de networking, je suis arrivé en retard et je me suis retrouvé sur le côté, assis par terre, et j’ai donc totalement décroché de la conférence puisque je ne voyais pas les slides.
C’est dommage, mais je pense analyser ses slides en détails prochainement

Git Flow : un processus de développement Agile

Nous avons ensuite eu une présentation du workflow Git utilisé par Xavier Hausherr chez Overblog.
Ce type de conférence est toujours particulièrement intéressante pour voir comment les gens utilisent Git pour leurs besoins, de voir les ecueils qu’ils ont affrontés, et confronter leurs vision à la sienne.

Toutefois, comme leur approche de livraison est par release, il y avait une différence d’approche fondamentale qui fait que je ne peux pas en tirer grand chose à cours terme

Slides de la présentation

Symfony et eZ Publish : embarquement immédiat

Nicolas Pastorino, lors de la conférence suivante, nous a présenté la nouvelle architecture de ezPublish 5, qui est complètement baséee sur Symfony2, au points que ezPublish n’est « que » un bundle Symfony2, et qu’il est donc totalement possible, non seulement de le surcharger et l’étendre, mais également de développer d’autres modules complèmentaires dans le même projet.
Le plus impressionnant de cette présentation était l’explication du module « Legacy » permettant de faire fonctionner un projet ezPublish 5 tout en conservant les templates et la base de données d’un projet ezPublish 4. C’est un gros challenge qu’ils se sont lancés et qu’ils ont réussi.
Je voudrais chipoter, je demanderais quel est le cout en performance, mais ça serait mesquin puisque ce module sert avant tout à migrer en douceur d’un projet ezPublish 4 vers ezPublish 5

Lien vers les slides

Lightning talks

La journée se terminait par les lightning talks, mais je n’ai pas été très attentif, et je ne m’aventurerais donc pas à vous faire un compte-rendu.

After

Une fois les présentations terminées, j’ai fait un petit tour à mon hotel pour commencer à migrer mon support de reveal.js vers Keynote car je me suis rendu compte dans la journée que j’avais soit le plein écran, soit mes notes, mais pas les 2, et que comme je ne met pas toutes les informations que je donne dans les slides, je ne peux pas m’en passer.
A 19h30, j’ai rejoint une petite centaine de personne dans un bar à quelques pâtés de maison, dans une bonne ambiance, discussions sympa et beaucoup de mojitos >_< »

Il ne me restait plus qu’à rentrer à l’hôtel pour finir de porter mes slides et cette première journée se terminait.

Retour sur le symfonyLive 2013 – partie 1

A l’heure où je vous écrit, je suis dans le train qui me ramène de Paris et du Symfony Live 2013 où j’ai donné une présentation intitulée « Silex, retours sur un an d’utilisation« .

Concernant cette présentation, que j’ai donné le second jour, en milieu d’après-midi, c’était un format nouveau pour moi puisque je me suis risqué à faire un retour d’expérience où j’explique en substance comment je me suis magistralement planté sur un projet.
Avant de venir, je me demandais sincèrement si le sujet intéresserais du monde, sachant qu’il n’était pas technique, et que je n’explique pas comment utiliser Silex, mais je partage plutôt les clés qui me permettent aujourd’hui de savoir s’il faut que j’utilise ou non Silex lorsque je démarre un nouveau projet.
Il faut bien que je me l’avoue, j’ai été extrèmement surpris de constater que j’avais de très bons retours :

Voici les slides (et les notes) de ma présentation

Si vous avez assisté à ma présentation, n’oubliez pas de faire un petit tour sur le joind.in pour que je puisse l’améliorer.

Concernant le reste la conférence, j’ai râté les versions 2011 et 2012, et j’ai été supris du changement du contenu des formations puisque c’était beaucoup moins technique que dans mes souvenirs.
Après cette petite absence de la communauté Symfony, j’étais content de revenir, et c’est avec plaisir que j’ai croisé pleins de connaissance, mais comme toujours, ces événements sont toujours propices pour faire connaissance de personnes très intéressantes ;)

Toutefois, et contrairement à mes précédentes habitudes, je vais essayer de jouer le jeu du retour des conférences auxquelles j’ai assisté.
Je vous donne rendez-vous dans les jours à venir pour les articles associés.

Autres articles de la série

Déployer une version spécifique via Capistrano

Je viens de découvrir l’option « –set-before » (et son raccourci « -S ») de Capistrano qui permet de redéfinir une variable de configuration à la volée pour l’exécution courante.

Cela m’a beaucoup servi ce matin lorsque, pour des besoins de debug, j’ai voulu déployer un commit antérieur d’un de mes projets, je n’ai eu qu’à lancer la commande

cap -S revision=80655da8d80aaaf92ce5357e7828dc09adb00993 deploy

Mais, si vous avez suivi, il est possible de changer ponctuellement toutes les variable : chemin de déploiement, branche, nombre de release à conserver

Have fun

Symfony Live 2013 – Retour sur un an d’utilisation de Silex

J’ai le grand honneur d’avoir été sélectionné parmi la vingtaine de speakers pour le Symfony Live Paris 2013.

Le vendredi 5 avril prochain, je donnerais donc une conférence intitulée « Silex, retour sur un an d’utilisation ».

Au cours de cette conférence, je vous expliquerais pourquoi, il y a un an, j’ai fait le choix de Silex, dans quelles conditions, puis nous remontrons l’année pour voir les moments où ça a été un choix judicieux, puis ceux où ça a été un frein, pour finalement vous transmettre les gardes-fous qui me servent à faire mon choix entre Silex et Symfony2 au moment du démarrage d’un projet.

Si vous serez également à cet événement, je serais présent les 2 jours, et j’espère avoir l’occasion de rencontrer certains d’entre vous.

AperoPHP, l’odyssée d’une refonte

Lors du PHP Tour Nantais, Mickael Perraud m’a fait la bonne surprise de mettre en production le nouveau site des apéros PHP.

Comme il s’agit d’une étape importante de ce travail qui aura débuté 10 mois plus tôt, je me suis dit que c’était l’occasion de faire un petit résumé de ce projet.

La génèse

Tout à commencé il y a bientôt 1 an, au début de l’antenne lyonnaise de l’AFUP, avec Geoffrey Bachelet et Sarah Haïm-Lubczanski, nous nous sommes dit que l’organisation d’une coding party était un bon moyen pour lancer l’association.
Nous avons cherchés un projet proche de l’AFUP, vieillissant sur lequel il était possible d’avoir la main, et le site des apéro PHP s’est rapidement mise en évidence.

Donc, le 21 janvier 2012, une petite équipe composée de Geoffrey Bachelet, Gautier Di Folco, Julien Fusco, Sarah Haïm-Lubczanski et moi-même nous sommes retrouvés pour commencer ce chantier.
La faute à un manque d’expérience, la préparation était insuffisante et, à la fin de la journée, le chantier n’était pas très avancé.
Fort heureusement, dans les mois qui ont suivi, Gautier et moi-même avons continués à travailler pour atteindre le MVP.

Le passage de relais

C’est à ce moment là que j’ai proposé le projet à l’AFUP, et il a été décidé de créer un compte Github AFUP pour héberger le projet, plutôt que de le laisser sur mon compte.
Cela apportait plusieurs avantages : le projet gagnait en visibilité, il était fortement marqué « open-source » en permettant à tout le monde de participer à son développement, et il devenait officiellement lié à l’AFUP.

A partir de ce moment, plusieurs personnes qui n’étaient pas présentes à la coding party initiale ont pris part au projet : Olivier Dolbeau a fait une grosse phase d’installation d’atoum et de rédaction des tests unitaires associés, puis Mickael Perraud a habillé proprement le site, puis à ensuite pris à charge la correction des issues importantes qui trainaient, mais également la migration des données de l’ancien site vers le nouveau.

La mise en production

Après tout ce travail, le site restait tout de même dans son carton, et l’ancienne version continuait de vivre.
Une démonstration a été installée, puis donnée en pâture au bureau de l’AFUP pour avoir les derniers retours, et Mickael Perraud a profité du PHP Tour pour migrer vers la nouvelle version.

Et maintenant

Cette mise en production n’est pas une fin en soit. Ce projet est utilisé, puisqu’il y a en moyenne 2 apéros par mois.
De plus, il reste des bugs/évolutions/… qui permettraient d’améliorer le fonctionnement du site.
Tout ça pour dire que je vais continuer à travailler sur ce projet, en tant que lead dev. Je vais donc travailler sur les évolutions, mais également relire et intégrer les Pull Request que vous ne manquerez pas de faire ;)

En quelques mots, voici la roadmap que je me fixe :

  • Corriger les bugs déclarés
  • Refactorer le code de base en Controller/Service
  • Créer les scénarios Behat pour les test

Cette liste n’est pas exhaustive, et reflète les envies que j’ai sur ce projet, mais je suis ouvert à toute proposition qui pourra être faite.

Retour sur le PHPTour Nantes 2012

La semaine dernière, j’étais présent au PHPTour organisé par l’AFUP, qui avait lieu cette années à Nantes.

J’étais avant tout là bas pour présenter ma conférence : Composer, l’outil moderne de gestion de dépendances pour vos projets PHP, dont vous pouvez retrouver les slides.
C’était la seconde conférence que je faisais dans un évènement de ce type, après ma conférence sur le livre numérique, à Paris Web, mais cette fois-ci, je me suis senti beaucoup plus à l’aise. Non seulement j’avais beaucoup plus travaillé mon sujet, mais je le maitrisais déjà plus à l’origine, et j’étais beaucoup plus confiant.

Au final, et au vu des retours qui me sont faits sur mon intervention, je pense que je ne me suis pas trop mal débrouillé ;)

Je ne vais pas me rompre à l’exercice de faire un retour complet, c’est fastidieux, et d’autres le font mieux.
Toutefois, je vais quand même faire un retour sur ce qui m’a plu.

Tout d’abord, j’adresse à nouveau toutes mes félicitations à l’équipe nantaise de l’AFUP pour l’organisation de ce PHPTour qui était très très bien.

Je n’ai pas pu voir toutes les conférences, mais certaines telles que « Aspect Oriented Programming on PHP » m’ont beaucoup plus et m’ont donnés envie de pousser le sujet.

Je suis aussi très heureux des rencontres que j’ai faites, ou des personnes que j’ai retrouvé lors de cet évènement : Olivier Le Corre, Raphaël Kueny, Nicolas Chambrier, Bastien Jaillot, Martin Supiot, Thomas Moyse, et bien d’autres encore.

A titre personnel, je suis également content que cet évènement ait été le lieu pour le lancement officiel du nouveau site des apéros PHP, pour lequel j’ai beaucoup travaillé. Mais maintenant que le site est lancé, je vais me faire un devoir d’y apporter un développement constant, surtout que ce n’est pas le travail qui manque.

Autre élément important que je voulais souligner : la nourriture non utilisée a été donnée au restos du coeur. Ce n’est peut être pas grand chose aux yeux des organisateurs, mais dans cette période compliquée pour les plus démunis, ce geste m’a profondément touché, et je tiens à féliciter chaleureusement ceux qui ont eu cette superbe idée.

En conclusion, je voulais juste rappeler que l’AFUP Lyon prépare un dossier pour que le PHPTour 2013 se déroule à Lyon, et que j’ai désormais la pression pour faire aussi bien que cette édition.

PS :
En bonus, une photo de l’éléphant :