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.