[RFC] abolish narrow margins

php.internals

Joe Watkins

8 years ago
Afternoon internals, I'd like to bring https://wiki.php.net/rfc/abolish-narrow-margins to vote in the very near future ... We discussed it a year ago, and discussion died down to nothing (possibly because it was sidetracked); If there are no objections I'll bring it to vote in the coming days ... Cheers Joe

Sara Golemon

8 years ago
On Wed, Jul 11, 2018 at 12:41 PM, Joe Watkins <krakjoe@php.net> wrote:
> I'd like to bring https://wiki.php.net/rfc/abolish-narrow-margins to vote > in the very near future ... > > We discussed it a year ago, and discussion died down to nothing (possibly > because it was sidetracked); If there are no objections I'll bring it to > vote in the coming days ... >
"The current political climate of Earth shows us that votes that are won by narrow margins build resentment among voters, can lead to instability in the ecosphere, and could be considered harmful to democracy." Snicker... I want to vote for this purely to make that sentence part of our bylaws. In all seriousness though, I'm in favor of this. 66.666% isn't an unreasonable bar. If you can't get 2 out of 3 people to think your idea makes sense, then it might need work. -Sara

Paul M Jones

8 years ago
> On Jul 11, 2018, at 12:10, Sara Golemon <pollita@php.net> wrote: > > On Wed, Jul 11, 2018 at 12:41 PM, Joe Watkins <krakjoe@php.net> wrote: >> I'd like to bring https://wiki.php.net/rfc/abolish-narrow-margins to vote >> in the very near future ... >> >> We discussed it a year ago, and discussion died down to nothing (possibly >> because it was sidetracked); If there are no objections I'll bring it to >> vote in the coming days ...
Since you brought it up ...
> "The current political climate of Earth
It's probably less "Earth" and more "Western civilization."
> votes that are won by narrow margins build resentment among voters
Well, certainly among some. I have to wonder if this is a reference to the author's favored political outcomes being thwarted.
> can lead to instability in the ecosphere
The "ecosphere" of Earth? That's an interesting assertion. I wonder if it's true.
> and could be considered harmful to democracy.
There's a long list of things that "could be considered harmful to democracy." In any case, are we turning this list into a political forum? Because I for one can do without it here. I find it in plenty of other places. I don't have any more to say on that aspect of this topic right now, unless and until someone else here sees fit to continue it -- in which case, I'll be happy to respond.
-- Paul M. Jones pmjones@pmjones.io http://paul-m-jones.com Modernizing Legacy Applications in PHP https://leanpub.com/mlaphp Solving the N+1 Problem in PHP https://leanpub.com/sn1php -- Paul M. Jones pmjones@pmjones.io http://paul-m-jones.com Modernizing Legacy Applications in PHP https://leanpub.com/mlaphp Solving the N+1 Problem in PHP https://leanpub.com/sn1php

Stas Malyshev

8 years ago
Hi!
> We discussed it a year ago, and discussion died down to nothing (possibly > because it was sidetracked); If there are no objections I'll bring it to > vote in the coming days ...
I tend to agree with the sentiment, but not 100%. I think there are two kinds of changes - one kind is more fundamental than the other. I.e., if we add a major feature to the language (like strict type checks, for example) it is going to have major influence on the language and virtually everybody using it. You can't just ignore it. This also goes to changes which alter ways that the syntax works, etc. which have potential to break existing code (even if it's bad code, still). Then there are more "neutral" changes - like adding an utility function or an option to a function. PHP has a lot of "syntax sugar" functions and sometimes even "kitchen sink" functions - ones that most people don't use but some do. Having one more would not be that big of a deal - that's where, unlike the above, "what you don't use doesn't hurt you" is true. You probably have guessed already what I am getting at - the second kind is probably OK to have 50%+1, since people that don't need this option/function can vote no but still we can have it if more people do. The counter-argument could be that people that don't need it can just avoid voting, but then we don't have clear boundary between "I don't think it's useful for enough people to add it" and "I am on vacation and haven't bothered to even have an opinion". That said, I'd love to see how many of the accepted RFCs we have now were actually accepted by margin between 50%+1 and 2/3 and what they are, if the number is very low maybe it's irrelevant. Unfortunately I don't have time to do it myself soon, but it would be super-awesome if somebody did. P.S. The question of quorum is interesting to explore, though I am not sure how we figure out the numbers.
-- Stas Malyshev smalyshev@gmail.com

Levi Morrison

