Demystifying PHP RFCs

Larry Garfield

@Crell@phpc.social

Cover of Exploring PHP 8.0 Cover of Thinking Functionally in PHP

PHP is always advancing

A running PHP elephant

Why should you care?

Why get involved?

  • See what's coming
  • Influence what's coming
  • Change the future

How to get involved

Join the mailing list

An emoji figure running around in a panic

Don't Panic

The Don't Panic face from Hitchhiker's Guide To The Galaxy
  • Stable and reliable technology
  • Not controlled by a megacorp technology
  • Available to literally everyone technology
  • Anonymously readable at https://externals.io/

To join (easy way)

mailto:internals-subscribe@lists.php.net

To join (GUI way)

https://www.php.net/mailing-lists.php

A screenshot of the mailing list signup form

List Etiquette

  • Reply-all
  • Reply at the bottom
  • Plain text only, no HTML (Markdown is OK)
  • Don't Be A Jerk™

See what's going on

https://wiki.php.net/rfc

Complete list of active and past RFCs.

(Great source for understanding why something is the way it is.)

How RFCs Happen

  1. Have an idea
  2. Discuss the idea
  3. Implement the idea
  4. Discuss the idea (part 2)
  5. Vote on the idea
  6. Profit???

Have an idea

  • Solves a real problem
  • ... for lots of people
  • and cannot be reasonably done in user-space

Discuss the idea


          To: internals@lists.php.net
          From: me@example.com
          Subject: [Proposal] Add configurable rot() function

          Hi all.  I want to discuss adding a configurable `rot()` function
          to PHP.  It would be more flexible than the existing `rot_13()`,
          and allow rotating characters by any amount.  This will greatly improve
          our ability to write secure encryption routines.

          E.g.:

          ```
          $encoded = rot('hello world', 5);
          print $encoded; // prints "mjqqt btwqi"
          ```
        

If the feedback is clearly negative...

Elsa from Frozen singing Let It Go

If the feedback is positive...

Palpatine from Star Wars: Revenge of the Sith saying 'Do it'

Implement the idea

Optional-ish

Get Wiki access

1. Sign up for free on wiki.php.net


          To: internals@lists.php.net
          From: me@example.com
          Subject: Wiki RFC access

          Hi all.  I am requesting RFC edit access on wiki.php.net
          so I can work on the rot() RFC.  My username is `me`.
        

Write the RFC

A screencap of the new-RFC editing window
  • Be concise and precise
  • Use code examples liberally
  • Warning: DocuWiki, not Markdown

Discuss (again)


          To: internals@lists.php.net
          From: me@example.com
          Subject: [RFC] Add configurable rot() function

          Hi all.  I'd like to open discussion on the rot() function
          proposal.  The RFC is here:

          https://wiki.php.net/rfc/arbitrary_rot

          Looking forward to your feedback!
        

Discussion (again)

  • Keep all replies in the one thread
  • Expect the RFC and implementation to evolve
  • Keep a changelog in the RFC
  • Assume good faith; offer good faith
  • This is open to everyone, including you!

Prepare for voting

  • No change to the RFC for 2 weeks
  • No substantive feedback for ~2 weeks
  • You feel it's done™

          To: internals@lists.php.net
          From: me@example.com
          Subject: Re: [RFC] Add configurable rot() function

          > Hi all.  I'd like to open discussion on the rot() function
          > proposal.  The RFC is here:
          >
          > https://wiki.php.net/rfc/arbitrary_rot

          Hi all.  As the discussion has died down, this is the Intent to Vote
          notice.  I'll open the vote sometime on Wednesday, barring any other feedback
          before then.
        

Open the vote

A screenshot of the edit window on the Wiki, showing the voting widget

Open the vote


          To: internals@lists.php.net
          From: me@example.com
          Subject: [RFC][Vote] Add configurable rot() function

          I have opened the vote on the configurable rot() function.  The vote
          will end at 4pm UTC on July 3rd.

          https://wiki.php.net/rfc/arbitrary_rot

          Previous discussion thread: https://externals.io/message/130912
        

But wait, who are the voters?

A monkey puppet looking around awkwardly

Some stats

Number of voters
~1500
Number that routinely vote
~100
Number that vote on any given RFC
~25

Percentage of voters that also take part in the discussion: Too small

Becoming a voter

Someone with voting access decides you've contributed to PHP "enough."

Code and docs are best

Direct Democracy has its pros and cons...

If it doesn't pass

Elsa from Frozen singing Let It Go

If it does pass

A celebratory meme, captioned 'Time to get back to work'
  • Finish/polish the PR
  • Timeframe varies
  • Usual PR review/merge process

Next November...

An emoji face with party hat blowing a celebratory kazoo
* Why get involved? * See what's coming * Influence what's coming * Join the team? * How to get involved * Joining the Internals Mailing list (deal with it) * Etiquette * See what's active: The wiki * How RFCs happen * Anyone can propose an idea * Start with a "concept thread" * If good feedback, request wiki access * Write RFC, and POC. Follow the template * Post to list * Discuss (and new discussion timing rules) * Call a vote * Voters - messy * "Direct democracy" – For both good and bad * Pass? Go get it merged. (May still be development.) * History of aviz and hooks * Originally proposed in 8.3 * Aviz failed. * Tried to do hooks, but ran out of time. * Started up again in 8.4, passed. * Try aviz again, passed this time. Mostly due to different voters. * "Who votes matters"

Larry Garfield

@Crell@phpc.social

All about PHP 8!

https://bit.ly/php80

Cover of Exploring PHP 8.0

Buy my book!

https://bit.ly/fn-php

Cover of Thinking Functionally in PHP

https://www.garfieldtech.com/