Hi Francois,

Between my day job and my local user group meetup, I haven't had as much 
time as I'd like to read and respond to this. You've got some great 
suggestions here, though, so I'm going to rush through and add some 
thoughts before I go to bed.

On 16 February 2015 at 15:31, François Laupretre <franc...@php.net> wrote:

> > De : Rowan Collins [mailto:rowan.coll...@gmail.com]
> >
> > Saying "that's enough" isn't even a productive comment. Enough what?
> > What is it you are asking to happen next?
>
> Maybe an initiative to write an RFC about the rules we should follow when 
> writing to the list. People who agree could show their support by a vote. 
> The vote would never end and would just mean 'I agree and will try to 
> follow these rules'. It probably already exists somewhere but refreshing it 
> wouldn't be useless. It's purely symbolic but, once people explicitly show 
> strong support, it becomes an opposable reference.
>


I think this would work best if it focused on positive statements that 
everyone should do more - the risk with listing bad things is people can 
start throwing them at each other as yet more noise, further distracting 
from the real aim of the conversation.

A regular reminder could perhaps be useful; I've thought before about an 
FAQ for the list, posted every month as was (I believe) traditional on 
Usenet. A section of that could include succinct reminders of the list's 
rules, as currently set out in the README file (sorry, I don't have the 
link to hand).

 

> > - There is a lack of expertise at the core level of the code, so
> > collaboration on each feature is low. RFCs tend to have a single
> > sponsor, who has to see the whole process through to the end.
>
> - One thing we can encourage, while indirect in this case, is writing more 
> comments in code. With PHP 7, Sara's book is almost unusable and nobody 
> will write another one soon. 'UPGRADING' and friends are fine but far from 
> sufficient, especially for newcomers. The only solution I imagine is adding 
> comments in the code. I know it is annoying when you don't have much time, 
> but comments can be improved at any time. They can be written by the 
> feature author, but also by other people, who needed a (too) long time to 
> understand a feature, and write explanations to help followers. As an
> example, I spent some time understanding the multi-level architecture of 
> str_[i]replace functions and added a lot of comments along with the patch I 
> will propose. Actually, everywhere you spend time understanding what's 
> going on, more comments are needed. That's really important because, today, 
> the code contains almost no comments except function prototypes. That’s ant 
> work and I am far from perfect about comments in my own code, but it can 
> make a difference, especially making the project more attractive for 
> newcomers (and we *need* new blood).
>

 
This is a great suggestion, and one even I could have a go at - I don't 
really know enough of the core to suggest changes, but occasionally spend time 
reading it and trying to learn. If I sent in a Pull Request with nothing but 
comments, someone might even correct my understanding by improving the content, 
and it would be a double win.


- We also can encourage co-authoring RFCs. People are used to work alone 
> but it can change if there's a will.

Agreed.

> We can also find a set of skilled 
> volunteers agreeing to give their opinion on RFCs before they're announced 
> on the list. That's just an opinion but it can avoid the discussion going
> nowhere from the beginning.

I think this happens a bit behind the scenes - things have sometimes been 
talked over on IRC or something first. But perhaps it needs to be more visibly 
summarised - start the process with a summary of points already raised, and, 
importantly, acted on.


> > - 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. 


The problem lies in detecting/defining the consensus before the vote takes 
place. Some say the typehint RFC should not have been voted on in its current 
form due to lack of consensus, some that it should have been voted on in an 
earlier form, which Andrea felt lacked consensus. So we don't even have a 
consensus on how to spot a consensus. I don't know how to get out of that 
Catch-22.


> > - 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.


I think the current RFC template encourages the votes to happen in one go, as 
does the index by status. Perhaps to encourage multiple votes (and 
collaboration), we could come up with additional headings for the drafting 
stages.


> Considering the final vote, that's normal to demand a proof of concept
> patch, as the feature implications are generally not clear (even in 
> author's mind). But the final vote does not require the final PR to be 
> completed. The same for documentation. You just need to prove that your 
> future changes won't create side issues that couldn't be discussed. That's 
> quite understandable and that's a point the scalar type hints RFC was 
> failing because the vote would have ended with a lot of remaining open 
> issues.


I think if there was more precedent for voting during refinement of the 
feature, the scalar typehints vote wouldn't have been labeled "final" (indeed, 
that label is only implied and assumed because there aren't any non-final 
votes).

An alternative, sort of coming back to the idea of multiple authorship, would 
be to have "amendments", as found in parliamentary procedures. So that a series 
of short votes, proposed by different people, could refine the text of the RFC, 
which would then be voted on as a spec. I'm not sure how well this would work, 
but thought I'd mention it in case someone wants to ponder it further.


> > - The internals list is quite high-volume, and the same points end up
> > being raised multiple times, so a feature sponsor has to give the same
> > counter-point or explanation each time.
>
> That's the main issue to the RFC process, IMO, and I'd really favor 
> switching to a more elaborate system. It was often said but it's a pity 
> that a language like PHP, which runs so many high-level collaborative 
> environments, uses such archaic tools for its own purpose. Github provides 
> almost everything we need through issues (subscriptions/notifications, post 
> edition, links to PRs and code blocks, and more), and only lacks an usable 
> voting system. A lot of people are asking for it, but github is not very 
> receptive at user's requests. Maybe we can use it and keep the final vote 
> elsewhere, as the most important is the discussion. If everyone agrees, I 
> can try writing my next RFC this way (a wiki page containing just metainfo 
> and a link to the php-src github issue).


I've not used github enough to comment on whether it's suitable, but agree that 
it would be worth evaluating new tools. I think we need something that ties the 
discussion closer to the document, and separates sub-topics more readily than 
most email clients (GMail is particularly awful for navigating busy threads).

On the other hand, I think we should use the wiki more as a wiki - right now, 
it's a document repository running on wiki software, with rarely more than 2 
editors touching a page, particularly if it's an RFC. What if we allowed 
absolutely anyone to edit draft RFCs, in the spirit of the original Wiki? 
People could add "thread mode" sections on contentious issues, then refactor 
them into summaries of the main points, either reflecting consensus, or leading 
to an interim vote. 

Or at the least radical - remove the "author" and "version history" from the 
templates; those are document change control conventions, not collaborative 
editing ones. Instead, something like "primary sponsors" and, if really 
necessary, "major milestones".


> The mailing list should be restricted to questions and replies, announcing 
> new RFCs, and general discussion about PHP internals. As soon as an RFC is 
> published, it should evolve in its own space, and people interested in the 
> subject would explicitely subscribe to the discussion. Even the vote should 
> ideally take place only among subscribed people as there is no reason for 
> someone who did not follow the discussion to participate in the final vote 
> (but it will remain open).


That's an interesting way of looking at it, but there'd need to be some way of 
the discussion on these "breakout forums" making its way back to the main list 
in summary form, without it being yet another duty of the RFC sponsor. E.g. I'm 
not massively interested in DbC, but wouldn't want the whole thing to be 
discussed off-list, and land with a whole mass of dependencies and syntax 
extensions. Admittedly, this already happens if I don't skim-read the relevant 
thread, but it would be nice if it was easier to jump in, not harder.


> > Most of these don't have easy solutions, but hopefully they're specific
> > enough points that we can come up with some concrete ideas on how to
> > improve things.
>
> This post is way too long but that's just ideas. If you think some may be 
> worth starting a separate thread, just tell me.


Again, thanks for the ideas, and I'm sure I'll have more to say on this as and 
when I get time.

Regards,
-- 
Rowan Collins
[IMSoP]

Reply via email to