The PHP standards initiative

The history

While being at php|tek I got invited to a meeting initiated by the PEAR people on frameworks, and more specifically naming conventions for PHP5.3. Even though I have no official role in the symfony project, I decided to accept because the purpose of the meeting seemed good and if I could somehow contribute to it, that should help the php community at large. Also, during the meeting I've stated several times (to make it clear) that I could not have an official say in this. However, I've offered some input on some issues that I think and hope have helped form the document that is now available.

The purpose

At this moment, it is sometimes very hard to combine different libraries that use different autoloading logic. The most important purpose of the meeting was to make it more clear how to handle naming and autoloading amongst different frameworks. During the work on PEAR2, the PEAR group have written up a proposal for a new standard that they thought is a good solution to this problem. While at the meeting at php|tek, several parts of this proposal have been discussed by leaders and members of different framework teams. There was an official presence of Zend Framework, Solar, Agavi, Cake and PEAR and amongst the unofficial representation were Phing and symfony. This is an impressive collection of the currently popular frameworks. And those present were there to try and get a good standard proposed for the handling of the discussed topics. And I think we succeeded in getting a good, workable standard in a first draft.

The target audience

One thing that has not been clear in the communication over the past weeks has been the target audience for the proposed standards. Even though any PHP developer is obviously welcome to adopt the proposed standards, the main target audience of the standard is the group of (official) people present during the meeting as well as any other big (or small, really) framework or library that is interested in or willing to adopt the standard. The standard should not be seen as a law, yet more as a recommendation on how to handle things most efficiently. The people that use the libraries won't really notice much of the standards being implemented, aside from the fact that it makes their life more easy to combine several different libraries without having to juggle with autoloaders and such.

The discussion

Most of the current discussion seems not to handle around the fact that we're trying to get a standard out there. The main discussion seems to handle around the fact that we were trying to get a moderated/closed mailinglist on While I can understand the votes for more openness, I think the current situation is already open enough for the purpose. Those who represent a library or framework can apply for membership, and when approved will have a vote in the standards. The fact that the list is not open is avoid the meaningless and cluttering discussions as we sometimes see happening on the internals list. Since most people that would voice their opinion would hardly be affected by the standard, this would mean a lot of work for those inside the standards group to parse and compute all the feedback, respond to it, and/or filter the noise from the useful information. By having those that are actually affected most by the standard to be able to discuss with those less or not at all affected not able to discuss the topic, speed and quality is given preference over unclarity and fully open discussion. This is, for this specific purpose, not a bad thing if you ask me.

How to move forward

At this point, there is quite some discussion on how to move forward. I think the call from Michael J Burgess was the best so far: he basically says "let's cut the bullshit, stop discussing purpose and form, and start moving on to form some good and useful standards". And I have all faith in the PHP standards group to do just that, whatever way they choose. I hope to be able to contribute more in the future and will continue to support the initiative. In the end, the group is a community effort (albeit a small subset of the community) meant as a permanent improvement for the whole of the community (or well, most of it). So let's now cut the bullshit and move on.