Git Product home page Git Product logo

rfccodex's Introduction

PHP RFC codex

This is an opinionated curated documentation of previous RFC discussions that failed to result in a successful change in PHP.

The purpose of this information is to provide to people a summary of why certain ideas failed to get done, so that future conversations can be far more productive, and avoid people continually asking "why did this feature never get done?".

The curation is opinionated. I'm not going to document some of the discussions that were had that were either for things that were a bad idea, or just so unlikely to happen that curating them isn't likely to be worth anyone's time reading them.

For reasons, the actual list is here: RFC Codex

rfccodex's People

Contributors

asgh avatar cookieguru avatar danack avatar girgias avatar panosru avatar tiffany-taylor avatar tysonandre avatar u-mulder avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

rfccodex's Issues

add these words to etiquette somewhere.

https://gist.github.com/Danack/4fcdece65e551acb2467caaf939d629e

Hi Internals,

A little while ago Zeev suggested that it was time to update the RFC process to make it more fit for purpose. As part of that conversation I would like to suggest some 'etiquette' around RFC discussions.

PHP internals has a reputation for being 'toxic'. While I don't think it's as bad as some people try to suggest it is, we could make RFC discussions be more productive and less emotionally draining by people being more careful how they interact with each other on this list.

I've written some suggestions on how people could have more productive conversations, which I'm going to maintain here (https://github.com/Danack/RfcCodex/blob/master/rfc_etiquette.md), and have attached to the end of this email.

These would be mostly suggestions of how to have productive conversations rather than hard rules, as most of them involve gray areas, which couldn't and shouldn't be enforced with hard rules.

I'm sending this list now, but the full conversation might be better to have as a part of a full review of the RFC process. However there are a few that I think we should discuss sooner rather than later.


# Better process for handling suggestions that are never likely to pass

Recently, someone suggested adding capability for PHP to print strings that automatically have a new line at the end of the string. Putting it mildly, that conversation didn't go well, and by the end of it people were swearing at each other on the list.

PHP internals could do with a better process for giving negative feedback an idea without someone having to go through the whole RFC process.

I don't have a good suggestion for how to do this. Does anyone else?


# People other than the author announcing RFCs on internals

Through possibly a series of errors, someone who was not the author started a thread on internals for an RFC right after it had been created, while it was still in draft status. 

The site wiki.php.net/rfc is a tool that is meant to allow people to draft RFCs and share the idea with other people who want to work on the RFC before it is a polished idea, and before it is ready to be presented to the world.

Having someone other than the RFC author announce the RFC on internals before the author thinks the RFC is ready for comment, is "not okay". If you discuss an RFC on internals before the author thinks the RFC is ready to be discussed, the only thing that could achieve is to make the conversation less productive.

If you want to influence how the RFC is drafted, it can appropriate to reach out to the RFC author, and offer to help them.


# Contacting RFC authors should go through PHP internals list

Drafting RFCs and pushing them through internals is an exhausting process. Several PHP contributors have suddenly stopped contributing to the project after successfully getting an RFC passed, due to them being entirely fed up.

One of the things that is tiresome is people contacting the RFC author through  communication channels (other than the PHP internals list), particularly when what they are going to say is either negative or even just based on not understanding part of the RFC.

There is a difference between giving positive feedback and negative feedback. And there is a difference between giving feedback to someone you have communicated with many times before, and contacting someone for the first time.

It's hard to draw an exact line of where communication is fine to go off-list, and where it should stay on list. But here are some examples:

 "You are awesome for writing such an amazing RFC" - fine to send off-list.

"I found some typos in the RFC" - probably fine to send off-list, particularly if you communicate with the RFC author already.

"Please can you answer this question about the RFC" - possibly fine to send off-list, but only if you know the RFC author already.

"The RFC is a terrible idea for these reasons" - should only be sent via the list. 

As I said, I'm posting this now to start the conversation, but any formal approval 

cheers
Dan


*insert full rfc etiqutte text here*



New SAPI reason

Ticks is dumb, and I hate the way Github cross links stuff.

https://externals.io/message/114368

To cross post a comment from the PR, in
php/php-src#6967 (comment) someone
mentions that they intercept and rewrite all included files to add
declare(ticks=N) in order to perform memory usage / performance monitoring.

In the same thread someone points out that there is a WordPress proflinig
plugin using the same approach:
php/php-src#6967 (comment)

I think I'm going to withdraw this RFC. Keeping this functionality is not a
particularly large burden on us, and some people are getting some use out
of it, even if those uses are rather ... adventurous.

PHP 7.4 LTS

PHP 7.4 LTS

It is quite likely that there will be a wish for PHP 7.4 support to happen for longer than the core PHP project wishes to maintain.

If some group could be found or formed, to do the work of maintaining PHP 7.4 separate to core PHP, there is enough time for a LTS version to be organised.

Anyone looking to take part in that work should feel free to leave their contact details here. I will also try to collate volunteer info from other sources e.g. PHP internals.

The aim is to make it possible for interested parties to find each other, rather than a personal desire to be involved in that work myself.

RFC Etiquette - missing end of sentence

Line 28 is missing the end of the sentence:

While that sounds reasonable on the surface, the amount of time people have to work on PHP RFCs is often limited. Having someone tell you "thanks for volunteering, but now I want you to do a lot more work than you volunteered for" is subtle way o

I'd PR a fix but I'm honestly not sure what the end of the sentence was going to be.

Thanks for creating this resource!

end goal: static binaries.

I've also found that servers written in ways that can be deployed as static binaries tend to require less maintenance than those with more complicated deployment setups. I have around five server-years of experience running this style of software (static binaries using SQLite deployed behind

chained comparison

RFC name

Python allows this:

if (0 <= x <= 10) {...}

** Summary **

It's nice as it reads nice, but also avoids a problem. That code is equivalent to:

if (0 <= x && x <= 10) {...}

But imagine we had:

if (0 <=foo() <= 10) {...}

and foo() had side-effects then the equivalent code:

if (0 <= foo() && foo() <= 10) {...}

is calling foo() twice. The workaround of:

y = foo()

if (0 <= y && y<= 10) {...}

is even jankier.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.