Apache STeVe 介绍与选型指南
Apache STeVe 社区投票治理工具介绍与选型指南:官方未发布正式版本的如实信息基准、STV 与 Meek 计票核心概念、v3 开发线功能特性、快速上手与 Helios/CIVS/OpaVote 对比
Apache STeVe 介绍与选型指南
一、信息基准
本篇信息采集与核验日期为 2026-10-18,全部信息取自 Apache 官方渠道。需要特别说明:Apache STeVe 官方下载页明确声明"Apache STeVe has not published an official release yet"(尚未发布任何官方正式版本),因此本篇标题不带版本号,正文以"组件-状态基准表"形式逐项列明信息基准,本篇不包含任何本地安装与运行实测内容。
| 组件/维度 | 信息基准 | 依据来源 |
|---|---|---|
| 官方正式版本 | 无(官方未发布任何正式发行版本) | steve.apache.org/downloads/ |
| 当前开发版本线 | v3(Python 应用,SQLite 存储) | steve.apache.org 首页与文档 |
| 仓库标签 | v2 标签存在,releases.atom 记录时间 2026-03-09;仓库快照非官方 ASF 发行物 | github.com/apache/steve/releases.atom |
| 项目状态 | ASF 顶级项目,未退役 | projects.apache.org 项目 DOAP(name: Apache STeVe,shortdesc: STV Voting Tools,retired: 否) |
| 开源许可 | Apache License 2.0 | steve.apache.org DOAP |
| 编程语言 | Perl、Python(DOAP 记录);当前 v3 开发线为 Python + SQLite | projects.apache.org DOAP;steve.apache.org |
| 社区规模 | GitHub 约 27 stars(2026-10-18 查询),活跃度极低 | GitHub 官方仓库页 |
官方来源清单:
| 来源 | 地址 | 用途 |
|---|---|---|
| 官网首页 | https://steve.apache.org/ | 项目定位、能力介绍 |
| 下载页 | https://steve.apache.org/downloads/ | 版本状态声明、源码获取方式 |
| 文档 | https://steve.apache.org/docs/ | v3 应用与计票工具使用说明 |
| 社区页 | https://steve.apache.org/community/ | 邮件列表等参与渠道 |
| GitHub 仓库 | https://github.com/apache/steve | 源码、issues、stars |
| ASF 项目 DOAP | https://projects.apache.org/json/projects/steve.json | 项目状态交叉核验 |
二、软件概述
本文介绍的是 Apache STeVe(截至 2026-10-18 无官方正式发布版本,当前开发版本线为 v3)。Apache STeVe 是 Apache 软件基金会的社区投票治理工具集,官网口号是"Community decisions. Counted together."——把开源工具带入社区选举,覆盖从选民投票到单记名可转移投票(STV,Single Transferable Vote)计票的完整流程。STeVe 源自 ASF 用以选举董事会(Board of Directors)的投票系统,后在 Apache 体系内独立成项目并公开开发。
官网将当前能力划分为两块:其一是 v3 投票应用,一个带 SQLite 存储的 Python Web 应用,用于管理选举、议题与选票;其二是 STV 计票与 what-if 推演工具,基于共享的 Meek STV 计票引擎,可对已结束选举的选票重新计票并探索不同席位数、不同候选人组合下的结果变化。
必须如实指出:该项目社区活跃度极低(GitHub 约 27 stars,无官方正式发行版本),成熟度与投入度都无法与 ASF 内主流大数据类项目相比,本篇在选型结论中会给出相应保守建议。
三、核心概念
3.1 STV 单记名可转移投票
STV 是一种按排名投票的比例代表制计票方法:选民按偏好对候选人排序,通过多轮分配与转移(含剩余票值转移)把选票归集到当选者身上。STeVe 的核心就是围绕 STV 的投票与计票流程,同时支持 yes/no/abstain(赞成/反对/弃权)投票方式。
3.2 Meek 计票引擎
官网多次提到"共享的 Meek STV 引擎":Meek 是 STV 的一种计票变体,以更精细的剩余票值再分配著称。STeVe 的 v3 应用与独立计票工具复用同一个计票引擎,保证投票应用与事后推演结果一致。
3.3 选举对象模型
v3 应用以"选举(Election)—议题(Issue)—候选人(Candidate)—选民(Voter)—选票(Ballot)"为基本对象模型,支持定义议题、圈定有资格投票的选民、收集排名选票并计票。
3.4 情景推演(what-if)
计票工具不仅输出一次结果,还支持改变席位数或候选人集合后重新计票,帮助社区观察规则变化对结果的影响,这类推演在选举规则评审阶段很有价值。
四、功能特性
4.1 选举管理
v3 Web 应用提供选举创建、议题与候选人维护、选民资格管理等功能,把 ASF 内部沿用的选举流程产品化。
4.2 投票渠道
支持排名式 STV 投票与 yes/no/abstain 投票两种形态,覆盖社区治理中"选人"与"表决"两类诉求。
4.3 计票输出
基于 Meek STV 引擎输出计票结果,同一引擎同时服务于在线投票应用与离线计票工具。
4.4 结果推演
对已结束的选举导入选票后重新计票,支持按不同席位数、候选人组合反复推演,用于规则评估与结果复核。
五、快速上手
以下步骤引自官方下载页 https://steve.apache.org/downloads/ ,本篇不做本地实测:
- 获取源码(官方未发布正式版本,仅提供开发源码):
git clone https://github.com/apache/steve.git
cd steve
- 按官方说明,trunk 分支包含开发代码;仓库快照不属于 ASF 官方发行物。
- 依据官网 getting started 指南搭建 v3 应用(Python 应用、SQLite 存储),或按文档单独使用 STV 计票与 what-if 工具。
- 版本与发布计划相关问题,官方建议通过开发邮件列表(见社区页)沟通。
六、适用场景与限制
6.1 适用场景
- 开源社区内部的小规模治理选举、SIG 负责人评选等 STV 场景,且团队愿意接受源码级集成。
- 需要对既有选举选票做 Meek STV 复核与席位/候选人情景推演的场合。
6.2 限制
- 官方未发布任何正式版本,唯一获取方式是源码仓库快照,升级与版本追溯没有保障。
- 社区活跃度极低(GitHub 约 27 stars,2026-10-18 查询),问题响应与生态支持有限。
- 生产级、高利害选举(如基金会董事会、协会理事)建议优先评估更成熟或托管的投票方案,将 STeVe 作为参考实现或备选。
七、同类选型对比
社区投票工具领域的可比项目较少,以下对比中查不到的维度均如实标注"官方未公布"。stars 为 2026-10-18 联网实查自 GitHub 官方仓库页,Helios 发版信息来自其仓库 releases.atom,许可来自仓库许可文件。
| 维度 | Apache STeVe | Helios Voting(helios-server) | CIVS | OpaVote |
|---|---|---|---|---|
| 开源许可 | Apache-2.0 | Apache-2.0(仓库 LICENSE 文件) | 官方未公布(康奈尔大学提供的网络服务) | 商业托管服务,未开源 |
| GitHub stars(2026-10-18) | 约 27 | 约 926 | 官方未公布(非仓库形态) | 官方未公布(商业服务) |
| 最近发版 | 无官方发行版本(开发线 v3) | 标签 python-2,2021-02-08 | 官方未公布 | 官方未公布 |
| 版本节奏 | 极低频,无正式发布 | 长期无新发布(2021 年后无发版记录) | 服务制,官方未公布 | 服务制,官方未公布 |
| 兼容矩阵 | Python + SQLite(v3 开发线) | Python 技术栈(自托管) | 网页服务 | 网页服务 |
| 计票方法 | STV(Meek)、yes/no/abstain | Helios 混合选举方法(支持多候选偏好计票) | 孔多塞等多种方法(官方服务说明) | 多种选举方法(官方服务说明) |
选型建议:开源社区内部的小规模 STV 选举可试用 Apache STeVe 或自托管 Helios,而对结果权威性与持续运维有要求的正式选举,建议优先选择成熟的托管投票服务并将开源工具作为备选。
八、参考链接
- 官网首页:https://steve.apache.org/
- 下载页(版本状态声明):https://steve.apache.org/downloads/
- v3 文档:https://steve.apache.org/docs/
- 社区参与:https://steve.apache.org/community/
- GitHub 官方仓库:https://github.com/apache/steve
- ASF 项目 DOAP:https://projects.apache.org/json/projects/steve.json