Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:107196 Return-Path: Delivered-To: mailing list internals@lists.php.net Received: (qmail 89717 invoked from network); 17 Sep 2019 22:25:38 -0000 Received: from unknown (HELO php-smtp3.php.net) (208.43.231.12) by pb1.pair.com with SMTP; 17 Sep 2019 22:25:38 -0000 Received: from php-smtp3.php.net (localhost [127.0.0.1]) by php-smtp3.php.net (Postfix) with ESMTP id 881A82D1FD9 for ; Tue, 17 Sep 2019 13:02:51 -0700 (PDT) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on php-smtp3.php.net X-Spam-Level: X-Spam-Status: No, score=-2.0 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,HTML_MESSAGE,RCVD_IN_DNSWL_NONE, SPF_HELO_NONE,URIBL_BLOCKED autolearn=no autolearn_force=no version=3.4.2 X-Spam-ASN: AS3215 2.6.0.0/16 X-Spam-Virus: No Received: from mail-io1-xd2c.google.com (mail-io1-xd2c.google.com [IPv6:2607:f8b0:4864:20::d2c]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by php-smtp3.php.net (Postfix) with ESMTPS for ; Tue, 17 Sep 2019 13:02:51 -0700 (PDT) Received: by mail-io1-xd2c.google.com with SMTP id f12so10554183iog.12 for ; Tue, 17 Sep 2019 13:02:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=hz+Oqi1VpnQuDVHmV9eXcL5cUd5wTobpJHEkohZEd4k=; b=I/uwqLX+R5ZXL++0YjdZdFbgYX/2xNORKEDIlmY8nm8UFLfJjl9i16Gy1V5RWjPgRA a5R8hfd6ZWXsyjG6P/b/58PBLXNEIq8sP5yydfu5vxDnfLtFJxYX2CNbAJt1mlmPxqMX 5DryMIAP45h6KsO2LsnbKfPPpzUNh7AeJNccCoDY/6OUwkRdMygbdcLZTvheND8zvS1K JX/q+1KnN0S6npI33yG19Km8JIsnkzVcYqHqo65tEw5CnV273YWeIay9GBw9WaTpGXuR 07rpOsSMJz8bHWJAYT58f20O24Q3TbCPrLKH+AqOuBXs6Xjs5Z7C3rnlv8RBvonbf8aw lCKg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=hz+Oqi1VpnQuDVHmV9eXcL5cUd5wTobpJHEkohZEd4k=; b=dw3DY1/7NdEm7j/KEQ+c0+6Kmd+zlUs6FRRsqr2JzhPQxlNbXnez+tYDYQMgY1lVNZ bX19kXB2QPgr0PgW3eGLMxYyDpw9WqFaEuCVtEqI4g62PQYTNuRbOeN33lhb7aB2LG7H KSTW+KTz9DzM2E1VlwL30GnPrCI6VINAI0vjd3J2Swz1sqk7bN7dlhGgLkcb1gvpuyVH ej+3jsYrXQzRT7uaA2JKcf6YKV5q4akl/ZzpHnI3DXrFabOSNmFH71kKTkkQJXsViShf ZYvaZpdYBKIVPvgXQgXdF+U+aGc24aeIFGYQpavBI1Tskj5GXBaMUdZM1UP3JuFShEmr YeyQ== X-Gm-Message-State: APjAAAVUrkyOez34YMzVQYjTDe3eJzl/GDHBF6BubYE4hu34YjVkHkwy fI55kcm66u0GczyCY0MeIW8GQo8S8uTVoqODR04= X-Google-Smtp-Source: APXvYqykCUIsjuBexvHxUdd4U7QwkQHkuk4Uv7NUnhCAEOoGohnUK9IkZ+X9VPkN+RSoTNTlBOqo5j6mjqUhgyb9xeY= X-Received: by 2002:a02:7797:: with SMTP id g145mr343248jac.60.1568750570038; Tue, 17 Sep 2019 13:02:50 -0700 (PDT) MIME-Version: 1.0 References: <6067334c-b327-9ad7-aff3-11f3208813ee@gmail.com> <4f3978bc-a362-4424-a8aa-7258794e5c8b@www.fastmail.com> In-Reply-To: Date: Tue, 17 Sep 2019 23:02:24 +0300 Message-ID: To: Zeev Suraski Cc: Larry Garfield , php internals Content-Type: multipart/alternative; boundary="00000000000077f09e0592c53481" X-Envelope-From: Subject: Re: [PHP-DEV] Defining the PHP Group From: drealecs@gmail.com (=?UTF-8?Q?Alexandru_P=C4=83tr=C4=83nescu?=) --00000000000077f09e0592c53481 Content-Type: text/plain; charset="UTF-8" Thank you Zeev, I would say it's something to start a more productive discussion. Maybe not everybody would agree from the start with what you mentioned but after resonable talks, it would get to some common conclusions. If I were to summarize, there needs to be defined the voting process for: 1. RFCs for new features or changes with no or very small BC breaks. 2. RFCs for new features and changes with small BC breaks and/or breaks that can be fixed with ease. 3. RFCs for new features and changes with medium BC breaks and/or breaks that can be fixed with some effort. 4. RFCs for how voting process takes place including structural or governance change. For now, possibly the 1. and 2. voting can stay at 2/3. Voting for 3. can be moved to 4/5 or higher. Voting for 4. can be moved to 6/7 or higher or can be splitted if different acceptance would be required after discussion. That's closer to consensus. One other thing to define would be who is the PHP group and who are the voting members. This can be something based on code activity in the last 4, 5 years or someting similar, top 30/40 persons by number of commits/lines changed/something measurable. As Rasmus put it, "The people writing the code get to call the shots, for better or worse." And to have relevant people for voting, they can vote somehow on another 15/20 persons from relevant companies/frameworks. Now it would be great if someone would take the time to draft a proposal of defining what's not defined, of course with more relevant options and numbers as I don't think I have proper expertise here. And of course including all the other details about how a RFC should look like for each type. Let's try as much as possible to be constructive as otherwise everybody has something to lose. Thank you, Alex On Tue, Sep 17, 2019 at 6:42 PM Zeev Suraski wrote: > On Tue, Sep 17, 2019 at 3:32 PM Larry Garfield > wrote: > > > Simple question for those that keep arguing that the RFC process is only > > applicable to a certain subset of issues: > > > > OK, so what's the alternative? > > > > If we wanted to make a structural or governance change to PHP, what is > the > > process? > > If we really did feel there was a reason to make a fundamental change to > > the language (whatever that means), what is the process? > > If we wanted to change the RFC process, what is the process? > > If we don't have those, and want to set them up, what is the process for > > defining the process? > > > For the first and last one (which are kind of the same) - the answer is > simply the (informal) process we had before the RFC process was enacted. > That effectively meant consensus based decision making. > Since we have a lot more people today, we can and probably should reuse the > voting mechanism, and a pass would have to look along the lines of this: > > https://web.archive.org/web/20120527111218/https://wiki.php.net/rfc/voting/vote > > or > https://wiki.php.net/rfc/abolish-short-votes > > If you look at all the 'Process and Policy' RFCs we've voted on, other than > a couple that are miscategorized technical RFCs - they virtually all > cleared a 15 to 1 bar, most of them well above that. When changing the > rules - or extending the scope of the RFC process to handle things it never > has before, this is what it takes. We haven't implemented any rules that > bind everyone without that level of widespread agreement to this date. > > Consensus based decisions would work for the 3rd one as well and would > probably be the simplest to enforce. It may be that for RFCs that place > new limits on it (like the recent Abolish votes) a 2/3 bar would suffice - > although I think it's healthy for everyone that the ratio that was reached > was more along the lines of 20 to 1 than 2 to 1, in terms of everyone > accepting the validity of the policy change (including the fingerful who > voted against). But since determining whether a policy RFC falls in that > category or not can in itself be challenging, having a single, clear high > bar for introducing both changes to the Voting RFC, as well new policy > rules, would probably be the simplest and probably healthiest outcome. > > Regarding the 2nd (fundamental / high impact changes) - the solution here > too would be consensus based decision making. That's the bar we cleared in > previous major changes - the deprecation of register_globals, magic_quotes > and safe_mode. Now, I think Nikita does have a point that defining what > constitutes a 'high impact' break vs. one that isn't very easy - especially > in a formal manner. So it may make sense to have a single bar for all > compatibility breaking changes, instead of a separate one for high impact > ones and low impact ones. The solution might be to simply gauge the level > of caring through the number of voters who took the time to vote. For > instance, a change proposal that garnered 10 votes, 7 to 3, is probably not > a high-impact one and it may be reasonable to accept it even if it only > cleared a 2 to 1 ratio. A change proposal that garners 50 votes and is 35 > in favor and 15 against (exactly the same ratio, but with a lot more > voters) - is most probably a high impact one, and should clear a much > higher consensus-level bar. In the meantime, formality aside, it's easy > enough to 'know it when you see it'. I don't think anybody contends that > changing our undefined variable behavior or deprecating short tags are > high-impact breaks - in terms of the lines of code in the combined > universal PHP code base that would have to be changed as a result. > > Other than the higher bar - I think such proposals should be required (or > at the very least encouraged) to do a better impact analysis regardless. > They should be tested on a set of apps (one that will attempt to represent > the PHP codebase at large, not just the cutting-edge framework > development), and the results should be available as a part of the RFC. > Even if we can't formally compute from that data whether it constitutes > high-impact or not, having that data as a part of the RFC will likely help > voters determine their opinion on it - first at the level of whether they > care or not, and secondly - whether they're in favor or not. This will, in > turn, effect voter turnout - and help determine whether this is indeed a > major change or not. > > In addition, I don't think we should be grouping any deprecations together > into a single vote - unless that's absolutely required from a technical > standpoint (i.e. doing one without the other would lead to an > inconsistency). With the recent engine errors reclassification RFC, > initially - the deprecation of default values for uninitialized variables > wasn't even viewed as a very big deal and was grouped with the rest. It's > true that this quickly became apparent and Nikita separated it after a > couple of days - but I think that should be a requirement, and not up to > the RFC author. I also agree with Christian - the fact that this > deprecation was by far the biggest one - basically distracted everyone > (myself included) from discussing the smaller ones. This means that while > there are probably some issues with some of the other, smaller changes - > the fact they're lumped together with others which are harmless, and the > fact there was practically no discussion over any of them - means it's all > too easy to vote in favor of changing the entire group. Combined with no > impact analysis being available for each proposal - it's very likely that > there's 'herd mentality' happening there. Putting each in a separate vote > would have likely not thoroughly solved this, but it would have probably > been a good first step, allowing more granular choice. I think that this > particular change (requiring separate votes for each change) can be done > relatively easily within our existing framework - similar to the Abolish > RFCs, if there's widespread agreement. In the context of Ben's email from > a few weeks ago, I'll defer to someone else to propose it if they think it > makes sense. > > Zeev > --00000000000077f09e0592c53481--