Who Is Behind PHP#php
PHP, the language driving the web, commands a staggering 77.4% share among websites reporting their server-side programming language. With its remarkable growth in recent years, PHP has solidified its position as a mature and feature-rich language favored by major industry players. But have you ever wondered about the masterminds behind PHP's evolution? Who calls the shots on new features and future versions? What is this "core team" or the "internals" you might have heard of? In this article, we are going to answer these questions and more.
Before discussing the current state, we must consider where PHP comes from. It was created by Rasmus Lerdorf in 1994. He created PHP to be able to track visitors to his online resume. He called it
Personal Home Page Tools. In 1995, he announced the source code of PHP. Since then, it has been rewritten a few times and got a lot of new features.
We can say that PHP has completely changed from what Rasmus built for his needs. Keep this in mind for later in this article.
Before we continue, I’d like to clarify some terms used in this article. There are no “official” terms, so these are the ones that I use:
RFC- Request for Comments. This is a document that describes a new feature for PHP
PHP Core Maintainers- People who watch and triage the issue tracker and regularly fix issues
PHP Core Contributors- People who occasionally contribute code and propose ideas to the lang or create RFCs
PHP Core Voters- People who are allowed to vote on RFCs (includes people from the other two groups)
PHP Contributors- People who generally contribute to PHP in one way or another. There is a large amount of those behind PHP. The main difference between them and the groups above is that the ones above require specific permissions.
internals is often wrongly used for the PHP Core Contributors. This is because there is an Internals mailing list, which despite public belief, is free for everyone to join.
Also, the term
core team is not quite adequate because there is no team in the conventional sense behind everything. It’s a collective of supporters.
Who Is In Charge Of PHP?
PHP is an open-source project. This means the source code is available for everyone to read and modify. Even so, in many open-source projects, it often boils down to one person responsible for making the ultimate decision.
With PHP, it is a bit different. There is no single person that is in charge. In general,
it belongs to the community. Still, there is a group of developers mainly responsible for the project. I must also mention that the PHP project is not just the language itself. There is also the main website, documentation, the voting process, and more.
The group responsible for the PHP language and its website is the
PHP Core Contributors. The core team comprises people who have been contributing to PHP for a long time and have proven that they know what they are doing. They are responsible for developing PHP, working on new features, or handling issues.
Who Can Add New Features To PHP?
Everyone can bring in ideas for new features. Whether you are a core contributor or new to PHP doesn't matter. Ultimately, a vote will decide if the new feature gets implemented.
The process of starting a new RFC is described here. In a nutshell, the process for you as the author of a new feature idea looks like:
- Send an email with a brief idea of a feature to the internals mailing list to get an overall “temperature”
- If the idea is good and supported, you should prepare an official RFC document
- Then, an official discussion about the RFC starts on the mailing list (at least for two weeks)
- You (the author of the RFC) can start the voting phase, which is open for two weeks.
All discussions happen on the PHP Internals mailing list. Again, this is also where the name "Internals" comes from. If there is interest in your idea, you can move on and create an RFC.
An RFC is a document that describes the feature and why it should be added to PHP. It also contains a list of pros and cons and a list of alternatives. Everyone is allowed to create an RFC. You do not have to be a core contributor. You need to create a PHP wiki account.
The process moves to the voting phase after an RFC is created and discussed on the mailing list.
What Is Karma?
PHP Wiki has a karma system. It means that to submit an RFC or vote for an RFC, you need a specific level of access.
For starting a new RFC, requesting Karma is relatively easy. You need to send a “Karma request” message to the mailing list mentioning motivation, and then someone from PHP Core Maintainers will help you. Here is an example of such a message from externals.io:
To receive Karma to vote on RFCs is way more complicated. This voting right is powerful and will only be given to developers who have proven themselves helpful to the PHP projects. More on that later in the article.
Who Is Allowed To Vote?
As already mentioned, there are the PHP core voters. They consist of two different groups of developers:
- PHP Core Contributors
- Representatives from the PHP community, like authors of popular frameworks or tools
Technically, everyone with a php.net account can vote. But it is a bit more complicated than that because there are over 1800 accounts. In reality, an RFC gets around 20-30 votes. So there are a lot of old accounts on php.net of developers who are not working with PHP or don’t contribute anymore.
RFC Process Example
Here is an example of the RFC process for Readonly classes. First, there was a discussion about it on the internals mailing list. The best way to follow all discussions of the internal mailing list is through a service called externals.io. It is a website that collects all the emails from the mailing list and displays them in a friendly way. (Thank you, Matthieu 🙏)
The discussion about the Readonly Classes can be found here. In this case, the discussion was already about a given RFC. But it is also possible to start a conversation without an RFC made yet. The voting result was added to the RFC.
This RFC was approved:
28 people voted for it, and
7 voted against it.
Starting in 2016, all language changes require a
two-thirds majority in favor of approval. PHP core contributors are not automatically allowed to vote. But next to some of them, representatives of PHP, frameworks, cms, or tools are allowed to vote.
Of course, there are many other cases where RFCs get declined. People aren’t always happy about such a decision, or why it was made might be unclear. There are a few reasons why that might be the case:
- Some features are better done in "userland"
- Yes is forever; no is temporary.
- Introducing more edge-cases
How To Become An RFC Voter?
This question has been asked many times, and it’s not entirely clear. However, based on several requests and threads( 1, 2, 3), it’s evident that you have to be actively involved in the life of the PHP community and participate in discussions regularly.
Nikita Popov summarized it well:
I believe it is important to remember that voting is just the last step of the RFC process: While the vote is the final arbiter, the discussion phase that precedes it is where concerns are heard and the proposal is shaped. Granting voting rights to persons not contributing to projects under the php.net umbrella has historically been a bit of a touchy topic. The last request of this type by Nicolas Grekas was granted specifically because he was already a long-time active participant of the PHP internals mailing list, and provided valuable insight, especially regarding the impact of changes in PHP on Symfony and its ecosystem. I think that this is an important criterion. Before granting voting requests, I would really like to see some participation in RFC discussions on the mailing list. A vote is just a single bit of information, while your thoughtful insight on how language changes may interact with static analysis will help shape proposals in a much more significant way. (Nikita Popov)
I still hope there will be a more transparent process in the future with clear rules.
But the community can now vote too! Brent created RFC Vote, a platform for the community to vote on RFCs. It is a great initiative, and will give everyone a voice to express their opinions about possible new features of PHP.
How To Become A PHP Core Contributor?
Similar to other open-source projects, you become a part of the inner team by contributing. This might start small by sharing feedback, testing, or creating RFCs. This is also something that does not happen overnight and will take time. Most leading PHP developers have been involved for a long time and have proven themselves before receiving any writing rights.
Your goal shouldn’t be to receive any role or get granted any permissions. If PHP is important to you, you should
focus on helping the current contributors and PHP in general. Everything else might follow later.
Do Core Contributors Get Paid For Working On PHP?
The short answer is:
No. The long answer is:
There is no company behind PHP, and you do not automatically get paid by contributing to the language. But, throughout the history of PHP, there have always been companies that paid developers to work on PHP. In the early days, it was mainly Rasmus Lerdorf himself. Later, companies like Zend, Microsoft, and Facebook started to pay developers to work on PHP.
In 2019, JetBrains, the company behind the biggest PHP IDE PhpStorm, hired Nikita Popov to work on PHP for the following years. He is one of
the most active contributors to PHP and has been working on PHP for over ten years. Unfortunately, in 2021, he left JetBrains and PHP for good and is now focusing on other things.
JetBrains is also the company that started The PHP Foundation. The PHP Foundation is a non-profit organization dedicated to the PHP project. JetBrains, other companies, and individuals fund it.
This initiative has also started publicly sponsoring developers to maintain and improve PHP. Currently, they pay six people to work on PHP:
- Derick Rethans
- George Peter Banyard
- Ilija Tovilo
- Jakub Zelenka
- Máté Kocsis
- Arnaud Le Blanc
Paying those developers to work on PHP is possible due to donations. The PHP Foundation is accepting donations from companies and individuals. If you want to support the development of PHP, you can and should donate too.
The Quirks of PHP
Many PHP developers, like me, are often surprised by some internal handling of things in PHP. Why are they still using mailing lists, which feels super old and ineffective? Why do I need 10 years old comment on the official docs? Why are so many people allowed to vote on new features but don't? Or what about the main website and docs, which feel a bit outdated and would need a fresh look?
So these are some things you probably wouldn’t see with newer programming languages. Again, let me remind you of the history, PHP gets 30 next year. 30! Also, it has changed tremendously over time, internally and in terms of the people behind it.
This means you cannot compare PHP to languages that are only around a few years and have been specifically built for one reason. There are three aspects of this I’d like to share:
- If only one person makes all the decisions, it becomes pretty easy to change something. This is not possible with PHP. Many people are involved, who also often have different opinions about the direction of PHP, which is normal.
- There have been significant initiatives by companies and individuals to help overcome some of the legacy structures and the image of PHP. I believe we will see more of them in the future.
- Despite all the things that might sound outdated, unorganized, or chaotic, PHP has thrived immensely over the last few years, making it more robust and performant than ever. It is a great time to be a PHP developer. Don’t forget that and be careful with early judgments. (me included)
As you can see, PHP has come a long way, and it is impressive how it is still evolving despite some debts from the past.
It isn't easy to shape a project as big as PHP, especially where no single person makes final decisions. That's why it is often unclear to the outside world why certain choices are made and who made them. I hope the PHP Foundation can help make this more transparent.
Next to the PHP language itself, we need a working infrastructure around it to keep it thriving.
I love PHP, and I want to see it grow and evolve.
I hope this "behind the scenes" article helped you to better understand PHP, and it is handled. If you have any questions, feel free to reach out to me on Twitter.