夜天之书 #106 Apache 软件基金会如何投票选举?
近期若干开源组织进行换届选举。在此期间,拥有投票权的成员往往会热烈讨论,提名新成员候选人和治理团队的候选人。虽然讨论是容易进行的,但是实际的投票流程和运作方式,在一个成员众多的组织中,可能会有不少成员并不清楚。
本文以 Apache 软件基金会(Apache Software Foundation, ASF)为例,介绍 ASF 所采用的投票方式。
首先介绍一年一度的成员大会期间所采用的两种投票方式:单一可转让投票和简单多数投票。
单一可转让投票(Single Transferable Vote, STV)
ASF 成员大会的董事会选举采用单一可转让投票。简而言之,这意味着每位选民都只有一票有效票,但是他们可以按照自己的意愿对任意数量的候选人进行排序。如果排序的第一位候选人已经获得了足够的票数当选,或永远不可能当选,那么这张选票就会被转移到第二位候选人。
举例来说,ASF 董事会当前人数有 9 人,假设现在有 20 人竞选,由于每位选民最终只能投出一票有效票,极端情况下,选民可以只选择一位候选人:
此时,在任一轮计票中,你的选票都不可能转移给其他候选人。如果你的第一位候选人在某一轮中确认无法当选,那么你的选票从这一轮开始就会被废弃。
这种选民投票策略并不常见,直觉的投票方式是在需要选举 9 人的情况下,从 20 位候选人中选出自己希望最终当选的九人,并按照期望他们当选的顺序进行排序。这也是 STV 投票方式设计的初心:尽可能不浪费选票。在首选候选人已经当选或无法当选的情况下,选票会被依序转移给其他候选人。
同时,选择不少于 9 位候选人的策略还有一个隐含的意义,即实际上是向不在你的候选名单中的候选人投出反对票。因为这种情况下,你的选票永远会投给你想反对的候选人的竞争者。而如果你选择了少于 9 位候选人,那么你的选票在无法投给你的候选人时就会被废弃。
上图给出了这种投票策略的一个例子。在选择了不少于 9 位候选人的情况下,未被选择的候选人和排名第 10 位及以后(图中红线以下)的候选人都会等于收到了反对票。
无需担心多选择几位候选人会影响你的首选候选人当选,因为在 STV 投票方式下,除非你的首选候选人已经当选或任一轮次都不可能当选,否则你的选票不会被转移。可以查阅以下资料了解具体投票示例或者使用在线投票工具进行模拟:
维基百科:可转移单票制[1]
Single Transferable Vote implementation in Rust[2]
简单多数投票(Majority Vote)
ASF 成员大会的新成员选举采用简单多数投票。关于“简单多数”这个术语,有时候会有一些混淆。根据 ASF 相关定义,这里的“简单多数”是指赞成票数量超过反对票数量。
上图就是成员投票的入口页面,可以看到每年都会有复数新成员提名。为了简化投票的流程,选民可以点击最下方的“Bulk vote on Yes/No issues”按钮进行批量投票。
Bulk Vote
可以看到,在这个页面上可以对所有 Yes/No/Abstain (YNA) 投票项进行批量投票。这里的“Abstain”指弃权,跟不投票是一个效果。对于特定的议案,弃权票可能有助于达到法定投票人数,但是新成员选举没有这个要求。
ASF 日常的其他投票活动
在一年一度的成员大会之外,ASF 日常也会有一些投票活动,包括:
项目 Committer 和 PMC Member 等提名选举
项目版本发布投票
项目重要决策投票
……
甚至每一次 Code Review 的 Approval 和 Request Changes 也是投票的一环。这些投票大多遵循懒惰共识、简单多数或简单共识等投票方式,ASF 有若干文档介绍了这些投票的流程和规则:
Apache Voting Process[3]
Member Candidate Voting[4]
Bylaws 4.1 Admission of Members[5]
此外,孵化项目毕业和失活项目退休等治理动作,在项目本身决议之后,还需要董事会投票确认。这发生在通常每月一次的董事会会议上,由董事会成员举手投票表决。
参考资料
[1]
维基百科:可转移单票制: https://zh.wikipedia.org/zh-cn/可转移单票制
[2]Single Transferable Vote implementation in Rust: https://github.com/gendx/stv-rs
[3]Apache Voting Process: https://www.apache.org/foundation/voting.html
[4]Member Candidate Voting: https://www.apache.org/foundation/governance/meetings#membervoting
[5]Bylaws 4.1 Admission of Members: https://www.apache.org/foundation/bylaws.html#4.1