mageekblog - Mot-clé - node.jsLe blog personnel de Frédéric Hardy. Au menu, PHP, agilité, FreeBSD, cuisine et photographies.2021-12-02T08:20:54+01:00Frédéric Hardyurn:md5:26874ca5b8cd4cac8d08b0e68e64f63aDotclearL'avenir de PHP vu par Frédéric Hardyurn:md5:2f09ca6ccd5237981b0827256f83c7e52010-09-06T14:15:00+02:002010-09-06T17:24:04+02:00mageekguyPHP Xfermetureinterviewnode.jsPHP XPythonRubytraits<p>Après le <a href="http://blog.mageekbox.net/?post/2010/09/02/Et-apr%C3%A8s">teasing</a>, voici les faits, avec mes réponses à ma propre interview, qui clôtureront définitivement ce cycle sur la vision de l'avenir de <a href="http://www.php.net">PHP</a> qu'ont ses utilisateurs.</p>
<p>Cela fait maintenant presque 34 ans que Je me connais.</p>
<p>Je suis extrêmement proche de moi-même, je ne me cache rien et je me dis absolument tout.</p>
<p>Il était donc normal que je me demande mon avis au sujet de l'avenir de <a href="http://www.php.net">PHP</a>, afin de conclure en beauté cette série, d'autant que je suis très bien placé pour savoir que je ne ferais aucune concession.</p> <dl>
<dt>Peux-tu te présenter en quelques mots ?</dt>
<dd>
<p>J'ai découvert l'informatique à l'âge de 8 ans, je n'ai jamais arrêté depuis, et J'ai des compétences en développement, système d'exploitation, base de données, infographie et ergonomie.
</p>
<p>En tant que développeur, je pratique <a href="http://www.php.net">PHP</a> professionnellement depuis maintenant plus de 10 ans, dans le cadre de projets de petite ou grande envergure.</p>
<p>Je suis son développement dans le cadre de ma veille technologique depuis plusieurs années, même si ce suivi a été interrompu à plusieurs reprises, soit par manque de temps, soit parce que j'en ai eu marre de l'attitude des développeurs du langage vis à vis des utilisateurs.</p>
<p>Cette dernière raison est d'ailleurs, avec d'autres, à l'origine de la création de ce blog il y a maintenant 2 ans, puisque l'un de ses objectifs, relativement ambitieux, est de parvenir à avoir une réelle influence sur le développement de <a href="http://www.php.net/">PHP</a>, en mettant en lumière ses faiblesses, telles qu'elles sont perçues par ses utilisateurs, d’où mon <a href="http://blog.mageekbox.net/?post/2008/11/03/php-cdlamerde">premier billet</a>.</p>
<p>J'avais en effet fait le constat au cours des années que je n'aurais jamais assez de poids en tant qu'individu pour parvenir à me faire entendre, et qu'il me fallait donc parvenir à fédérer suffisamment de personnes autour de moi pour y arriver.</p>
<p>J'ai donc commencé modestement à décrire mes frustrations, qui ont suscité quelques échos dans la communauté française des utilisateurs de <a href="http://www.php.net/">PHP</a>, ce qui m'a prouvé que je n'étais pas le seul à les ressentir.</p>
<p>Depuis, l'actualité du langage m'a donné l'opportunité de passer à la vitesse supérieure, mais je dois bien avouer que l'effet de masse n'a pas encore porté ses fruits, même si je sais qu'il y a des développeurs majeurs du langage me lise.</p>
<p>Si tu désires plus de détails sur moi, je t'invite à lire ce <a href="http://blog.mageekbox.net/?post/2010/08/12/Qui-suis-je">billet</a> ainsi que mon <a href="http://blog.mageekbox.net/public/cv.frederic.hardy.pdf"><abbr title="Curriculum Vitae">CV</abbr></a> qui te permettra de mieux cerner mon personnage.</p>
</dd>
<dt>Que représente pour toi l'arrêt du développement de PHP 6 ?</dt>
<dd>
<p>Certain des interviewés précédents ont répondu qu'ils avaient ressentis du soulagement.</p>
<p>Or, ressentir du soulagement implique d'avoir souffert précédemment, et dans mon cas, ce n'était pas du tout le cas.</p>
<p>J'ai suivi le développement de PHP 6 depuis ses débuts, et je savais donc précisément à quoi m'en tenir sur le sujet, à tel point que j'ai répondu à un recruteur quelques jours avant l'annonce officielle de l'arrêt du développement que PHP 6 n'avait plus de raison d'être à part Unicode, vu que PHP 5.3 avait intégré la plupart de ses nouveautés, et qu'en conséquence, continuer son développement n'avait plus grand intérêt.</p>
<p>De mon point de vue, PHP 6 n'était donc pas une source de souffrance, puisqu'il ne m'a privé de rien.</p>
<p>À contrario, j'ai ressentie une certaine jubilation, car j'y ai vu une réelle opportunité de changer les choses, de corriger ce qui ne va pas, et de repartir de l'avant avec des bases plus saines, plus pratiques, d'autant que les raisons de l'échec de PHP 6 sont un regroupement de tout ce que je n'aime pas dans le développement de <a href="http://www.php.net">PHP</a>.</p>
<p>J'y ai également vu la possibilité de repartir de l'avant, car depuis 2005, <a href="http://www.php.net/">PHP</a> était du <q>réchauffé</q>.</p>
<p>En effet, les versions successives du langage n'ont fait qu'introduire des fonctionnalités prévues pour PHP 6 et les développeurs n'ont pas intégré dans le langage de nouvelles idées, de nouveaux concepts réellement novateurs, comme les <a href="http://blog.mageekbox.net/?post/2010/05/17/Et-si-on-tirait-des-traits">traits</a>, par exemple, alors qu'ils étaient formalisés depuis longtemps.</p>
<p>J'ai donc commencé à suivre beaucoup plus sérieusement le développement de la prochaine version du langage, afin de voir s'il allait prendre une meilleure direction, si les choses allaient changer.</p>
<p>En parallèle, j'ai commencé à publier la série de billets <q><a href="http://blog.mageekbox.net/?post/2010/03/25/Mort-de-PHP6-10-jours">Mort de PHP 6 + [123456789]\d\+ jours</a></q>, afin de rendre moins <q>opaque</q> le développement de <a href="http://www.php.net">PHP</a> en partageant ma veille, et ainsi potentiellement arriver à influer sur le développement du langage, conformément aux objectifs de ce blog.</p>
</dd><dt>En conséquence, quelles sont tes attentes vis à vis de la prochaine version ?</dt>
<dd>
<p>Elles sont multiples,et je ferais un distinguo entre ce que j’attends en terme de fonctionnalités, et ce que j'attends au niveau de la politique de développement.</p>
<p>En terme de fonctionnalités, j'aimerais que le langage gagne en cohérence, et je ne parle pas uniquement des noms de fonctions ou de l'ordre des arguments de ces fonctions.</p>
<p><a href="http:/www.php.net">PHP</a> dispose en effet de concepts intéressants, mais ils sont en général bridés ou inapplicables dans tous les contextes.</p>
<p>Je pense notamment aux <a href="http://blog.mageekbox.net/?post/2010/07/08/Les-fermetures%2C-c-est-trop...-ferm%C3%A9-%21">fermetures</a>, qui ne sont pas utilisables en tant que propriété d'un objet, ou bien à la méthode magique <a href="http://blog.mageekbox.net/?post/2010/08/18/PHP-manque-de-plus-en-plus-de-coh%C3%A9rence"><code>__invoke()</code></a>, qui souffre du même problème, ou bien encore au contrôle du type des arguments qui est limité aux tableaux et aux objets.</p>
<p>Sur ces points précis, j'ai bon espoir de voir les choses changer, car par le passé, il y a eu, par exemple, un <a href="http://bugs.php.net/bug.php?id=29917">problème similaire</a> avec les méthodes magiques <code>__set()</code> et <code>__get()</code>, qui perturbait le fonctionnement de <code>isset()</code>, et qui a finalement été réglé avec l'implémentation de <code>__isset()</code>.</p>
<p>Rétrospectivement, le statut <q>Wont fix</q> du rapport de bug en question me fait d'ailleurs bien rigoler.</p>
<p>Je voudrais également un modèle objet plus puissant, la possibilité de pouvoir définir le type de la valeur de retour d'une fonction ou d'une méthode, une extension <code><a href="http://php.net/manual/en/book.phar.php">phar</a></code> qui fonctionne <a href="http://bugs.php.net/bug.php?id=52013">correctement</a>, la possibilité de passer un bloc d'instruction comme argument à la manière de <a href="http://fr.wikipedia.org/wiki/Yield_%28instruction%29">Ruby</a>, du <a href="http://fr.wikipedia.org/wiki/Thread_%28informatique%29">threading</a>, la possibilité d'utiliser n'importe quel mot-clef comme nom de classe, une utilisation des exceptions au sein des fonctions à la place de certaines erreurs, la conservation du domaine applicatif entre chaque requête http, et évidement un support natif d'<a href="http://fr.wikipedia.org/wiki/Unicode">Unicode</a> et une réelle cassure de la compatibilité avec les versions précédentes afin de ne plus se traîner les boulets <q>historiques</q> du langage.</p>
<p>Cette liste n'est pas exhaustive, mais au final, je veux pratiquement les mêmes choses que les intervenants précédents, et pour ce que j'en sais actuellement, certaines sont effectivement prévues dans la prochaine version sur langage, alors que d'autres sont très clairement du domaine de l'utopie.</p>
<p>En terme d'organisation du développement, je voudrais que les développeurs de <a href="http://www.php?net">PHP</a> soient plus à l'écoute des utilisateurs, de ceux qui veulent contribuer à son développement, et que des outils efficaces permettent de suivre le développement.</p>
<p>En effet, aujourd'hui, il n'y a rien qui permette de comprendre la façon dont est développée le langage.</p>
<p>Des décisions sont prises, mais personne ne peut dire exactement par qui ni comment, et en cas de conflit, il n'y a pas un leader capable de trancher une bonne fois pour toute et d'imposer une solution.</p>
<p>Et ces décisions sont censées être prise démocratiquement, mais il n'y a rien pour comptabiliser les votes ni même pour savoir ceux qu'il y en a en cours et qui a un droit de vote.</p>
<p>De plus, il n'y a pas de moyen simple de suivre un débat de manière efficace, d'autant qu'énormément de discussions ne sont pas publiques et que des développeurs qui ont un certain poids au sein de la communauté se comporte comme des électrons libres.</p>
<p>J'ajouterais que la documentation technique du <a href="http://fr.wikipedia.org/wiki/Zend_Engine">Zend Engine</a> est quasiment inexistante et que la communauté des développeurs est très hermétique aux nouveaux arrivants, ce qui ne facilite pas l'intégration des personnes intéressées par le développement du langage, d'autant que ce dernier obéit à des règles tacites et non écrites.</p>
<p><a href="http://www.php.net">PHP</a> n'a pas de lignes directrices, de philosophie de fonctionnement clairement définie, revendiquée et affichée, au contraire de <a href="http://www.python.org/">Python</a>, par exemple, qui a son <a href="http://www.python.org/dev/peps/pep-0020/">zen</a>.
</p>
<p>En conséquence, le moindre ajout au langage ou la plus petite des modifications est susceptible de lancer un débat sans fin et enflammé au sein de la communauté, car personne n'a la moindre référence sur laquelle s'appuyer pour discuter.</p>
<p>Tout le monde parle donc du problème en fonction de sa sensibilité, et non en fonction de ce vers quoi doit tendre le langage en terme d'utilisabilité, de logique de fonctionnement, de performances, etc.</p>
<p>En bref, de l'intérieur comme de l'extérieur, <a href="http://www.php.net">PHP</a> semble à certain moment plus être développé par des gamins dans une cours de maternelle que par des professionnels soucieux des utilisateurs, et j'aimerais vraiment que cela change.</p>
</dd>
<dt>Penses-tu que la communauté des contributeurs a tiré les leçons de PHP 6 ?</dt>
<dd>
<p>Il est difficile de répondre à cette question de manière absolue, car tout dépend du point de vue.</p>
<p>Du point de vue de la communauté, le développement de la prochaine version a été considérablement simplifié par rapport à ce qui avait court du temps de PHP 6, du fait même de l'abandon de ce dernier, puisqu'il n'y a plus plusieurs branches de développement à gérer.</p>
<p>De plus, l'utilisation systématique des <a href="http://wiki.php.net/rfc/"><abbr title="Request For Comment">RFC</abbr></a>, inaugurée pour le développement de PHP 5.3, a été généralisée, et tout à été fait pour faciliter la vie des contributeurs et leur donner à nouveau envie de travailler sur le langage.</p>
<p>Tout cela a parfaitement fonctionné et la communauté est à nouveau motivée et mobilisée.</p>
<p>Cependant, d'un point de vue externe, peu de choses ont changé.</p>
<p>S'il y a clairement une partie de la communauté qui ne veut plus repasser par un épisode similaire à celui de PHP 6 et qui fait tout son possible pour que cela ne se reproduise pas, il y a également très clairement des développeurs qui n'ont apparemment pas pris la pleine mesure de l'échec représenté par l'abandon de PHP 6, et c'est regrettable.</p>
<p>De plus, l'un des hommes les plus aptes à tirer pleinement les leçons de PHP 6, à savoir <a href="http://blog.mageekbox.net/?post/2010/05/06/Un-coup-dur-pour-PHP">Lukas Kahwe Smith</a>, a quitté plus ou moins le projet.</p>
<p>Pourtant, il y a de l'espoir, car la communauté des développeurs, même si cela lui est encore difficile, semble maintenant capable de s'accorder et de refuser de se laisser imposer des décisions individuelles sans contestations.</p>
<p>De plus, la porte n'est plus fermée systématiquement lorsque quelqu'un d'extérieur propose une fonctionnalité intéressante.</p>
<p>Je pense donc que la communauté des développeurs n'a pas encore, et j'insiste sur le <q>encore</q>, tirée toutes les leçons de l'expérience PHP 6, mais que cela va venir.</p>
<p>Par contre, je ne m'avancerais pas à dire combien de temps cela prendra...</p>
<p>Cependant, je peux dire ce que j'aimerais que les choses aillent beaucoup plus loin, et que la gestion du projet soit revue dans son intégralité, mais je pense que j'en demande beaucoup trop, car une grande partie des développeurs historiques du langage refusent en effet de trop structurer son développement et d'accepter de nouvelles règles.</p>
</dd><dt>On entend beaucoup parler de la professionnalisation de <a href="http://www.php.net">PHP</a> actuellement, quel est ton avis sur le sujet ?</dt>
<dd>
<p>Tout dépend de ce que tu met derrière ce terme.</p>
<p>Si tu veux dire par là que <a href="http://www.php.net">PHP</a> devient un langage de qualité professionnelle, alors je te répondrais que cela fait maintenant longtemps qu'il l'est, même s'il n'est pas exempt de tares congénitales qui font dire à <a href="http://twitter.com/plouga/status/18364343317">certain</a> qu'en 2010, il est le langage le plus utilisé côté serveur mais qu'il a toujours besoin de prouver sa crédibilité et son sérieux.</p>
<p>Si tu veux dire par là qu'il est possible d'en vivre, comme l'entend <a href="http://blog.mageekbox.net/?post/2010/09/01/L-avenir-de-PHP-vu-par-%C3%89ric-Daspet">Éric Daspet</a>, alors je te répondrais, de part mon expérience récente, qu'il y a encore du chemin à faire, du moins en France et surtout en province.</p>
<p><a href="http://www.php.net">PHP</a> n'est effectivement pas l'un des langages leaders sur le marché pour les <abbr title="Société de Service en Ingénierie Informatique">SSII</abbr>, qui représente une grosse partie du monde professionnel en France, à tel point qu'un directeur d'agence d'une des plus grosses <abbr title="Société de Service en Ingénierie Informatique">SSII</abbr> françaises m'a dit récemment, je cite, que <q>le marché, c'est 80% Java, 15% .net, et le reste, on ne sais pas ce que c'est !</q>.</p>
<p><a href="http://www.php.net">PHP</a>, en province, est majoritairement l'apanage de petites structures, qui sont sur des marchés de niches, et il est donc difficile d'en vivre.</p>
<p>Sur Paris et sa région, la situation est un peu différente, car il y a de plus grosses structures qui font du <a href="http://www.php.net">PHP</a>, mais là encore, le langage est loin d'être le plus répandu.</p>
<p>Maintenant, la situation est en train de changer, puisqu'il y a de plus en plus d'offres d'emplois relatives à <a href="http://www.php.net">PHP</a> actuellement, et je ne peux que m'en réjouir.</p>
<p>Cependant, derrière cette forme de professionnalisation se cache en fait une industrialisation, et pas dans le meilleur sens du terme.</p>
<p>Je parle en effet d'une industrialisation au sens productif du terme, qui induit un nivellement par le bas.</p>
<p>En effet, elle passe par des outils tel que Symfony ou Zend Framework, dont le but est de faciliter les développements en cachant au maximum la complexité des technologies sous-jacentes et en simplifiant le plus possible les choses pour gagner en productivité.</p>
<p>Au final, les développeurs ne savent donc plus ce qu'ils manipulent exactement, et en arrive à ne plus comprendre toutes les conséquences de leurs actions, ce qui peut induire des problèmes de performances, des failles de sécurités, etc.</p>
<p>De plus, la créativité, l'imagination n'a plus du tout sa place dans le processus de développement, puisque les règles de développements sont imposées et que tout est fait pour qu'elles ne puissent pas être contournées.</p>
<p>Si on rajoute à cela le fait que la formation au développement web en général et à <a href="http://www.php.net">PHP</a> en particulier est très succincte, du moins dans les cursus informatique généraliste français, on arrive à un résultat qui n'est pas forcément beau à voir et l'avenir ne parait pas rose.</p>
</dd><dt>Le développement de prochaine version va-t-il dans le sens de cette professionnalisation ?</dt>
<dd>
<p>Certaines incohérences du langage, comme celles liées aux <a href="http://blog.mageekbox.net/?post/2010/07/08/Les-fermetures%2C-c-est-trop...-ferm%C3%A9-%21">fermetures</a>, sont corrigées dans la version de développement, et l'extension du contrôle du type des arguments à l'ensemble des types du langage est à l'étude.</p>
<p>Les <a href="http://blog.mageekbox.net/?post/2010/05/17/Et-si-on-tirait-des-traits">traits</a>, qui facilite la réutilisation du code, seront certainement l'une des grosses nouveautés de la prochaine version, avec <a href="http://blog.mageekbox.net/?post/2010/06/16/DTrace-un-peu-plus-dans-le-d%C3%A9tail">DTrace</a>, qui facilitera le débogage.</p>
<p>Une simplification de la syntaxe est également en cours, puisqu'il est maintenant possible de manipuler la valeur de retour d'une fonction ou d'une méthode sans avoir à l'affecter à une variable, et que l'intégration des annotations pour permettre la méta-programmation est à l'étude.</p>
<p>Dans le même temps, des couches basses du langage sont remaniées et optimisées, et les performances sont à la hausse.</p>
<p><a href="http://www.php.net">PHP</a> va donc clairement dans le sens de cette professionnalisation.</p>
<p>Maintenant, j'aimerais quelque chose qui fasse la différence avec les autres langages.</p>
<p>La plupart des choses que je viens de citer ne sont pas novatrices, à part peut-être les <a href="http://blog.mageekbox.net/?post/2010/05/17/Et-si-on-tirait-des-traits">traits</a>, et ne sont que des améliorations de l'existant ou des apports de l'extérieur.</p>
<p>Alors, personnellement, contrairement à d'autres interviewés, je m'amuse encore avec <a href="http://www.php.net">PHP</a>, certainement parce que je suis un peu masochiste, que j'aime me prendre la tête et que je connais très bien le langage et ses arcanes,</p>
<p>Cependant, je reste sur ma faim et j'aimerais à nouveau être impressionné par <a href="http://www.php.net">PHP</a> sans devoir déchanter quelques minutes plus tard parce que les développeurs du langage n'ont pas été au bout des choses.</p>
<p>C'est d'ailleurs l'une des raisons qui me poussent à aller voir ailleurs.</p>
<p>Je n'ai pas encore franchis le pas, mais j'y pense de plus en plus sérieusement, à tel point que j'ai compilé <a href="http://nodejs.org/">node.js</a> sur ma machine de développement, histoire de m'amuser vraiment et parce que je pense que la mutualisation du langage entre le client et le serveur a de l'avenir.</p>
</dd>
<dt>Au vu de tes réponses précédentes, est-il possible de dire que tu crois en l'avenir du langage ?</dt>
<dd>
<p>Encore une fois, je n'ai pas de réponse absolue.</p>
<p>Il y a des jours ou j'y crois, et d'autres ou je me dis, souvent d'ailleurs à la lecture de <a href="http://news.php.net/group.php?group=php.internals">internals@</a>, que <a href="http://www.php.net">PHP</a> ne peut pas avoir d'avenir vu la façon dont il est développé.</p>
<p>Je me dis en effet très régulièrement, qu'avant même <a href="http://www.python.org/">Python</a>, <a href="http://www.ruby-lang.org/fr/">Ruby</a> ou tout autre langage, le plus gros problème de <a href="http://www.php.net">PHP</a> est <a href="http://www.php.net">PHP</a> lui-même, ou plus exactement ceux qui le développe.</p>
<p>Cependant, cela fait maintenant 15 ans que le langage évolue de cette manière, alors, pourquoi cela provoquerait sa mort ?</p>
<p>Le vrai problème est donc bien l'outsider, le langage efficace, fun et tourné vers ses utilisateurs qui pourrait faire ce que fait <a href="http://www.php.net">PHP</a> et plus encore.</p>
<p>Ces langages existent, et qu'ils s'appellent <a href="http://www.python.org/">Python</a>, <a href="http://www.ruby-lang.org/fr/">Ruby</a>, ou <a href="http://fr.wikipedia.org/wiki/JavaScript">Javascript</a> importe peu.</p>
<p>La seule solution qu'à <a href="http://www.php.net">PHP</a> de survivre face à eux est qu'il évolue dans le sens attendu par ses utilisateurs, ses fans, ceux qui ont une réelle passion pour le langage, afin qu'ils ne soient pas déçus et qu'ils aillent en conséquence voir ailleurs, car ce sont eux qui assurent sa pérennité : un langage est vivant et a donc un avenir tant qu'il est utilisé.</p>
<p>Et pour cela, il faut que la communauté des développeurs entende et écoute les utilisateurs du langage.</p>
<p> Et je crois suffisamment, du moins pour l'instant, au fait que c'est possible pour faire ce blog et y consacrer le temps suffisant pour me faire entendre.</p>
</dd></dl>http://blog.mageekbox.net/?post/2010/09/05/L-avenir-de-PHP-vu-par-Fr%C3%A9d%C3%A9ric-Hardy#comment-formhttp://blog.mageekbox.net/?feed/atom/comments/182