> On Jul 20, 2021, at 9:39 AM, Rowan Tommins <rowan.coll...@gmail.com> wrote: > > When decisions are just a matter of bikeshedding, or deciding what "style" > the language should have, there is a strong argument for general democracy, > and a strong voice for those who use the language. > > But some decisions have more fundamental impact on the implementation itself > - highly technical features like JIT or Fibers, or conceptually simple > features with complex implementations like Intersection Types. The concern is > that the small number of people who understand those consequences will be > out-voted by people "voting with their heart" because they like the idea of a > feature. > > Those core contributors are then expected to maintain the resulting code, > with little help from those who wanted the feature. Hence the suggestion, not > of an "elite", but of some sort of "meritocracy", where that knowledge > carries some weight. > > > Perhaps we need a more revolutionary re-organisation into two separate voting > groups: > > * a very open community vote, to indicate a breadth of support for the > direction a change takes the language > * a group of Core Contributors, much smaller than the current voting pool, > who are equipped to judge the impact of the implementation
This is an excellent observation, and encapsulates why some of the RFC outcomes might feel a bit mismatched with what many people want and/or what seems to make the most sense for PHP from a core maintenance perspective. > An RFC could require separate approval from both groups, regardless of number > of voters, like a parliament with two chambers. But I'm not sure having two houses that can both veto a a solution would improve things. I think it would just make it worse. If there was the Userland House and the Core Contributor Senate then that would mean that things in your category of bike-shedding could still be blocked by the Core Contributors even if 99% of userland developers loved an idea. Instead maybe we should consider those known and respected because of their continuous core contributions ("Core Contributors") have the ability to veto an RFC if it treads into core territory? BTW, "membership" in Core Contributors would be managed informally within the group of people. Once the initial group was recognized they would handle adding new people to the group and/or ejecting existing people completely among themselves and then one of them would announce any updates to the list. Consider if Core Contributors are allowed to classify an RFC as a "Core-related" concern, such as 1.) a core maintenance concern and/or 2.) a future-compatibility concern? And if it is one of those two, then Core Contributors could request a veto vote. I think we could assume they would only do this in good faith because of the potential for damage to their reputations if they were to operate in bad faith. When an RFC is being discussed a Core Contributor could simply stating their belief it is Core-related and if two other Core Contributors seconded that concern then the RFC would be susceptible to a potential veto vote and the RFC author would be required to mark it as such. Classifying as Core-related should happen during discussion period and before the vote starts, and especially not after a main vote has passed. (However if it gets contentious then three (3) Core Contributors could band together and simply update the RFC to be Core-related; their view on this would be final. But I doubt that would ever be needed because an author arguing against Core Contributors in this way would mean the RFC would probably be voted down anyway.) Then for voting: 1. If an RFC is *not* Core-related then everyone gets to vote just as before, but maybe voting access becomes more open and more democratic? 2. If an RFC *is* Core-related then the same vote occurs but if is passes then three (3) Core Contributors can request to have a Core Contributor-only vote which will require a 2/3rd majority to pass. If this vote fails to gain 2/3rd majority approval of the Core Contributors then the RFC is considered "Vetoed." The benefits could potentially be: 1. Ensure even if a feature is desired by userland we could still guard against approving features that would be a maintenance problem or that could paint PHP into an evolutionary corner. 2. Lowering the bar for voting rights because voters couldn't do damage to core-related concerns. 3. Possibly gain more participation from userland 4. An increase in userland satisfaction from either being allowed to participate or for the broader community getting more features userland developers want. 5. Very little change procedurally, except to formally recognize the Core Contributors separately from others, and giving them the ability to call for a veto vote after an RFCs that were previously tagged as core-related passed. BTW, rather than calling it "bikeshedding" we might characterize it more charitably as "style-based," where "style" refer to the realm of userland developer-experience. What do you think? Most specifically I would like to hear from those who know they would be in the category of Core Contributors who would get a veto they currently do not have on core-related concerns, but who would also potentially see their vote on opinion-based RFCs diluted. -Mike