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)
From SIP Specification and Submission regulation:
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â)
P/Q >= 50% (âfifty percents of cast votes are pro votesâ)
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.