Petit déjeuner sur l’industrialisation de PHP le 13 octobre
Jeudi 13 octobre, venez découvrir à l'Eurosite Georges 5, à Paris, les bonnes pratiques pour industrialiser vos projets en PHP.
Hervé Leclerc, directeur technique d'Alter Way Solutions, présentera de 9h00 à 11H00 :
- Les enjeux de l'industrialisation.
- Industrialisez vos développements.
- Industrialisez vos déploiements.
- Comment Alter Way peut vous aider.
Le langage PHP est aujourd'hui reconnu et déployé à large échelle, y compris au sein des grands comptes des sphères publiques et privées. Pourtant, les pratiques de développement mises en place n'ont souvent pas atteint la maturité des technologies traditionnellement exploitées par les acteurs du marché (Java, etc.)
Pendant ce petit déjeuner, Alter Way vous présentera les bonnes pratiques d'industrialisation mises en œuvre par ses équipes aussi bien lors de missions de consulting qu'à l'occasion de développements d'applications pour ses clients.
Propositions de conférences pour ConFoo 2012
Comme chaque année, la conférence ConFoo aura lieu fin février à Montréal. Il y a cependant une nouveauté de taille : la possibilité pour le public de voter pour les propositions.
Cette année, j'ai proposé les conférences suivantes :
- Environnements de développement avec Vagrant
- Reprendre du code historique
- Organiser efficacement son dépôt de code
- Revues de code
- La qualité au-delà du code
- Reprise sur incident
Si vous voulez les voir à ConFoo 2012 ou simplement me donner un coup de main, vous pouvez voter en cliquant sur les liens ci-dessus.
Il vous faudra être connecté et donc vous créer un compte si vous n'en avez pas déjà un. Je vous rassure les gens de ConFoo sont très bien. Vous ne serez pas spammés suite à cette inscription.
Distributions PHP
Il y a quelques semaines Cal Evans émettait l’idée que Drupal devrait forker PHP. L’idée est surprenante et audacieuse mais pas forcément aussi idiote qu'elle en a l'air au premier abord.
Tout d’abord pour ceux qui n’ont pas assistés à la table ronde « 2010 l’année des forks : et l’avenir ? Quelles sont les meilleures pratiques pour pérenniser une communauté ?» au salon Solutions Linux , rappelons ce qu’est un fork.
Je vais reprendre la définition donnée par l’AFUL dans un article récent :
« En informatique une fourche (d'après le Jargon français), ou encore un embranchement (selon Wikipédia), est un programme développé à partir des sources d'un autre. Le mot anglais original pour ce concept est le mot "fork". Une fourche a souvent pour cause une divergence profonde dans la vie d'un projet informatique qui vise à créer un logiciel. Une telle divergence dans la vie d'un projet est un élément fort, une crise, générant généralement de fortes perturbations aussi bien pour les personnes qui gèrent le projet que pour les utilisateurs du logiciel géré par le projet. On pourrait comparer la création d'une fourche au niveau informatique à un divorce pour un couple d'humains. »
Forker, si vous me permettez ce néologisme répandu, revient donc à prendre le code source d'un projet et de continuer de construire dessus sans le concours des auteurs originaux. Cela n'est bien entendu possible que grâce aux libertés accordées par les licences libres. Le monde propriétaire n'est pas concerné par ces considérations.
On voit donc que forker un projet n’est pas anodin alors pourquoi vouloir faire cet effort ?
Pourquoi forker PHP ?
Cal Evans évoque 4 raisons pour un projet comme Drupal de forker PHP :
- Amélioration du processus de développement : Il est de notoriété publique que le développement de PHP est parfois chaotique et pourrait grandement être amélioré. La communauté Drupal a prouvé qu’elle sait gérer un développement d’envergure et PHP pourrait profiter de cet expérience ;
- Adaptation du langage aux besoins de Drupal : La communauté Drupal pourrait retirer de PHP tout ce qui ne sert pas au CMS et ainsi améliorer la maintenabilité de PHP ainsi que ses performances ;
- Améliorer l’intégration entre le langage et Drupal : La communauté pourrait ajouter du code spécifique à Drupal et notamment des extensions pour une meilleure intégration des besoins du CMS dans le langage lui-même ;
- Maîtriser leur avenir : Le monde de l’Open Source est en perpétuelle évolution. Ne dépendre que de soit peut-être un facteur de stabilité et de sérénité pour un projet.
Maintenir un fork de PHP est-il réaliste pour un projet ?
Développer un langage informatique est très différent de développer un programme.
Dans le cas de PHP, maintenir un fork nécessiterait d'avoir de solides compétences en développement C ainsi qu'une connaissance approfondie des mécanismes internes de PHP. Ce sont des compétences difficiles à trouver car longues à acquérir et en partie spécifiques à PHP. Cela ne décourage pourtant pas certains comme Robert Eisele qui a annoncé avoir forké PHP 5.3.6 pour y ajouter de nombreuses améliorations alors même que je rédigeais cet article.
Cependant, un fork ne consiste pas seulement à copier un code à un instant T et à l'adapter à ses besoins. Encore faut-il le faire vivre par la suite. Cela veut dire en maintenir la sécurité mais aussi et surtout y ajouter de nouvelles fonctionnalités.
Les trolls réguliers entre communautés montrent à quel point la compétition pour l'innovation est importante dans le domaine des langages de programmation. Pour forker avec succès PHP, il faut être en capacité de le faire évoluer de manière efficace et ce n'est pas donné à tout le monde.
Quand on regarde l'histoire des langages informatiques, il y a beaucoup d'inspiration au niveau des concepts mais rarement des forks au sens strict du terme. En préparant cet article, je n'ai en fait pas trouvé le moindre fork qui ait passé le stade de l'expérimentation anecdotique.
Il y a-t-il des alternatives aux forks ?
Les forks ne sont probablement pas la bonne réponse au problème soulevé mais au fond cela ne change pas la légitimité de la question soulevée : comment adapter le plus possible PHP aux besoins spécifiques de certains logiciels d'envergure ?
La plupart des projets de ce type proposent des suggestions pour optimiser les performances sous forme de paramétrage recommandé ou d'usage de cache en mémoire. C'est un bon début mais on est loin du compte.
Certains projets ont envisagé par le passé de remplacer les parties les plus gourmandes de leur logiciel par une extension PHP afin d'améliorer les performances. Ça a notamment été le cas de Smarty. Malheureusement, l'usage massif d'hébergements bas de gamme ne permettant pas la compilation de module tiers a tué ces initiatives. Cependant, l'idée reste intéressante et le contexte n'est plus le même. L'usage de PHP s'est professionnalisé et les plate-formes d'hébergement avec.
Des distributions de PHP
Le monde Linux a une approche particulière du développement et de la distribution des logiciels. Des développeurs développent le noyau du système, le Kernel, qui est la fondation de tout le reste mais qui en soit ne fait pas grand chose d'exploitable par le commun des mortels. D'autres développeurs prennent ensuite ce noyau, le complète de nombreux logiciels additionnels, effectuent des réglages pour optimiser tel ou tel aspects et diffusent le résultat sous forme de distributions Linux. Les plus célèbres sont probablement Red Hat, Debian ou encore Ubuntu qui est elle-même basée sur Debian.
Imaginons qu'au lieu de forker PHP un projet en propose une distribution optimisée pour ses besoins. Cela commencerait par la reprise de la dernière version de PHP éventuellement patchée pour en optimiser certains aspects, débarrassée des parties inutiles pour le projet, et compilée avec toutes les options adaptées.
Ce socle serait ensuite complété par des extensions spécifiques qui viendraient par exemple remplacer du code peu adapté à une exécution par PHP pour en optimiser les performances ou bien apporter de nouvelles possibilités fonctionnelles.
Une fois cette distribution élaborée elle serait diffusée et maintenue par le projet lui-même.
Cela ne résout pas tous les problèmes et nécessite toujours des compétences C et une connaissance approfondie des mécanismes internes de PHP mais le périmètre sur lequel porte ces efforts est bien plus réduit. Cela permet également de profiter de la vitalité de la communauté PHP et des nouvelles versions qui sortiront.
Enfin, réduire la base de code pour en optimiser les performances revient à réduire les possibilités offertes par le langage et donc compliquer la création d'extensions qui sont souvent la richesse des applications. La désactivation sera donc probablement une piste à privilégier.
Une approche réservée à quelques projets d'envergure
Soyons clair : cette approche n'est pas adaptée à l'immense majorité des projets PHP. Pour être en capacité de la mettre en œuvre il faut selon moi plusieurs critères.
Tout d'abord le projet doit concerner un public disposant des ressources humaines et matérielles pour déployer ces applications sur des systèmes permettant l'installation de logiciels tiers (serveurs dédiés, VPS, cloud, etc. ). Des projets comme Drupal, Magento ou encore WordPress rentrent dans cette catégorie mais en revanche un logiciel pourtant très utilisé comme phpBB me semble trop orienté amateurs, par opposition à professionnels, il n'y a pas de jugement de valeur dans mes propos.
Ensuite, il faut que le projet soit suffisamment gros et structuré pour pouvoir mettre en place une équipe spécialisée. Comme je l'ai dit précédemment, ce n'est pas une mince affaire. Il s'agit véritablement d'un projet dans le projet.
On le voit, la liste des prétendants est courte mais pour eux les gains pourraient être importants.
Solutions Linux 2011
J'aurai le plaisir de participer demain à la table ronde "2010 l’année des forks : et l’avenir ? Quelles sont les meilleures pratiques pour pérenniser une communauté ?" au salon Solutions Linux, au CNIT à La Défense.
Par ailleurs, avec mes collègues Damien Seguy et Julien Pauli nous serons présents sur le stand d'Alter Way de 12h à 14h pendant les 3 jours du salon pour discuter industrialisation et PHP alors n'hésitez pas à passer nous voir !
Revue de presse Industrialisation PHP de la semaine 51 (2010)
En cette veille de Noël, voici la revue de presse de la semaine.
Autoloader PHP Universel – Jouons avec les Patterns
J'aime beaucoup les design patterns et j'essaie dès que je le peux d'en promouvoir l'usage. L'un des freins que je rencontre souvent est la difficulté à les mettre en œuvre dans un cas d'utilisation concret lorsqu'on débute. Grâce à Gérald Croës, j'ai désormais un exemple d'autoloader combinant plusieurs design patterns.
How test automation with Selenium or Watir can fail
Les tests automatisés permettent d'encadrer la maintenance d'une application et d'identifier immédiatement toute régression. Malheureusement, il n'est pas toujours facile, au moins au début, d'écrire des tests pertinents. Deux erreurs courantes sont d'écrire des tests complexes qui reproduisent des comportements similaires à ceux de l'application et de mettre en place une navigation importante avant d'arriver à l'élément à tester.
Arrêter d'interdire des adresses de courrier légales
Tester la validité d'une adresse mail est une tâche aussi récurrente que difficile à effectuer correctement. Stéphane Bortzmeyer nous aide à y voir plus clair.
Setting up Hudson for PHP Projects in 15 minutes
Hudson est un outil d'intégration continue qui a deux gros atouts : il possède une importante liste de plugins qui permettent de l'intégrer facilement dans un système d'information et il est facile à mettre en œuvre, ce qui en fait une excellente alternative à phpUnderControl.
HTG Explains: Which Linux File System Should You Choose?
Lorsqu'on prépare un nouveau serveur Unix, rare sont ceux qui se soucient du système de fichiers utilisé. Pourtant ce choix peut apporter des gains de performances et de sécurité des données pour certains usages.
Bonnes fêtes à toutes et à tous !
Revue de presse Industrialisation PHP de la semaine 49 (2010)
Après quelques semaines d'absence pour cause de vacances puis de préparation du Forum PHP 2010 et enfin de grosse charge de travail ces dernières semaines, la revue de presse reprend son rythme habituel. Pour de bon, je l'espère !
Top-5 certifications for every PHP programmer
Joshua Thijssen s'est lancé un défi étonnant cette année : passer 12 certifications techniques. Il vient de terminer son dernier examen et partage avec nous son expérience en listant les 5 certifications qui, selon lui, sont les plus utiles pour un développeur PHP.
Real-life example of Closure usage with PHP5.3
Les closures, ou fonctions anonymes, sont une fonctionnalité récente de PHP. Le principe est intéressant mais par manque d'habitude on est parfois bien en peine pour leur trouver un usage concret. Gonzalo Ayuso nous propose de les utiliser pour effectuer des calculs dynamiques sur des données, travail souvent demandé au SQL.
PHP Code review checklist
Ceux qui ont vu ma conférence sur les revues de code au Forum PHP, m'ont entendu parler de l'importance des checklists dans la phase préparatoire. Voici une proposition de liste de ce type. Certains points sont discutables mais c'est une bonne base pour construire son propre référentiel.
PHP Commit Hooks
Stocker ses développements dans des dépôts Subversion est une bonne pratique mais elle ne doit pas s'arrêter là. Il convient également de s'assurer que la qualité des commits. Subversion propose un mécanisme de hooks qui permettent d'effectuer des traitement à différentes étapes de la vie du dépôt. L'outil PHP Commit Hooks propose de mettre facilement en place des hooks de pre et de post commit pour effectuer certaines actions comme s'assurer de la présence d'un message de commit, valider la syntaxe des fichiers ou vérifier l'application des conventions de codage.
Profiling with XHGui
Xdebug est un excellent outil pour profiler du code lors de la phase de développement mais il est trop gourmand en ressources pour être utilisé en production. Facebook a développé pour son propre usage XHProf, et son interface de visualisation XHGui, qui permet d'avoir une vision claire des performances d'une application en production. Ces outils sont à présent disponibles pour tous.
Mots-mêlés PHP
Durant le forum AFUP, vous avez été nombreux à tenter votre chance et vous prendre la tête sur les mots-mélés PHP. Pour rappel, la grille ci-dessous comporte un grand nombre de structures PHP : noms de classes, fonctions, constantes, opérateurs, ainsi que des contributeurs et des applications PHP connues.

Il y en a 71, tels qu'ils ont été créés, mais dans la pratique, on peut en trouver encore plus, en recherchant des mots courts (dl est présent sans être identifié dans les solutions) ou des sous parties (array_intersect_key contient en fait 3 noms de fonctions distincts). Et non, mon propre nom m'apparait pas dans cette grille (certains d'entre vous l'on cherché longtemps).
Vous pouvez imprimer l'image ci-dessus, et tester vos connaissances avec les réponses ci-dessous.
Un grand merci aux gagnants qui se sont partagés 2 bouteilles de champagne, ainsi que 2 t-shirts dédicacés par les gourous qui étaient sur le forum : Martin Supiot, Bochu Marie, Michael Marchal, Paul Ferret. Par ailleurs, si vous vous appelez Romain B. ou Loic LF, vous avez gagné 10% de réduction sur les formations Alter Way Formation.
Grand jeu PHP sur le forum AFUP
Je viens de mettre la touche finale à un petit jeu PHP qui sera disponible durant le forum AFUP de la semaine prochaine. Il va falloir affuter ses connaissances de notre plate-forme de développement préférée, et aller sur place pour se mesurer à toute la communauté.
Outre le défi, Alter Way proposera aux meilleurs (et aux plus mauvais) des prix collectors assez spéciaux : je n'en dit pas plus, cela vaut la peine de tenter votre chance.

Concours PHP au Forum AFUP 2010
RMLL 2010 : Vidéos des conférences en ligne
Les organisateurs des RMLL 2010, les Rencontres Mondiales du Logiciel Libre, ont mis en ligne les vidéos des conférences.
C'est l'occasion pour ceux qui n'ont pas pu être présents de voir la conférence de Damien sur les audits de code PHP ainsi que la mienne sur l'industrialisation de PHP sur le site des RMLL. Vous y trouverez également nos slides pour ces conférences.