8 years ago
On Wed, Jul 11, 2018 at 12:19 PM Stanislav Malyshev <smalyshev@gmail.com> wrote:
> > Hi! > > > We discussed it a year ago, and discussion died down to nothing (possibly > > because it was sidetracked); If there are no objections I'll bring it to > > vote in the coming days ... > > I tend to agree with the sentiment, but not 100%. I think there are two > kinds of changes - one kind is more fundamental than the other. I.e., if > we add a major feature to the language (like strict type checks, for > example) it is going to have major influence on the language and > virtually everybody using it. You can't just ignore it. This also goes > to changes which alter ways that the syntax works, etc. which have > potential to break existing code (even if it's bad code, still). > > Then there are more "neutral" changes - like adding an utility function > or an option to a function. PHP has a lot of "syntax sugar" functions > and sometimes even "kitchen sink" functions - ones that most people > don't use but some do. Having one more would not be that big of a deal - > that's where, unlike the above, "what you don't use doesn't hurt you" is > true. > > You probably have guessed already what I am getting at - the second kind > is probably OK to have 50%+1, since people that don't need this > option/function can vote no but still we can have it if more people do. > The counter-argument could be that people that don't need it can just > avoid voting, but then we don't have clear boundary between "I don't > think it's useful for enough people to add it" and "I am on vacation and > haven't bothered to even have an opinion".
If it's a utility function and somehow ~49% of voters oppose it... think about that. It's 49% objectionable! I don't think that should pass, not even for a utility function people.
> That said, I'd love to see how many of the accepted RFCs we have now > were actually accepted by margin between 50%+1 and 2/3 and what they > are, if the number is very low maybe it's irrelevant. Unfortunately I > don't have time to do it myself soon, but it would be super-awesome if > somebody did.
I did this analysis in the past. There are very few RFCs that passed in this window between 50%+1 and 2/3, but there are a few. The array_key_first/last RFC is on track to pass in this region.

Christoph Becker

8 years ago
Am 11.07.2018 um 20:18 schrieb Stanislav Malyshev:
> That said, I'd love to see how many of the accepted RFCs we have now > were actually accepted by margin between 50%+1 and 2/3 and what they > are, if the number is very low maybe it's irrelevant. Unfortunately I > don't have time to do it myself soon, but it would be super-awesome if > somebody did.
See <https://www.mail-archive.com/internals@lists.php.net/msg82852.html> and particularly <bit.ly/php7rfcs>.
-- Christoph M. Becker

Sara Golemon

8 years ago
On Wed, Jul 11, 2018 at 5:12 PM, Christoph M. Becker <cmbecker69@gmx.de> wrote:
> and particularly <bit.ly/php7rfcs>. >
Interesting, better than I'd thought actually. It's odd that the 64bit stuff was the one that was < 2/3rds. iirc the only honestly contentious thing about that was the potential to break existing extensions (which php-ng pretty did anyway). I know there was concern about those two having to merge, and I know I fell on the side of the one that was developed more publicly, but it still seems like a no-brainer to me. I don't remember the specifics about integer semantics (which fell precisely on 2/3 and thus would have failed the +1 check), but again I'll offer than perhaps both needed more discussion, and maybe shouldn't have passed. *shrug* -Sara

Andrew Faulds

8 years ago
Hey Sara, Sara Golemon wrote:
> > I don't remember the specifics about integer semantics (which fell > precisely on 2/3 and thus would have failed the +1 check), but again > I'll offer than perhaps both needed more discussion, and maybe > shouldn't have passed. *shrug* > > -Sara >
2/3+1 is silly, though. 2/3 already means there's twice as many agreeing as disagreeing, having +1 doesn't serve the tie-breaking function there that it does for 50%+1. But that was indeed a knife-edge RFC, it was actually saved by someone chosing to vote Yes at the last minute.
-- Andrea Faulds https://ajf.me/

Sara Golemon

8 years ago
On Wed, Jul 11, 2018 at 7:10 PM, Andrea Faulds <ajf@ajf.me> wrote:
> 2/3+1 is silly, though. 2/3 already means there's twice as many agreeing as > disagreeing, having +1 doesn't serve the tie-breaking function there that it > does for 50%+1. But that was indeed a knife-edge RFC, it was actually saved > by someone chosing to vote Yes at the last minute. >
I can buy that argument, but since there IS room to disagree, then such should be spelled out clearly in the voting update RFC. Let's decide and not leave it to subjective interpretation. -Sara

Joe Watkins

8 years ago
Zeev,
> I think our voting rules are in need of a much thorough review than just
pushing the limit to 2/3 - which also IMHO doesn't tackle the difference scenarios that exist out there. Agree, they need reform, but rather than trying to discuss and pass a monolithic RFC that tries to solve all problems, I chose (a year ago) to start here; Simply raising the bar simplifies the rules we currently have and so simplifies their reform (in detail and process). I'm not following your logic for further delaying voting on this RFC, in fact I don't see any logic, just an assertion ;) Cheers Joe On Thu, Jul 12, 2018 at 2:22 AM, Sara Golemon <pollita@php.net> wrote:

Zeev Suraski

8 years ago
On Thu, Jul 12, 2018 at 7:38 AM Joe Watkins <pthreads@pthreads.org> wrote:
> Zeev, > > > I think our voting rules are in need of a much thorough review than just > pushing the limit to 2/3 - which also IMHO doesn't tackle the difference > scenarios that exist out there. > > Agree, they need reform, but rather than trying to discuss and pass a > monolithic RFC that tries to solve all problems, I chose (a year ago) to > start here; Simply raising the bar simplifies the rules we currently have > and so simplifies their reform (in detail and process). >
I think the problem is that there are cases where a 2/3 vote (or a vote at all) doesn't make sense. True, we didn't have too many of those in the past - but as we reform, I think it's important to take note of them. Things which don't effect the language, but are more of a question of preference - e.g., the decision to name phpng as PHP 6 vs PHP 7 - or for that matter, deciding about a different release cadence. It's one thing to add a language construct, to change the behavior of a function or to add/remove an extension - this bubbles into people's code and we'd have to live with this decision and its implications even in a decade's time - while we can change our release cadence 3 times in between (if we wanted to), and obviously whether phpng ended up being called PHP 6 or PHP 7 had no technical meaning, only a 'marketing' one. Then there are also implementation decisions - where things in the past have been a bit unclear - and I think it's needed to clarify that such decisions (including substantial refactoring, as long as there's no negative end-user impact) should not require voting, but are up for the folks actually maintaining that particular piece of code to decide. So while I think non 2/3 votes would be uncommon, I do think we need to have provisions for them - and voting to make everything 2/3 right now without discussing the wider scope is wrong IMHO. Also while generally I very much agree with the 'agile' sentiment of fixing things gradually instead of in one monolithic step - our voting rules are so lacking that it feels like putting a band aid on a gunshot wound... By the way, I still think there's a lot of work that still needs to happen on my proposal - perhaps factor in quorums, how votes relate to deadlines - we can probably learn quite a bit from our experience including in recent weeks - but I think it's mature enough for others to comment on it, and I would be very happy for others to join me in drafting it. I'm not following your logic for further delaying voting on this RFC, in
> fact I don't see any logic, just an assertion ;)
Here's one example of our lacking rules (IMHO of course) - this has been in the attic for just under a year, and now we're considering to just move it to a vote within days. I don't think that should be possible :) The way I see it, the voting period has to happen immediately after the mandatory discussion period - and in a very predictable manner . If an RFC goes dormant, there should be a new discussion period prior to voting. On my logic for not dealing with it right now, it's twofold: 1. There's too much activity going on around last minute 7.3 RFCs for many people to have the bandwidth to discuss it in a serious manner. 2. It seems wrong to change the rules mid-flight in a way which might affect the current 7.3 votes which are already under way (not that I think it will affect most of them - but it still seems wrong). Sorry for not actually mentioning that previously :) Zeev

