Bitpoll 0.11.0 介绍与选型指南

Bitpoll 0.11.0 认知与选型:Framasoft 生态 Django+PostgreSQL 投票工具的版本脉络、功能盘点、技术栈,及与 Framadate/dudel/Doodle 的量化对比(溯源查询日期 2026-11-01)。

Bitpoll自托管DjangoPostgreSQLPython2026/11/01

Bitpoll 0.11.0 介绍与选型指南

本文是 Bitpoll 专栏的认知篇,只做联网溯源与选型对比,全部事实标注来源与查询日期(2026-11-01),不含本地实测。版本结论:当前官方最新稳定版为 0.11.0(发布于 2026-05-06),自托管选型建议直接采用该版本。

1. 一句话定位

Bitpoll 是一个用 Django + PostgreSQL 重写的开源投票/日程协调 Web 应用:既能对「哪天哪个时间段开会」这类时间问题发起投票,也能对任意选项问题收集意见,支持匿名或实名、公开或仅受邀可见,官方演示站为 bitpoll.de,适合在自有服务器上替代 Doodle 等商业投票服务。

2. 项目背景与版本脉络

事实内容来源(查询日期 2026-11-01)
官方仓库github.com/fsinfuhh/Bitpoll,仓库描述「A web application for scheduling meetings and general polling.」GitHub 仓库页 HTML
项目渊源系 opatut/dudel 的重写版:dudel 原为 Flask + JavaScript 前端实现,Bitpoll 改用 Django 作为后端,部署于 https://bitpoll.de官方 README.md
演示实例https://bitpoll.de(README 标注的官方演示站,属 Framasoft 运营的自托管服务生态)官方 README.md
最新版本0.11.0,发布于 2026-05-06GitHub Releases 订阅源 releases.atom
版本节奏0.10.0(2020-01-20)→ 0.9.2(2020-01-15)→ 0.9.1(2019-12-31)→ 0.9(2019-12-19,评论限流)→ 0.8.1(2019-12-15,安全更新)→ 0.8.0(2018-07-18)→ v0.7.0(2018 年首个打标签版本)releases.atom
许可证GPL-3.0LICENSE 文件 + shields.io license 徽章
社区规模GitHub star 318shields.io stars 徽章(2026-11-01)

版本节奏需要正视:0.10.0 到 0.11.0 间隔约六年(2020-01 → 2026-05),说明该项目维护强度是「低频但持续」而非高速迭代。0.11.0 之后订阅源最后更新时间为 2026-05-22,仓库仍在活跃维护窗口内;选型时应把它当作「功能收敛、以稳定运行为主」的成熟工具,而不是期待频繁新特性。

3. 核心功能盘点

以下能力清单直接摘自官方 README 的 Features 小节及配置样例,来源同上:

  1. 匿名/实名可控:可设置是否允许匿名投票,或要求投票人必须署名。
  2. 注册门槛可控:可配置投票是否需要先注册账户(REGISTER_ENABLED 开关)。
  3. 私有投票:可创建仅受邀者可访问的私密活动,用于内部排期而非公开征集。
  4. 多种投票形态:支持整天事件(full day)与具体小时段(a few hours)两种时间投票,也支持自定义选项类问题。
  5. URL 策略:投票链接可手动指定短标识,也可随机生成——前者便于对外传播,后者防止枚举猜测。
  6. 日历互通:依赖清单中含 caldav、icalendar,支持把确定的时间结果与日历标准格式互通。
  7. 评论限流:0.9 版本起对投票评论做速率限制(django-token-bucket),抑制灌水。
  8. 字段加密:使用 django-encrypted-model-fields 对敏感字段做存储加密。
  9. REST API:后端为 Django,对外提供 API 接口,可脚本化创建/查询投票(本专栏 CLI 篇有实操)。

4. 技术栈与架构

  • 语言构成:仓库主语言 Python(shields.io languages/top 徽章显示 46.1%,其余为前端 JS/SCSS/CoffeeScript 资源)。
  • 后端框架:Django。官方 master 分支 requirements.txt 当前钉住 django==6.0.5,依赖面还包括 django-pipeline(静态资源打包)、django-simple-csp(CSP 安全头)、django-widget-tweaks、django-markdownify、pytz 等。
  • 数据库:PostgreSQL(Django postgresql 后端引擎,部署侧需独立提供数据库服务)。
  • 应用进程:官方发行形态内置 uWSGI 应用服务(uwsgi 协议端口 3008),另带一个开发服务器端口 3009;生产部署惯例是用 nginx 反代 uwsgi 并托管 static 静态目录——即「nginx + uWSGI + Django + PostgreSQL」四件套。
  • 官方部署包:仓库根目录提供 compose.yaml 编排文件与打包好的官方发行产物(发布在 ghcr.io 包仓库),README 同时给出「挂载 config/static 目录 + 外部 Web 服务器」的手动部署路径。

