PHP Community-driven Standards
PHP CDS is not a group or organisation, it's a concept. Its core idea is for the community to create RFCs, discuss them, then hold a vote on their acceptance as a community standard.
Its aim is to be as loosely coupled to any individual, group or organisation as possible. RFCs/Standards are proposed, discussed, agreed upon in the simplest possible fashion by the community. Anyone willing to contribute to the PHP community is welcome to participate in the CDS process.
Its aim is not to propose standards itself, have members or limit discussion.
Because there is no membership involved, there's no in-house lobbying. If you propose ideas, you don't need to convince the right people: You are free to propose anything you want, and the community as a whole can accept or reject your idea.
|PSR-0 Autoloading Standard (deprecated)|
|PSR-1 Basic Coding Standard|
|PSR-2 Coding Style Guide|
|PSR-3 Logger Interface|
|PSR-6 Caching Interface|
|PSR-7 HTTP Message Interface|
How the Process Works
Create an RFC
An RFC is a request-for-comment, mostly in form of an issue in the php-cds/php-cds repository. Authors describe their idea, maybe even first draft of an API, and open it immediately for discussion and voting.
Voting for an RFC
RFCs can be voted on immediately using GitHub reactions
Participants have the ability to watch for activity using GitHub's watch function on the php-cds/php-cds repository.
Discussion on implementation
If an author decides to create a concrete implemention of an interface/API/document based on an RFC, all discussion should happen in the php-cds/php-cds-discussion repository.
Discussion in a separate repository prevents noise for those who are only interested in voting.
Those who want to be more involved in the Community-driven Standards process can watch the php-cds/php-cds-discussion repository.
All you need to get involved is a GitHub account. You can participate in several different ways:
If you want to get more involved, you can watch the php-cds/php-cds-discussion repository, where pull requests and discussions about implementions happen. You can participate in all discussions in this repository.
You can express your support for PHP-CDS by pressing the star button. This signals to other people that you support this concept, and also that you have an active interest in adopting those Community-driven Standards.
To keep discussions level-headed and to maintain state of RFCs, moderators are needed. If you want to be a moderator and you are a trustworthy member of the php community, then please write @marcj in gitter.
A moderator must not limit discussion or censor ideas. In an ideal world, moderators wouldn't be involved at all. They do not have any special purpose other than to help maintain clean repositories on behalf of the community.
Create a RFC
RFCs (request for comments) are made using the GitHub issue tracker of the php-cds/php-cds repository. You can create an issue, add a title, prefixed with
start writing about your idea. That's it.
Try to be as concise as possible so readers will be able to quickly digest and understand your idea before voting.
How to vote on an RFC
In the GitHub issue tracker of the php-cds/php-cds repository you see all RFCs (issues with a title prefixed with
After reading the issue description, try to understand it and express your opinion with a GitHub reaction
Implement/discuss an RFC
Once you think you have enough positive feedback from the community (as seen by the GitHub reactions) you are free to open a discussion thread in the php-cds/php-cds-discussion repository. People that are interested in joining your RFC can discuss and reply at any time. You can also create pull requests so people can easily comment on proposed code.
Once an RFC has positive community reaction, you have decided to create a discussion and a concrete implemention, and you think your work is done and ready for prime time, the RFC becomes a PSR-proposal (PHP Standard Recommendation) as soon as you create a issue in the php-cds/php-cds-psr repository.
Creating an issue in this repository means you want to have a final vote on the RFC asking the community for your proposal to become an official PSR.
It's completely up to you how you write your proposal. Any GitHub member is able to express their opinion as a comment or as a vote using
A vote is considered successful if 2/3 of all votes are positive (
PSR names and changes
PSRs do not have numbers, they have names. For example "PSR-event-dispatcher" or "PSR-logging", ideally corresponding to the PHP
namespace in which they reside ("PSR-event-dispatcher" ->
PSRs do not have an initial version number attached. If a change is required, the version will be incremented by 1. For example, an update to "PSR-event-dispatcher" would become "PSR-event-dispatcher-2". The current version of all accepted PSRs are displayed in the php-cds repositories.
Close RFC and PSR
Every issue created in php-cds/php-cds (which represents an RFC) or php-cds/php-cds-psr (which represents a PSR) has an allowed voting window. The voting window is always 1 month from the creation date. If an RFC or PSR has more than 1/3 negative votes, it will be closed.