Christoph Becker

8 years ago
On 12.07.2018 at 10:10, Zeev Suraski wrote:
> I think the problem is that there are cases where a 2/3 vote (or a vote at > all) doesn't make sense. True, we didn't have too many of those in the > past - but as we reform, I think it's important to take note of them. > Things which don't effect the language, but are more of a question of > preference - e.g., the decision to name phpng as PHP 6 vs PHP 7 - or for > that matter, deciding about a different release cadence. It's one thing to > add a language construct, to change the behavior of a function or to > add/remove an extension - this bubbles into people's code and we'd have to > live with this decision and its implications even in a decade's time - > while we can change our release cadence 3 times in between (if we wanted > to), and obviously whether phpng ended up being called PHP 6 or PHP 7 had > no technical meaning, only a 'marketing' one. Then there are also > implementation decisions - where things in the past have been a bit unclear > - and I think it's needed to clarify that such decisions (including > substantial refactoring, as long as there's no negative end-user impact) > should not require voting, but are up for the folks actually maintaining > that particular piece of code to decide. > So while I think non 2/3 votes would be uncommon, I do think we need to > have provisions for them - and voting to make everything 2/3 right now > without discussing the wider scope is wrong IMHO.
Perhaps the most important factor is whether we actually *change* something (e.g. new feature, deprecation, voting process), or whether we merely have to make a decision about something that is not covered by existing rules (e.g. next version 7.4 or 8). Of course, that's still somewhat vague, but might be a good rule of thumb.
> Here's one example of our lacking rules (IMHO of course) - this has been in > the attic for just under a year, and now we're considering to just move it > to a vote within days. I don't think that should be possible :) The way I > see it, the voting period has to happen immediately after the mandatory > discussion period - and in a very predictable manner . If an RFC goes > dormant, there should be a new discussion period prior to voting.
ACK. In my opinion, we would profit from a more structured and automated RFC solution. As it is now, the administration of the RFCs need too much manual intervention. For instance, marking an obviously inactive RFC as such, requires to manually edit the RFC overview, *and* to modify the status on the actual RFC. Also it would be benefitial, if votes closed automatically on the scheduled end date. Or regarding this very case: if there are no further replies to the RFC discussion thread for a week or so, the RFC should automatically moved to “inactive”, if it hasn't been moved to voting in the meantime.
-- Christoph M. Becker

