# SIP simplified voting acceptance formula suggestion

Hello,

I first posted this issue on scala-sips google group. I understood from @jvican that SIP process discussion will be moved to dev.scala-lang.org, so I decided to move the discussion here. This post will also be used to clarify and compare the my formula to the pre-October meeting formula, and post-October meeting formula.

# Definitions

``````P = Number of votes in favor of a proposal.
N = Number of votes opposed to a proposal.
M = Total number of SIP committee members.
Q = Number of people in quorum (SIP meeting attendees).
We will treat Q as number of non-abstaining votes (either absent or abstaining),
So, Q == P+N
``````

# Existing acceptance formula (prior to October meeting)

The Committee will only vote on proposals if Committee members have the quorum.
The quorum is two thirds (2/3) out of the total number of members.

For a SIP to be accepted, it must fulfill two requirements:

• 70% of the quorum votes in favor of it.
• Martin Odersky does not veto it.

Formalizing this using the definitions above we get that for a SIP to be accepted, the following formulas must be true (neglecting the veto option):

``````Q/M >= 2/3
P/Q >= 70%
``````

As discussed during the October meeting and here, these regulations have the following problems (IIUC):

• Participants of a SIP meeting were not allowed to abstain. If youâre not for it, then youâre opposed to it.
• Not all committee members can attend always, and it affects the quorumâs capability to accepts SIPs.

# Post-October meeting formula

The committee decided to change the vote acceptance regulation to the following (IIUC):

• Allowed a committee member to vote even if did not attend the SIP meeting.

• Allowed a committee member to abstain from voting.

• Changed the formula to the following (watch Matinâs suggestion):

Q/M >= 2/3 (âtwo thirds of the vote castâ)

# New formula suggestion

`P - N > T`, where `T` is the threshold filter set by the committeeâs decision.
I suggest setting `T = M/2`

The logic behind this formula
Enough people should care to vote in favor, while not enough people care to vote against.
How much is enough? That is set by `T`!

Example
Committee of 8 (`M = 8`), so `T = 4`

• Proposal A: 4 persons in favor, none opposed, the rest have no opinion and abstain. The proposal is rejected.
• Proposal B: 5 persons in favor, none opposed, the rest have no opinion and abstain. The proposal is accepted.
• Proposal C: 5 persons in favor, 1 opposed, the rest have no opinion and abstain. The proposal is rejected.

Note 1 - The logic of Energy
This is a very strict rule for acceptance, but is logical. It is a sum of energies. How much energy people are willing to invest to fight for or against an idea. The sum must reach a certain threshold-level for a proposal to come through.

Note 2 - T can be constant
Lets say the committee can be as many as 20 people around the world. With such a large number of members, maybe you donât require a majority of pro-voters. Maybe you set `T` to be 7 in such a case, as in âIf there are at least 7 more people for this proposal than against it, we have enough âenergyâ in the community to accept this proposalâ. In the more general case:

``````T = Min(M/2, C), where C is a constant to be decided
``````

Note 3 - Relaxation & Rounding
The formula can also be `P - N >= T` (added the `=`), to relax the acceptance.
When setting `T` as `M/2`, rounding up or down is to be considered.

1 Like

I really donât like this proposal for three reasons

First or foremost, there just was a meeting about voting procedures that settled on an outcome that nobody seems to be unhappy with. There doesât seem to be a good reason to change anything from my perspective.

Second, while this proposal aims to be simpler, I donât think it succeeds in that. If I get it right, the proposal comes down to that for a proposal to pass, four times the number of support votes plus two times the number of abstentions must be greater than three times the total committee size. I may be a simple soul, but if I were in the committees shoes, Iâd find that way too complex. It took me way longer than Iâd like to get an actual âvote numbers tableâ from that.

Thirdly, when I did, eventually, the numbers that come out donât seem to align with the numbers the committee would like to see.

For the current committee of 8 members, the minimal vote for acceptance under this method are

• 0 abstentions: 7 - 1
• 1 abstention: 6 - 1
• 2 abstentions: 6 - 0
• 3 abstentions: 5 - 0

For more than 3 abstentions a proposal canât pass.

For the proposal under Note 3 this becomes

• 0 abs -> 6 - 2
• 1 abs -> 6 - 1
• 2 abs -> 5 - 1
• 3 abs -> 5 - 0
• 4 abs -> 4 - 0

Even for the second version, this is a higher or equal threshold than the âoldâ 70% for all of them, and thatâs the threshold that was lowered in the meeting. Proposing to raise it higher than the thing the meeting lowered doesnât seem to be in the spirit of the outcome of the meeting.

So to sum it up

• There is no indication the committee sees the scheme thatâs been accepted is a problem that needs fixing at all
• The proposed scheme is rather complex
• The proposed scheme is not in the spirit of the outcome of the last meeting

Note that I personally like the numbers from your proposal with Note 3. Having a high bar seems the right thing to me. If there are abstentions, that should have weight in rejecting the proposal - per Adriaan, if members of the committee canât be convinced itâs a good idea, that shows that it might not be a good enough idea to change the language for it.

But I also have faith in the committee to know what theyâre doing. Thatâs their job - and they did it already last meeting.

1. For your first reason for objection, I understand completely. Iâm sorry I missed the opportunity to suggest this prior to the meeting (I only learned that vote acceptance regulation will be discussed a day before the meeting). Iâm not saying they must adopt this suggestion today. If voting will become an issue in the future, the suggestion is here for discussion and use. Note 2 gives example where this concept can also help in the future (although I have no idea if the committee is able to grow in such a fashion).
2. Subjective perspective on complexity. The committee members agreed that the current regulations are more complex than theyâd like. Whether my suggestion is more or less complex to them (or the rest of the ânormalâ world), I have no idea.
3. Iâm not saying that my formula produces equivalent results to the current one. I actually do think that the committee would rather have a more strict filter on accepted proposals. Personally, the only thing that I see trouble with is that a 6:2 vote is rejected. That is why I suggested a possible relaxation (you can also do it in other ways by applying a more complex `T`).

I too have faith in the committee. I suggest this formula, because no one else has considered or mentioned it. I donât know if the committee would have liked this or not prior to their discussion. I am aware that chances of this new formula to be seriously discussed in a SIP meeting are very slim right after selecting a formula.

The suggestion is here nonetheless, either for now or for the future.

Oron

Thanks a lot to both of you for your time considering and discussing the best voting formula for the SIP Committee.

I have just submitted the formalized voting rules agreed in our last meeting. I believe that the formalization makes the rules more understandable than they were in the meeting. I invite you to have a look if you want to suggest improvements to the explanation/wording.

With regard to @soronpoâs proposal, I like the logic and idea behind it. I share some of the comments that @martijnhoekstra has made, and especifically it worries me how difficult is to get a proposal accepted. In my opinion, supermajority helps us make decisions with a safe acceptance percentage without defaulting to a âprobably-rejectâ strategy that would discourage users from improving the language. Yet, I think itâs an interesting proposal. As the Committee has gone through a slow process to decide our current rules, and all the members have voted on them, I prefer to keep this proposal for the future. It may happen that our current rules are proven buggy or donât work in real life, and if thatâs the case we all will study this proposal in more detail. If this happens to be the case, I will get back to you for further discussion.

Have a nice day.

1 Like