5. 量化选型对比

对比对象取同生态的 Framadate、商业基准 Doodle、以及 Bitpoll 的前身 dudel:

维度Bitpoll 0.11.0Framadateopatut/dudel(前身)Doodle(商业基准)
仓库fsinfuhh/Bitpollframasoft/Framadateopatut/dudel闭源 SaaS
GitHub star(2026-11-01,shields.io)318103已停更(被 Bitpoll 取代)—
主语言Python 46.1%PHP 45.8%JavaScript 57.2%—
许可证GPL-3.0AGPL-3.0(Framasoft 官方项目)MIT(历史项目)专有
后端形态Django + PostgreSQL + uWSGIPHP 应用 + MySQL/PostgreSQLFlask + 前端 JSSaaS
时间投票/选项投票两者兼有两者兼有两者兼有两者兼有
匿名/实名开关支持支持支持支持(付费项更多)
私有/受邀投票支持支持部分需付费方案
自托管数据主权完全自主完全自主完全自主数据在服务商
维护状态(2026-11 视角)低频活跃(0.11.0 于 2026-05 发布)持续维护(Framasoft 运营)已归档停更持续商业迭代

star 数与语言占比均取自 shields.io 徽章实测值(查询日期 2026-11-01);Framadate 的 AGPL 与运营方信息来自其 GitHub 组织页公开资料。

6. 适用场景与局限

适合选它的场景:

  • 团队/社区需要在自有服务器上跑一个「约时间 + 收意见」的轻量协调工具,且运维栈里已有 Django/PostgreSQL 经验——Bitpoll 的配置面就是 Django settings 文件,排障路径对 Python 运维者非常自然。
  • 对数据敏感:投票内容涉及内部日程,不能交给 Doodle 这类第三方 SaaS;GPL-3.0 许可也允许在内网闭源环境自由部署修改。
  • 需要 API 自动化:Django 后端提供 REST 接口,可批量建投票、拉结果,嵌入机器人或工作流。
  • 偏好 Framasoft 生态但嫌 Framadate 的 PHP 栈重:Bitpoll 全栈 Python,依赖组件更少。

需要权衡的局限:

  • 社区体量小(318 star),遇到深水区问题主要靠读源码和 Django 通用知识,第三方教程少。
  • 发布节奏慢,前端仍是较传统的 Django 模板 + CoffeeScript/SCSS 组合,界面现代化程度不如商业产品。
  • 无内置多语言 UI 的完善覆盖(仓库有 locale 目录但翻译进度有限),英文界面为主。
  • 不提供开箱即用的高可用/集群形态,容量规划即单机 Django + 单库 PostgreSQL。

7. 选型结论

在「自托管、时间投票 + 选项投票、数据主权」这三个硬条件同时成立时,Bitpoll 0.11.0 是 Framadate 之外该生态的另一个正解:若你的基础设施以 PHP/MySQL 为主选 Framadate,以 Python/PostgreSQL 为主则选 Bitpoll。两者功能面高度重合,决策权重应放在运维栈匹配度上。相对商业 Doodle,Bitpoll 牺牲界面打磨与协作增值功能,换取完全的数据自主与 GPL 自由度。

本专栏后续文章路径:部署全流程、配置参数逐项详解、日常运维命令与 API 实操,均在 Bitpoll 专栏内按 0.11.0 实测交付。

8. 溯源清单

  • github.com/fsinfuhh/Bitpoll 仓库页 README.md、LICENSE、requirements.txt、compose.yaml、Dockerfile(master 分支快照)——查询日期 2026-11-01
  • GitHub Releases 订阅源 releases.atom(版本与发布日期)——查询日期 2026-11-01
  • shields.io 徽章:stars / license / languages-top(fsinfuhh/Bitpoll、framasoft/Framadate、opatut/dudel)——查询日期 2026-11-01
  • 官方演示站 bitpoll.de(README 标注)——查询日期 2026-11-01
Bitpoll 0.11.0 介绍与选型指南 - Quzuo