Stas Malyshev

8 years ago
Hi!
> Things which don't effect the language, but are more of a question of > preference - e.g., the decision to name phpng as PHP 6 vs PHP 7 - or for > that matter, deciding about a different release cadence. It's one thing to
That's one of the places where 50% or plurality vote would be appropriate - when we have binary (or n-ary) choice for some decision that has to be taken. We don't want to end up in an absurd situation of not choosing any name or any release date because none of the options has 2/3. So in this situation, I think we go with the majority or plurality (in case of multiple options) vote.
-- Stas Malyshev smalyshev@gmail.com

Levi Morrison

8 years ago
On Thu, Jul 12, 2018 at 12:11 PM Stanislav Malyshev <smalyshev@gmail.com> wrote:
> > Hi! > > > Things which don't effect the language, but are more of a question of > > preference - e.g., the decision to name phpng as PHP 6 vs PHP 7 - or for > > that matter, deciding about a different release cadence. It's one thing to > > That's one of the places where 50% or plurality vote would be > appropriate - when we have binary (or n-ary) choice for some decision > that has to be taken. We don't want to end up in an absurd situation of > not choosing any name or any release date because none of the options > has 2/3. So in this situation, I think we go with the majority or > plurality (in case of multiple options) vote. > > -- > Stas Malyshev > smalyshev@gmail.com > > -- > PHP Internals - PHP Runtime Development Mailing List > To unsubscribe, visit: http://www.php.net/unsub.php
I think for n-ary votes we need a different system. Only being able to cast one vote with winner takes all has a lot of downsides. I'm not sure what distinguishes binary votes that only need >50%. I don't think as simple as whether or not there is code involved; for example changing our RFC processes and such should require more agreement than that.

Stas Malyshev

8 years ago
Hi!
> See <https://www.mail-archive.com/internals@lists.php.net/msg82852.html> > and particularly <bit.ly/php7rfcs>.
Ah yes, thanks, I thought I remembered something like that. It's a bit old but still good. Looks like the number of RFCs that would suffer from move to 2/3 is very low, thus I think it's a good idea.
-- Stas Malyshev smalyshev@gmail.com

Zeev Suraski

8 years ago
> -----Original Message----- > From: Joe Watkins [mailto:krakjoe@php.net] > Sent: Wednesday, July 11, 2018 7:41 PM > To: PHP internals <internals@lists.php.net> > Subject: [PHP-DEV] [RFC] abolish narrow margins > > Afternoon internals, > > I'd like to bring https://wiki.php.net/rfc/abolish-narrow-margins to vote in the > very near future ... > > We discussed it a year ago, and discussion died down to nothing (possibly > because it was sidetracked); If there are no objections I'll bring it to vote in the > coming days ...
Last year I worked on a bigger rework of our voting rules that tackles this, among other topics - given the many deficiencies of the original Voting RFC (which was hastily drafted, approved with virtually zero discussion, and yet has been considered as some sort of constitution ever since). I admit I didn't have the mental strength to bring it up for discussion but I think our voting rules are in need of a much thorough review than just pushing the limit to 2/3 - which also IMHO doesn't tackle the difference scenarios that exist out there. I think it would make sense to start discussing that (as well as the abolish-narrow-margins RFC along with it if you prefer to put it to a vote) as soon as we're done with the 7.3 contents, and in preparation for 7.4/8.0 (i.e. around the September/October timeframe). We could of course start discussing it sooner, but at least I don't think it makes sense to vote on either of these right now. Zeev