Conférence sur l’industrialisation PHP à la 3e édition de Be Zend
J'aurai le plaisir de présenter une conférence sur l'industrialisation de PHP lors de la 3e édition de la conférence Be Zend qui aura lieu le 25 mars à Saint Quentin, en Picardie.
A l'origine organisée autour de Zend Framework, cette conférence ouvre ses horizons à d'autres thématiques comme l'industrialisation de PHP ou encore les web services.
Organisée par l'INSSET, une annexe de l'Université Jules Verne d'Amiens, cette conférence permet de faire se rencontrer des entreprises et des prestataires locaux ainsi que les élèves de licence pro web développeur qui sont à l'origine de l'évènement.
Les inscriptions se font sur le site de la conférence.
Vers une convergence des frameworks PHP ?
Ces dernières semaines ont été propices aux annonces dans le monde des frameworks PHP. Tandis que Zend annonçait le début du travail sur la version 2 de son framework, Sensio Labs sortait une pré-version de Symfony 2.0. Ces deux frameworks devraient sortir pour la fin de l'année ou au début de l'année prochaine. Devant ces annonces importantes, on pourrait s'attendre à un choc des titans pour la domination du marché des frameworks PHP mais la réalité est plus complexe et plus intéressante.
Une vision commune
Dès le début ces deux frameworks ont été conçus par des entreprises pour des entreprises. Chacun a bien entendu su créer une communauté forte autour de son produit mais la vocation première est de consolider l'arrivée de PHP en entreprise.
Pour cela, ils ont mis en place différentes mesures qui rassurent les DSI :
- Licence Open Source permissive
- Support commercial
- Certification (Pour Zend Framework seulement pour le moment)
- Formation
- Documentation abondante
- Tests unitaires
C'était particulièrement important devant la myriade de frameworks dont il était bien difficile d'évaluer la pérennité. Ce point est crucial lorsqu'on investi dans des développements importants.
Des passerelles techniques
Depuis longtemps, le tutoriel de Symfony propose d'implémenter un système de recherche en utilisant le composant Zend_Search_Lucene qui fait partie de Zend Framework. Fabien Potencier, le meneur du projet Symfony, a également annoncé lors de la conférence Symfony Live 2010 que deux composants supplémentaires de Zend Framework seront bientôt utilisés dans Symfony. Il s'agit de Zend_Log et Zend_Cache qui, comme leurs noms le laisse supposer, permettent respectivement de gérer la journalisation des messages et le cache applicatif.
Il a également indiqué que le framework allait abandonner son outil maison de tests unitaires au profit de PHPUnit, projet fortement établi et utilisé pour tester Zend Framework.
De son côté, Zend n'est pas en reste. La société a récemment annoncé que Doctrine serait utilisé par la version 2 de son framework. Cet ORM est un projet indépendant mais qui est également utilisé par Symfony. Par ailleurs, son meneur actuel, Jonathan H. Wage, est employé par Sensio Labs.
Une volonté de souder la communauté
Au-delà des aspects techniques, il semble y avoir une réelle volonté de la part des deux meneurs de ces projets pour travailler ensemble au lieu de se livrer une guerre inutile.
La présence de Matthew Weier O'Phinney, le responsable de Zend Framework, à la conférence Symfony Live 2010 à Paris est un signe fort de cette communication entre les deux projets. Les propos de Fabien Potencier confirment cette volonté de souder la communauté PHP qui s'égare parfois dans des querelles de chapelles stériles.
I would love if people from different framework communities can work together more often, like what we have done with the PHP 5.3 interoperability group. I would love if we can share more components. I would love to discuss how we can make our PHP community grow faster.
Is it a dream? I hope it's not. And I have a proposal. Let's organize an event where several PHP framework communities can discuss and share ideas. Anyone?
Cette conscience de la nécessité de coordonner les efforts des différentes communautés semblent dans l'air du temps car des représentants des principaux projets PHP ont travaillé ces derniers mois à définir une charte pour l'architecture des composants de leurs projets respectifs afin de faciliter l'interopérabilité entre eux.
Conférence à Solutions Linux 2010
Le 16 mars prochain, j'aurai le plaisir de donner une conférence lors du salon Solutions Linux 2010 sur le thème "Maîtrise du dévelopement PHP".
J'y parlerai des stratégies à adopter, des outils à mettre en place ainsi que de l'organisation des équipes quand PHP est amené à être un socle technique pour des applications critiques.
HipHop : Une révolution pour PHP ?
La rumeur courait depuis que dimanche un employé avait laissé entendre dans une interview que Facebook travaillait sur un projet secret visant à améliorer radicalement les performances de PHP. L'annonce officielle a été faite hier par l'équipe qui travaille sur ce projet dont le nom est HipHop for PHP.
Ce projet fait suite à toute une série d'améliorations initiées ou supportées par Facebook pour améliorer les performances de PHP comme les patchs proposés pour l'extension APC.
Un fonctionnement novateur
Avant de voir comment fonctionne HipHop, faisons un rappel sur le fonctionnement de PHP. Il s'agit d'un langage de script et non un langage interprété comme Java ou compilé comme C ou C++. Cela signifie qu'à chaque exécution PHP doit analyser lexicalement puis syntaxicalement le script appelé, le transformer en OP Code, un format binaire, puis exécuter cet OP Code. La phase d'analyse du script et de création de l'OP Code peut être optimisée à l'aide d'un cache d'OP Code comme APC.
HipHop a choisi une approche radicalement différente qui consiste à transformer le script PHP en code source C++ qui sera ensuite compilé avec les outils standards de ce langage.
La transformation se fait en trois étapes :
- Analyse statique afin de déterminer qui déclare quoi et les dépendances afférentes ;
- Détermination du type C++ le plus adapté, si la variable change de type au cours de sa vie un type "variant" proche des zval du Zend Engine sera utilisé ;
- Transformation des structures PHP en code C++.
La substitution de HipHop au binaire PHP officiel vise à être transparente pour les développeurs mais bien entendu, tout cela n'est pas miraculeux et quelques contraintes existent.
Les limites
Tout d'abord, Windows n'est pas supporté et ne le sera probablement pas dans un avenir proche. Cela n'est pas un problème majeur car les serveurs de production des utilisateurs potentiels sont quasiment tous sous Unix mais cela pourrait compliquer son adoption car la majorité des postes de développement restent sous Windows.
Plus impactant, une fois compilé HipHop utilise son propre serveur web, ou son interface ligne de commande. Il est cependant possible de le coupler à Apache ou tout autre outil via un reverse proxy.
Par ailleurs, comme tout "émulation" d'un langage, HipHop ne peut être 100% compatible avec la dernière version de PHP. Il implémente aujourd'hui l'essentiel des fonctionnalités de PHP 5.2 ainsi que des extensions principales. Il faut noter que pour des raisons techniques évidentes certaines fonctions ne peuvent être supportées comme eval(), qui exécute dynamiquement du code PHP passé en argument.
L'absence d'eval() n'est pas très grave car il n'y a pratiquement aucune bonne raison d'utiliser cette fonction. En revanche, cela veut probablement dire que les assertions, qui évaluent du code à la volée pour vérifier le comportement de l'application, ne seront pas utilisables ce qui est dommage.
Quel public pour HipHop ?
Disons le clairement, en l'état actuel, HipHop n'est pas pour tout le monde. Le mode d'exécution classique de PHP a de beaux jours devant lui, notamment pour les hébergements mutualisés. La cible de HipHop est donc principalement les sites à fort et très fort trafic, à l'image de Facebook.
HipHop pourrait également être utile pour les scripts lancés en ligne de commande pour effectuer des opérations longues et récurrentes comme des imports. Ces opérations sont souvent lentes et consommatrices de CPU et de mémoire.
Révolution ou simple expérimentation ?
Il est un peu tôt pour se prononcer mais HipHop s'inscrit dans la tendance actuelle où l'on voit de plus en plus nettement se creuser un fossé entre les besoins simples des petites applications peu sollicitées, que l'on pourrait qualifier d'approche historique, et ceux beaucoup plus exigeants des applications critiques développées par des acteurs économiques de premier plan.
Le risque qu'engendre cette divergence des besoins et des moyens est une scission de la communauté PHP qui constitue l'une de ses forces. Pour le moment nous n'en sommes heureusement pas là et je doute que ce soit le but de Facebook qui une fois de plus réaffirme clairement son attachement à PHP pour sa simplicité et sa flexibilité.
Enfin, l'absence de support pour PHP 5.3 aura-t-elle un impact négatif sur l'adoption de ce dernier chez les grands comptes ?
PHPTV parle d’industrialisation de PHP
Damien a été interviewé par PHPTV sur le thème de l'industrialisation de PHP. Ce fut l'occasion de rappeler les éléments de base à mettre en place pour commencer à industrialiser ses développements PHP.
http://www.dailymotion.com/videoxbwt9qLe Livre blanc Industrialisation PHP dans le numéro de janvier de PHP Solutions
Le magazine PHP Solutions distribue notre livre blanc sur l'industrialisation de PHP sur le CD-Rom qui accompagne son numéro de janvier.
Au sommaire de ce numéro, vous trouverez également :
- Le Web service (partie 2)
- Testez votre projet
- L’intégration du .Net à PHP
- Rédiger et optimiser le contenu d’un site pour les moteurs de recherche
- Édition de documents OpenOffice ODF avec PHP
- Création de fichier de logs
- Votre boutique en ligne
- La puissance des démarches descriptives
- Envoyer des mails en PHP
- Symfony 1.3 : nouvelles fonctionnalités et envoi d’emails
- Manipuler les répertoires avec PHP
- BeEF Exploitation
A noter que l'article "Le Web service (partie 2)" a été écrit par notre collègue Christophe Villeneuve.
Bientôt un plugin PHP pour Sonar
Sonar est un outil Open Source de gestion de la qualité du code. Il analyse le code d'un projet pour fournir de nombreux tableaux de bord qui permettent d'en évaluer la qualité. Pour cela, il utilise différents angles :
- Architecture et conception ;
- Duplications ;
- Test unitaires ;
- Complexité ;
- Bogues potentiels ;
- Règles de codage ;
- Commentaires.
Il possède également un puissant mécanisme d'extensions qui permet de supporter de nouveau langages, d'ajouter des métriques et des règles d'analyse ou encore de s'intégrer au sein d'un processus d'Intégration Continue.
Jusqu'à présent Sonar était très orienté Java et il était impossible d'analyser un projet PHP. Ce temps est en passe d'être révolu grâce à l'arrivée prochaine d'une extension qui permettra d'intégrer les outils liés à l'analyse de la qualité du code qui sont portés depuis le monde Java (PHPUnit, PHP_CodeSniffer, PHP_Depend, etc.)
Cette extension est encore à l'état de prototype mais son potentiel est énorme.
Gartner rédige un rapport sur PHP
La célèbre société de recherche et de conseil Gartner a consacré début décembre un rapport à PHP, son passé, son présent et son avenir.
Ce rapport estime que :
- Le nombre de développeurs PHP dans le monde va passer de 4 millions cette année à 5 millions à l'horizon 2013 ;
- A court terme, PHP va rester une technologie web largement utilisée ;
- Sur le long terme, PHP rencontrera une concurrence de plus en plus forte d'autres technologies comme ASP.NET, Java, Python ou encore Ruby.
Voici les recommandations de Gartner :
- Envisagez d'utiliser PHP pour les projets qui requièrent une combinaison de technologies Open Source non-propriétaires pour construire des applications web simples.
- Envisagez PHP comme un outil spécialisé pour la création d'interface de consultation pour des architectures SOA.
- Envisagez d'adopter et de personnaliser des solutions PHP éprouvées comme Drupal ou MediaWiki avant de partir de zéro.
PHP devient le troisième langage le plus utilisé selon TIOBE
La société TIOBE, spécialisée dans la qualité logicielle, propose depuis 2001 un classement des langages de programmation. La méthodologie de ce genre de classements est toujours sujet à caution mais cela a le mérite de donner des grandes tendances. Ce qui est calculé là n'est pas la qualité intrinsèque des langages, qui est impossible à quantifier, mais leur popularité à travers le nombre de développeurs, de formations et d'acteurs économiques qui y ont trait.
Le classement de décembre 2009 montre l'arrivée de PHP dans le trio de tête, juste après Java et C, passant du même coup devant C++ et Visual Basic.

