On 02/16/2015 10:31 AM, François Laupretre wrote:

- The leadership of the language is left to consensus, so that when
consensus cannot be reached, someone has to take on the role of mediator
/ chairman / leader for the feature, and try to push through a compromise.
I have no democratic solution for this. In the PHP spirit, as Zeev explained, 
if the RFC process doesn't bring a consensus before the vote, the discussion 
should stop and the RFC should be modified. Trying to push it to a 2/3 approval 
while people are fighting is counter-productive. In this regard, IMO (and I 
told her), Andrea should have withdrawn her RFC much sooner. It would have 
allowed to take more time for building the next one, and start a new discussion 
in a more constructive atmosphere. Upcoming feature freeze was probably the 
reason but the result is that we need to restart everything from scratch in a 
bitter atmosphere.

To be clear: consensus is not leadership. Consensus cannot be leadership. So the statement "leadership of the language is left to consensus" is a very explicit and deliberate statement that the language has no leadership.

That is, as I understand it, by design. But let's not pretend otherwise. We have a leaderless language and development process, by design, with all of the negative side-effects that such a power-vacuum structure entails.

I'm not saying that as a criticism necessarily. It's just a fact, and we shouldn't pretend otherwise.


- The RFC process traditionally has only one voting phase, with a
Proof-Of-Concept patch completed, and voters expecting few
implementation details to change. So a lot of time has to be committed
to the details of a feature which might be outright rejected. It might
be more efficient if the principle of a change, details such as syntax,
and final implementation, could be considered separate phases.
That's the tradition but I think it is quite open for improvements. While we 
are traditionally using one final vote with multiple options, nothing refrains 
anyone to organize informative pre-votes during discussion to test the 
popularity of a feature before he starts writing code, clearly stating that it 
is not the final vote. This would allow a better information from the community 
to the RFC author. The interest of such running pre-votes is that they can 
contain many more options than the final vote and can be started and closed at 
anytime during discussion. The only requirement is that everyone understands 
that it in *not* the final vote.

The FIG ran into a similar issue a while back. The result is a somewhat different two-stage RFC process as described here:

https://github.com/php-fig/fig-standards/blob/master/bylaws/004-psr-workflow.md

It's imperfect, but it does provide extra structure that has been a huge improvement over the internals-like free-for-all that preceded it. In particular, it allows members to vote on the concept of a PSR before the implementation. IE, "do we want to have a spec dealing with HTTP messages" is a separate vote from "is this particular implementation of an HTTP message spec what we want to put our stamp on"?

Additionally, there's a separate spec and meta document. The meta doc is specifically for things like "Why did you do X instead of Y?" and "we rejected Z outright for these reasons". That said, people generally don't read the metadoc any more frequently than they read the same notes in Internals RFCs today, which often address the issue people are talking about for the 5th time. :-(

An exact replica of FIG's process is probably not going to fly for Internals for various good reasons, but it can hopefully serve as a source of ideas.

--Larry Garfield

--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to