When Chris Shiflett asked me to write an article for PHP Advent, my first inclination was to talk about Unicode support in PHP 6, why it’s important, and how it can help bring about world peace and happiness. And I was planning to use a handful of weird symbols and scripts and strange words like “mojibake” and flagrantly make fun of Engrish and similar stuff, because it’s fun. However, this can all be found in my talks and slides; so instead, I want to briefly talk about the process of how PHP gets developed and why things are the way they are.
PHP is a mutt. It has never had a design spec, and it never will. It has been developed by way of an evolutionary process, and thus it resembles its users—just take a look at most of us in the next conference. PHP grew up with the Web, and because of this, it is uniquely suited to solve the Web problem—gluing together various technologies and exposing them via a fairly intuitive and easy-to-pick-up interface. PHP is not afraid to borrow things from other languages, which can be a blessing and a curse: it has a C-like procedural syntax, Java-like object system, various Perlisms, and sprinkles of Python here and there. What you get when you put this core together with the multitude of functions and libraries is a “ball of nails,” as Terry Chay likes to say, that sticks to whatever you throw it at.
2008 has been a long and somewhat unusual year in PHP development history. PHP 5.3, which turned out to be the most feature-filled point release, emerged and took shape during this time. As many features as it has, we only need to look at one—namespaces—to see how long and contentious the discussions on the internals mailing list have been. Some may even call them vitriolic, but in reality those are few and far between. What does constitute a large part of the discussions, unfortunately, are somewhat ill-informed postings that disregard the current development culture.
This culture, historically, has been one of meritocracy: those who demonstrate talent, competence, energy, and good ideas over a period of time tend to be the main drivers behind PHP development. You might start with writing docs, helping fix bugs, contributing small patches, and then getting direct commit access to the repository and starting to work on your own features and even being a release master for a certain version. However, as PHP has become more and more popular, the number of people subscribed to the internals mailing list has grown as well. Unfortunately, a good number of the newcomers are under the impression that one can simply subscribe to the list, read discussions while lurking or semi-lurking, and start making posts on things that affect important parts of the language. That’s not the way it works, and not just in the online world. For example, in the United States, you can be a permanent resident for years, pay all your taxes, respect the law, but you are still not eligible to vote until you become a citizen. Whether it’s fair or not is debatable, but at least there is a vetting process in place that requires immigrants to fully adopt this country as their new home before participating in the democracy.
I appreciate the enthusiasm with which these people partake in the discussions, and I understand that they may have strong opinions on various PHP-related issues. However, in order to be taken seriously, one has to have a certain amount of respect, experience, “karma”—call it what you will—and that has to be earned. And how do you earn it? The first place to start is with that golden statement, “do unto others as you would have them do unto you.” In other words, be nice and be human. More concretely, though, it takes tangible participation, be it code contributions, documentation write-ups, bug triage, or just some good ideas that you put forward and promote in a respectful and polite manner. Before posting something on the matter under discussion, read the historical posts and avoid being redundant. Don’t show up and call something “stupid,” or “worst idea EVAR,” or claim that there’s only “one true way to do things.” If your first email to the list ignores the customs and practices of the group, your subsequent ones are likely to be taken less than seriously. First impressions count. To sum up: make a difference, contribute something, think before you post, be polite, and try to consider that yours is not the only opinion out there, especially if you are new to the list.
The signal-to-noise ratio on the internals list seems to be improving. In 2008, we finally saw the emergence of an RFC process which has proven very helpful in hammering out such features as namespaces and closures. Anyone can contribute an RFC, but the difference from normal list posts is that writing an RFC requires you to research and think things out in detail, leading to a higher quality proposal. We also had an influx of new faces and new talent—people who are likely to be at the vanguard of future PHP development. Finally, on a personal note, I have recently joined Digg to work on their open source effort, and that means that the majority of my time will be spent on PHP and related technologies. So, yes, PHP 6 should get a triple-espresso shot in the arm just after the New Year, and I can get back to talking about weird Unicode symbols.
2009 looks to be a bright year for PHP, and hopefully—with everyone’s help—the development cycle becomes a smoothly-running machine. Happy holidays to you all.