A mon sens, ces chiffres illustrent deux choses : la place grandissante qu'occupent les technologies web face au client lourd et la position de fer de lance de PHP dans ce mouvement.
Un projet sans développeur ?
Bien sûr, difficile d'imaginer un projet informatique sans développeur. Même bien conçu et bien supporté, il est difficile de se passer de celui qui produit le code, et convertit les objectifs fonctionnels en instructions PHP. Le titre de ce billet est provocateur. Il ne s'agit pas de s'en passer totalement : même les générateurs de code doivent être programmés par quelqu'un....
Pourtant, il y a un bon nombre de tâches qui échoient, faute d'autre interlocuteur, aux développeurs. Par exemple quand il faut déployer (qui connait l'application?), quand il faut tester (idem), quand il faut suivre la qualité d'application des conventions de code (qui va relire ce fatras?), quand il faut diagnostiquer un bug (Si ca plante, y'a que lui pour avoir l'explication).
Par défaut, tout cela revient directement jusqu'à celui qui a produit le code, car c'est lui qui détient ultimement la connaissance. Cela signifie qu'il devient rapidement un passage obligé pour nombre de phase de vie de l'entreprise, alors même que le code a quitté son giron depuis longtemps. Or, il n'est pas toujours possible de retrouver le développeur, pour de multiples raisons (affectation à une nouvelle mission, démission, mort, vacances, calendrier chargé...)
C'est ici que savoir se passer du ou des développeurs se révèle une pratique indispensable. Si les équipes d'administration doivent faire l'installation durant la nuit, un script de déploiement automatique permettra de le faire sans interroger l'auteur du code. Et cela sera même critique dans le cas où l'intervention se fait en urgence : montée en charge subite, retour en arriève de version, etc.
On peut assurer de nombreuses tâches comme ceci :
- tests unitaires automatiques (phpunit alltests.php)
- analyse statique (pmd)
- déploiement (phing, capistrano)
Dans ces situations, même en l'absence de développeur, on peut vérifier la qualité du projet, obtenir un diagnostic de la situation ou installer une nouvelle machine. Certes, les tests unitaires ne couvriront surement pas toutes les situations, mais ils permettront de vérifier les situations les plus simples, et même par une personne étrangère au projet ou non-technique.
Du point de vue individuel, c'est aussi une phase importante dans le cycle de vie du projet. Quand on travaille sur du code dans un projet, il est important de savoir s'en séparer, de couper le cordon ombilical. Si on est le seul à maîtriser une application, on devient indispensable, et on risque aussi de finir enchaîné à des corrections et évolutions infinies.
À chaque fois que j'ajoute une nouvelle fonctionnalité, je me demande à moi-même : comment mes utilisateurs pourront-ils faire des modifications sans passer par moi? Fouiller toute l'application? Faut-il manipuler du code? Lire une documentation? Changer une configuration ? Moins j'obstruerai la progression, mieux cela sera pour eux.
Et pour moi aussi. Car je ne compte pas rester toute ma vie sur le même projet.



