World-Office:以一致性测试驱动独立办公套件的进展
办公文档是任何主权数字工作场所中最棘手的互操作性问题。邮件、文件与聊天已有成熟的开源答案;办公软件栈(在浏览器中可靠地编辑 docx、xlsx 与 pptx)仍是主权项目最容易跌倒的地方。World-Office 是 openEduSuite 为填补这一差距所做的尝试:一套用 Rust 编写的独立办公套件,其进展以一致性测试来衡量,而不是靠宣称。
从原型到生产
项目始于一个验证了概念、但未达到工程标准的服务器原型。该首版实现已于 2026 年 9 月退役。如今的生产级文档服务器是一套原生 Rust 代码库(docx 渲染器与自研的 OOXML 处理 crate),为套件编辑器提供服务,并通过 WOPI 与 OpenCloud 集成,让文件直接在用户已有的云存储中打开和保存。
当前状态一览:
| 组件 | 状态 |
|---|---|
文档编辑器(docx) |
已投入生产使用 |
电子表格编辑器(xlsx) |
已移植到生产栈 |
幻灯片编辑器(pptx) |
已移植到生产栈 |
| PDF 导出 | 原生实现 |
| 协作服务器集成 | 通过 WOPI 对接 OpenCloud |
用数据说话,而不是用口号
项目的决定性规则是:在任何自动化测试将其输出与参照实现(oracle)对比之前,任何特性都不算完成。三条机制支撑这一规则:
带稳定 ID 的特性登记表。 每项所需行为都记录在版本化的特性 ID 登记表中;当产品代码与登记表出现偏差时,漂移门禁会使 CI 失败。当前登记表跟踪一组稳定的文档格式特性。
跨引擎一致性测试。 渲染器的输出被规范化为中间表示,并与参照渲染进行评分对比。在简单文档上,相对参照渲染的文本几何保真度达到 1.0;在表格密集的文档上约为 0.85,这个诚实的数字准确指出布局工作还剩多少。可视化像素门禁使用公开的基线而非"面子阈值";例如页眉页脚门禁公开记录其 17.2% 的起点,并从此逐步收紧。
电子表格公式的差分 oracle。 一套不断增长的电子表格用例将 World-Office 公式引擎与参照实现对比。首个 30 例基线得分为 8/30;设立基线正是为了让每一次改进可见。路线图上约有 450 个电子表格函数。
明确划定的范围
重建办公套件需要边界,正如需要代码。目前已确定的范围决策:
- 格式:OOXML(
docx、xlsx、pptx)与 ODF(odt、ods、odp),覆盖两大格式家族。 - 对齐参照:OnlyOffice® 网页界面作为视觉与行为兼容性目标;LibreOffice® 仍作为次要的格式互操作交叉校验。
- 范围之外:冷门旧格式与图表格式;外围文件栈已能正确路由这类文件,包括一项让 Visio 绘图恢复可靠打开的 MIME 类型修复。
开放构建中的三条经验
三条值得传递的经验:
- 自动化需要护栏。 一个计划任务曾清空了开发服务器上未提交的工作。这些工作通过回放会话记录得以恢复,该任务本身也被修复。凡是会触碰代码仓库的代理与定时器,都绝不允许破坏未提交的状态。
- 测试基础设施与产品代码分离。 一致性测试工具、登记表与语料库位于独立仓库中,产品 crate 保持整洁,登记表独立版本化。
- 诚实的基线胜过虚荣指标。 公布 8/30 或 17.2% 的数字令人不适,而这恰恰是它有效的原因:进步成为棘轮,而非营销话术。
下一步
- 电子表格公式覆盖率:沿着差分 oracle 攀登,直至完整函数集。
- ODF 深度:让
odt、ods、odp达到与 OOXML 相同的一致性标准。 - 表格与幻灯片一致性:将登记表加 oracle 的模式扩展到文档之外。
行动号召
- 关注进展:一致性测试方法与工具设计已在项目仓库中记录。
- 参与测试:真实文档是最好的语料;损坏的文件教会渲染器的东西最多。
- 参与共建:如果文档主权在你的议程上,请加入 openEduSuite 社区。
主权在文档上一决胜负,所以我们选择测量,而不是承诺。
商标声明: OnlyOffice® 是 Ascensio System SIA 的注册商标。LibreOffice® 是 The Document Foundation 的注册商标。World-Office 为独立项目,与上述双方无任何隶属、背书或赞助关系。其他所有产品名称均为其各自所有者的商标。