Giving back to PHP

PHP has a tremendous community behind it, that community consists of you and me, and millions of others that help promote PHP by continuing to develop awesome applications that power some of the biggest websites in the world, but within this community exists a relatively small community that actively develops PHP, such as making it run on your favorite platform or making your favorite extensions compile and work or even keeps the documentation up-to-date. Today I want to dwell into that community, and perhaps giving you flavor enough to contribute back to PHP with code.

Infrastructure

Before we go into deep, let’s take a look at the infrastructure that powers our favorite language and some of the technologies that is being used behind the scenes.

Technology

PHP is written in C. C89 to be more exact, while this is an old standard, PHP strives to be able to be compiled out of the box on virtually any operating system out there, even your PlayStation! This naturally means that all extensions are also written in C, however it is possible to write extensions in C++.

The PHP Documentation is written in Docbook XML, which is as the name says, an XML based documentation system. The PHP Project have developed its own Docbook rendering system named PhD (PHP Docbook Renderer), written entirely in PHP that can render Docbook XML based projects!

Servers

The entire PHP.net website (including mirrors and systems) are spread across about 100 servers, where almost 90% is mirrors hosting the documentation in 58 countries, so the manual is always available to a location near you, no matter where you are in the world!

Besides documentation mirrors, PHP.net also hosts both an SVN and Git repository (The Github repository is a mirror of PHP.net). Nowadays almost every project within the PHP umbrella are developed under Git, however the PHP Documentation and a few PECL extensions are still hosted under SVN.

Communication

All official communication is done by mailing lists, the PHP project hosts a ton of mailing lists (which is viewable online), this is where all discussions regarding features (RFCs) and other technical details are exchanged. This is naturally, where the notorious internals mailing list is hosted. Subscribing to a mailing list can be done by sending an empty email to <name>-subscribe@lists.php.net (e.g. internals-subscribe@lists.php.net) or by using the web interface for popular lists. The mailing list software used is ezmlm (which of course is the reason why PHP have the ezmlm_hash() function in the standard library).

There are also 2 common IRC channels, where you can find some members of the PHP Project, both of these are hosted on EFNet under the .doc and .pecl channels, whereas .pecl is primarily internals.

Other resources

Like any other large project, the PHP project also hosts a bug tracker where all bugs should be filed, as well as simple feature requests (more on that in the next paragraph). The bug tracker also hosts bugs for most extensions published at PECL, including the PHP.net website and other system related issues.

Lastly, there is also a wiki, this is where RFCs are described and voted upon. Larger change sets, such as new language features should have an accompanying RFC that explains the feature in great details, its typical that all RFCs have an implementation patch attached. Smaller features, for example “Add the latest cURL constants”, are small and self explanatory enough to be filed in the bug tracker.

PHP needs you!

Like any other large open source project, PHP is always in need of creative minds that are interested in making PHP even better. You don’t need to be able to do C or understand the massive Docbook XML DTD to join, all you need is a positive attitude and be able to read and write PHP (but you already know this!).

First I would suggest you to join the mailing lists, especially internals (medium volume) and phpdoc (if you are interested in the documentation) and take part of the discussions, or at least keep yourself familiar with the day to day discussions about PHP.

If you got 5 or 10 minutes to kill while on a form of public transportation, then helping to review pull requests (by testing, reading code and commenting) is a great way to begin the wonderous journey into contributing to the PHP project. The same goes for bugs, and there is even a nifty feature to find a random, open bug report if you feel adventurous: bugs.php.net/random.

If you got a little more time than that, then writing tests to help coverage is also an area that is very easy for new contributors who wish to contribute to the PHP project

The “Unthankful” job is more “Thankful” than you might think

The title above is of course very subjective, as we all have each our agendas, and goals here in life. However here is a small personal anecdote, on why I keep contributing, and why I feel contributing many thankless hours, becomes some of the most thankful in the end:

I myself would never in a thousand years, have thought that I would contributing to PHP (even less thinking about being a programmer in the first place). I got a book back in 2002 from my mom (I was only 13 at the time) about PHP. It was some of a read, but I got through it and I was able to enhance my already poor understanding of PHP into something more structural, and while reading about user input through $_POST ($HTTP_POST_VARS), the book was talking about register_globals, which would let PHP auto populate the global scope with variables from the $_POST array. I never really thought more about it back then, but 8 years after, I would think back to this moment, as I would be the one to remove this feature from PHP. However for me personally, this was where I began to really see the thankfulness of being a contributor, as it helped millions world wide create more productive applications even easier, and that sense of accomplishment is making all those unthankful hours spend culminated into moments like this.

Final words

Like I said above, this is very subjective topic as everyone look at how we are attributed different, but for me, looking at other passengers on the bus or the train (who are glued to their smartphones), and knowing that there is a good chance that one of them is using an app or webservice with a PHP backend, meaning that somewhere they are using code I helped write, is a very accomplished feeling of being a part of an amazing community like PHP.

I hope this blog post gave you some insight to the PHP project, and perhaps some interest to begin contributing to PHP. Perhaps 2018 is the year where we will welcome YOU to the development team!