Loomio 3.14.0 介绍与选型指南
Loomio 3.14.0 认知篇:开源群组决策协作平台的产品定位、Rails 技术栈与服务拓扑、10 种投票类型实测清单、发布节奏与社区规模量化数据,及与 Rallly/IHateMoney/Bitpoll/ClearFlask/Framadate 的选型对比(数据查询日期 2026-11-02)。
Loomio 3.14.0 介绍与选型指南
目标:认识 Loomio 3.14.0 的定位、架构、功能面与维护现状,给出与同类投票/协作工具的量化选型结论。外部事实(版本、star、许可证)为 2026-11-02 GitHub API / shields.io 实查;功能与架构结论来自当日主机实测实例(192.168.1.172:8144,由 《Loomio 3.14.0 Docker Compose 部署指南》 部署)。参数语义见 《Loomio 3.14.0 配置参数详解》,运维命令见 《Loomio 3.14.0 常用 CLI 命令与工具详解》。
一、环境信息
本文实查与实测所依赖的环境:
- 实查通道:GitHub REST API(
api.github.com)、shields.io 徽章、Docker Hub,查询日期 2026-11-02 - 实测实例:Ubuntu 主机,Docker 29.9.2 / Compose v5.6.1,Web
192.168.1.172:8144,协同编辑8145,邮件捕获8146 - 组件版本(
bin/rails about、psql、redis-cli info实测):
| 组件 | 实测版本 |
|---|---|
| Loomio | 3.14.0(release 1793498930,schema 20261031000002) |
| Rails / Ruby / Rack | 8.1.3.1 / 4.0.9 / 3.2.8 |
| Puma / Solid Queue | 8.0.2 / 1.7.0 |
| PostgreSQL / Redis | 17.11 / 8.4.8 |
二、软件概述
2.1 定位
Loomio 是一款开源的群组决策协作平台:以"群组(group)→ 讨论(discussion)→ 投票(poll)→ 立场(stance)"为主线,让组织成员对提案、方案、会议时间等议题正式表态并沉淀结论。GitHub 仓库(loomio/loomio,查询日期 2026-11-02)元数据实查:
| 项目 | 实查值 | 来源 |
|---|---|---|
| 最新 release | v3.14.0(2026-11-01T02:08:42Z) | GitHub Releases API |
| stars / forks | 2624 / 711 | GitHub API(shields.io 同日显示 2.6k) |
| 许可证 | AGPL-3.0 | 仓库 LICENSE.txt |
| 默认分支 / 最近推送 | master / 2026-11-02 | GitHub API |
| 官网 | https://loomio.com | 仓库 homepage 字段 |
发布节奏:近期 v3.14.0 → 3.13.2 → 3.13.1 → 3.13.0 → 3.12.0,约每 1–2 周一版,维护活跃(pushed_at 与查询日同日)。
2.2 发行形态
官方唯一支持的自托管形态是 Docker Compose 全家桶(仓库 deploy/ 目录:docker-compose.yml、env_template、create_env.sh、update.sh、UPGRADING.md,GitHub contents API 实查),无 apt/deb 包、无独立二进制。镜像 loomio/loomio:3.14.0 单镜像 3.48 GB(app/worker/hocuspocus 三服务共用)。
三、核心架构
3.1 服务拓扑
官方 compose 共 8 个服务,职责实测梳理:
| 服务 | 镜像 | 职责 |
|---|---|---|
| nginx-proxy | nginxproxy/nginx-proxy | 反向代理 + 按 VIRTUAL_HOST 动态生成 vhost |
| nginx-proxy-acme | nginxproxy/acme-companion | Let's Encrypt 自动签证书 |
| app | loomio/loomio | Rails 主应用(Puma 监听 3000,入口 thrust puma -C config/puma.rb) |
| worker | loomio/loomio | 后台任务(TASK=worker → bin/jobs start,Solid Queue 监督进程) |
| db | postgres:17 | 主数据库(实测 schema 80 张表) |
| redis | redis:8.4 | 缓存 + Action Cable(实测关闭持久化、allkeys-lru 淘汰) |
| haraka | loomio/haraka-rails-docker | 收信 SMTP(邮件回帖建讨论,监听 25) |
| hocuspocus | loomio/loomio | Yjs 协同编辑服务器(TASK=hocuspocus → node hocuspocus/server.mjs) |
数据流:浏览器 → nginx-proxy → app(Puma 多进程);异步通知/清理走 worker;文档编辑实时同步走 hocuspocus WebSocket;收信由 haraka relay 进 Rails Action Mailbox。实测实例(内网变体,去 nginx/acme/haraka、加 mailpit)6 服务全部 Up,稳态内存合计约 1.1 GB(app 480MiB、worker 431MiB、db 81MiB、hocuspocus 51MiB、redis 18MiB、mailpit 8MiB)。
3.2 数据模型
核心表(psql 实测):users / groups / memberships / topics / polls / poll_options / stances / votes。群组带 group_privacy(open/private)与 membership_granted_upon(request/approve/invite)两级准入;投票按 poll_type 从 config/poll_types.yml 加载模板值(TEMPLATE_VALUES),决定 ballot 规则与选项默认集。
💡 技术拓展:Loomio 的 ballot 规则(
ballot_rule)不止一种,实测 10 种投票类型映射 5 类规则——
ballot_rule 含义 对应投票类型 bounded 限选 N 项、每项计分 count/check/proposal/poll/meeting/score reason_only 只表态不选项 question dot_vote 每人发固定点数自由分配(实测 points_per_voter=8) dot_vote ranked_points 按名次累计积分 ranked_choice(choice_count_min=3) ranked_preferences 排序偏好 + 淘汰制计票 stv(单可转移票) 本文实测实例采用 proposal(bounded,agree/abstain/disagree/block 四选项、score 固定 1)。
四、功能特性
以下能力全部在实测实例或发行包源码核验:
- 10 种投票类型:免登录接口
GET /api/v1/boot/site返回pollTypes全量清单,实测顺序为count / check / question / proposal / meeting / poll / dot_vote / score / ranked_choice / stv;meeting 型选项名按 ISO8601 渲染(poll_option_name_format=iso8601)、可"待定"(can_respond_maybe),proposal 默认时限 7 天。 - 讨论与立场:投票自动建 topic,成员表态(stance)带理由(Markdown),支持评论、reaction、匿名投票(
has_anonymous_polls字段实测存在)。 - 实时协同编辑:hocuspocus(Yjs)承载文档共同编辑,浏览器直连
HOCUSPOCUS_URL(实测ws://192.168.1.172:8145,HTTP 探活 200)。 - 邮件双向:出站 SMTP(实测接 mailpit,API
total:0在线);入站 haraka 收信回帖建讨论(RAILS_INBOUND_EMAIL_URL走 Action Mailbox relay)。 - Server API:
/api/server0/*(别名/api/b3/*)Bearer 认证的服务端集成通道,实测可增删用户、读群组,免 CSRF(详见 D1 篇)。 - 企业接入:SAML、OAuth2/OIDC 两套 SSO 配置项齐备(env_template 实查),含 SSO 托管资料(
LOOMIO_SSO_UPDATE_USER_PROFILE_ON_LOGIN等)。 - 防护与可观测:Rack::Attack 限速(
rails aboutmiddleware 实测含Rack::Attack)、Cloudflare Turnstile 注册防刷、Sentry 错误追踪、Plausible 统计。 - 本地化与主题:多语言(
config/locales+ 可选 Google 翻译/OpenAI 语音转写),THEME_*系列变量定制 logo/配色/深浅色默认主题。 - 推送:Web Push(VAPID 三键齐全即启用,create_env.sh 自动生成);移动端走共享 relay(
PUSH_RELAY_URL)。
五、快速开始(最小可用示例)
前提:按 《Loomio 3.14.0 Docker Compose 部署指南》 起栈。三步验收实测:
# 1) 健康检查
curl -s http://192.168.1.172:8144/up
# 2) 版本自证
curl -s http://192.168.1.172:8144/api/v1/boot/version
# 3) 站点配置自证(节选)
curl -s http://192.168.1.172:8144/api/v1/boot/site | python3 -c \
"import json,sys;d=json.load(sys.stdin);print(d['version'],d['baseUrl'],d['features']['env'])"
实测输出:
ok
{"version":"3.14.0","release":"1793498930","reload":true,"notice":null}
3.14.0 http://192.168.1.172:8144/ production
浏览器打开 http://192.168.1.172:8144/(实测 302 → /dashboard)注册首个用户即可建群组发投票;一次 API 全链路(建组→proposal→表态 200 回显)见 B2 篇 4.8 节。
⚠️ 注意:新群组默认被塞入演示假数据(3 假用户 + 24 演示投票),生产部署务必设
LOOMIO_DISABLE_DEMO_GROUPS=1(实测源码app/extras/app_config.rb:203,处置见 B2 篇 4.10)。
六、适用场景与限制
适合:
- 组织内正式决策留痕:提案(proposal)、方案比选(check/count)、评分(score)、点赞预算(dot_vote)
- 会议时间协调:meeting 型自带时区与"待定"表态
- 社团/委员会选举:ranked_choice、stv 两种排序投票
- 需要 SSO、邮件回帖、协同编辑、对外 API 的中大型自托管场景
限制:
- 资源占用偏重:镜像 3.48 GB、全栈稳态内存约 1.1 GB,明显高于轻量投票工具;
- 发行形态单一:官方只支持 Docker Compose,Ruby 栈无裸机包安装路径;
- AGPL-3.0 copyleft:二开并对外提供服务需开源修改,商业闭源集成受限;
- 权限模型较扁平:站点管理员 + 群组管理员两级为主,无细粒度角色体系;
- 配置书写规则特殊:禁用开关必须注释整行(
KEY=0仍算启用),迁移其他软件习惯时易踩坑; - 演示群组默认开启:非域名主机也会触发,需显式关闭。
七、同类选型对比
对比对象为站内已实测的同类工具(各行数据:Loomio 行为 2026-11-02 本文实查/实测;其余行取自各工具介绍篇的当日实测记录,star 为 shields.io 查询值):
| 维度 | Loomio 3.14.0 | Rallly 4.16 | IHateMoney 7.2.1 | Bitpoll 0.11.0 | ClearFlask 2.7.2 | Framadate 1.1.19 |
|---|---|---|---|---|---|---|
| 定位 | 群组决策协作平台 | 会议时间协调 | AA 制记账分摊 | 投票表单 | 产品反馈投票板 | 日程/意见投票 |
| 技术栈 | Rails + PG + Redis | Next.js + PG | Python/Flask | Django + PG | Java + Node.js | PHP |
| 许可证 | AGPL-3.0 | AGPL-3.0 | BSD-3-Clause | GPL-3.0 | Apache-2.0 | AGPL |
| GitHub star(查询日) | 2.6k(2026-11-02) | 5.3k(2026-11-02) | 1.4k(2026-11-02) | 318(2026-11-02) | 450(2026-11-01) | 103(2026-11-01) |
| 投票类型 | 10 种(含 STV/点赞预算) | 时间投票为主 | 无(记账) | 单选/多选/评分 | 功能请求投票 | 日程/意见 |
| 群组/成员体系 | 有(隐私+准入两级) | 弱 | 有(共享账本) | 弱 | 有(多租户板) | 无 |
| 协同编辑/讨论 | Yjs 实时 + 讨论区 | 无 | 评论 | 评论 | 评论+状态流 | 无 |
| SSO | SAML + OIDC | 无 | 无 | 无 | 无 | 无 |
| 服务端 API | Server API(Bearer) | 无 | REST | REST | REST | 无 |
| 部署形态 | Compose 8 服务 | Compose 2 服务 | 单容器+PG | 单容器+PG | 多组件 | LAMP 裸机 |
| 稳态内存(实测) | ≈1.1 GB | 低 | 低 | 低 | 高 | 低 |
选型解读(站内明细):
- 要组织级正式决策(提案表态、选举、留痕、SSO)→ 选 《Rallly 4.16 介绍与选型指南》 覆盖不了的 Loomio,代价是资源占用;
- 只要约会议时间→ 《Rallly 4.16 介绍与选型指南》 更轻;
- AA 收款分摊→ 《IHateMoney 7.2.1 介绍与选型指南》;
- 轻量投票表单→ 《Bitpoll 0.11.0 介绍与选型指南》 或 《Framadate 1.1.19 介绍与选型指南》;
- 产品需求收集投票→ 《ClearFlask 2.7.2 介绍与选型指南》。
八、参考链接
- GitHub 仓库:https://github.com/loomio/loomio
- Release v3.14.0:https://github.com/loomio/loomio/releases/tag/v3.14.0
- 部署资产目录:https://github.com/loomio/loomio/tree/master/deploy
- Docker Hub:https://hub.docker.com/r/loomio/loomio
- 官网:https://loomio.com
- 站内互链:《Loomio 3.14.0 Docker Compose 部署指南》、《Loomio 3.14.0 配置参数详解》、《Loomio 3.14.0 常用 CLI 命令与工具详解》