D'ailleurs, ce n'est pas un choix, mais bien plusieurs, que nous sommes invités à faire, et le symbole est d'autant plus fort que l'issue du vote aura un impact direct sur PHP 5.4, puisque ce vote concerne les fonctionnalités susceptibles d'être ajoutées au langage avec cette version.

Il nous est en effet demandé de :

  • Choisir entre PHP et php pour l'espace de noms qui sera à l'avenir réservé pour les besoins internes du langage ;
  • Décider si le nom des types primitifs du langage tels que string, bool, float et int doivent devenir des mots réservés ;
  • Décider si E_STRICT doit être intégré à E_ALL ;
  • Décider l'ajout d'une option permettant de désactiver le nettoyage des données reçues via les requêtes HTTP de type POST par le langage ;
  • Décider si la notation binaire doit être supportée pour affecter des valeurs entières en binaire à des variables ;
  • Décider de la suppression des magic quotes (ne souriez pas, il y a des cons gens qui ont voté contre cette suppression) ;
  • Décider si la syntaxe courte pour la création de tableau doit être supportée, et dans l'affirmative, de choisir entre ['foo', 'foo' => 'bar'] et ['foo', 'foo': 'bar', 'boo' => 'baz'] ;
  • Choisir s'il doit être possible d'imposer une fonction de retour (aka callback) comme argument, et dans l'affirmative, de choisir entre callable et callback pour le type des fonctions de retour ;
  • Décider si le comportement des fermetures lexicales doit être modifié ;

Mais pourquoi est-ce une révolution ?

Tout d'abord, Jusqu'à hier, l'avenir du langage était aux mains d'un petit groupe de personnes qui prenait ses décisions de manière plus ou moins transparente, en fonction de paramètres plus ou moins subjectifs et arbitraires, voire même pour certains en fonction de leur intérêt personnel.

Aujourd'hui, cela fait désormais partis du passé, puisque toute personne disposant d'un accès sur le wiki de PHP et participant au développpeut voter pour ou contre une RFC.

Aujourd'hui, cela fait désormais partis du passé, puisque toute personne qui participe au développement de PHP en tant que contributeur, membre actif de internals@ ou développeur principal d'un projet basé sur le langage peut voter pour ou contre une RFC.

Et comme il suffit de demander un accès au wiki pour l'obtenir, cela signifie qu'un utilisateur du langage peut donner son avis tout autant qu'un contributeur.

Et comme il suffit de s'inscrire sur internals@ pour y participer, cela signifie qu'un utilisateur du langage peut donner son avis tout autant qu'un contributeur.

Ainsi, c'est donc la communauté dans son ensemble, et non juste quelques personnes, qui vont à l'avenir décider de ce que deviendra PHP, et si cela n'est pas une révolution, je ne sais pas ce que c'est.

De plus, auparavant, s'il y avait bien un processus de vote, il était très loin d'être formalisé, et le suivi des résultats était pour le moins délicat.

Pour voter pour une fonctionnalité, il fallait tout d'abord être un contributeur et suivre leur liste de diffusion, internals@, ce qui, je peux vous le dire, demande parfois une bonne dose de courage.

Ensuite, il fallait être au courant qu'il y avait un vote, et ensuite arriver à bien comprendre l'objet du vote, bien souvent très fortement dilué parmi le flux continu de message arrivant quotidiennement sur la liste de diffusion des contributeurs, sans parler de la difficulté à faire le tri entre l'information pertinente et le bruit ambiant, ni de la difficulté à suivre les débats et à s'y retrouver parmi les débats transverses suscités par la proposition de départ.

Les contributeurs devaient ensuite envoyer sur la liste de diffusion un message ayant pour objet le libellé du vote et indiquer dans le corps du message +1 s'ils étaient d'accord avec la proposition, 0 s'ils n'avaient pas d'opinion, et -1 s'ils n'étaient pas d'accord.

Sauf que bien souvent, le contributeur ajoutait des conditions à son vote du style +1 si cela est modifié comme cela, sinon, -1, ce qui non seulement relançait les débats au cours du vote, mais en plus rendait très compliqué le décompte des bulletins.

Enfin, les dates de début et de fin de vote étaient bien souvent plus que flou, et il était donc quasiment impossible de savoir s'il était pertinent de voter et si le vote allait effectivement être pris en compte.

En résumé, suivre les débats pour ensuite pouvoir se forger une opinion pour pouvoir voter en toute connaissance de cause était un vrai parcours du combattant, et en conséquence, le nombre de votants était bien loin d'être représentatif.

De plus, le dépouillement des votes était tout simplement une vaste fumisterie, puisque outre le fait que certains votaient au conditionnel, il était très facile de se tromper en décomptant les votes.

Aujourd'hui, cela fait également parti du passé, car chaque vote est dorénavant comptabilisé publiquement et nominativement sur le wiki, et les votes assortis de conditions ne sont plus possibles.

De plus, les dates de début et de fin du vote sont clairement annoncées et le sujet du vote fait l'objet d'une RFC, ce qui permet aux votants de se documenter afin qu'ils puissent prendre leur décision en toute connaissance de cause.

La transparence est donc de rigueur, et c'est la raison pour laquelle je peux vous dire que l'ensemble des propositions relatives à PHP 5.4 sont bien parties pour être acceptées dans leur intégralité.

Encore une fois, si ce n'est pas une révolution, je ne sais pas ce que c'est !