夜雨聆风学习资料网

ARTICLE · 1231779

一个人 12 天做出 8 个办公软件:ElyOffice 用 Rust 重画界面,还把 93 个 bug 一次性贴了出来

一个人 12 天做出 8 个办公软件:ElyOffice 用 Rust 重画界面,还把 93 个 bug 一次性贴了出来

10 天前才写下第一行代码,现在已经有六个能装能用的办公应用。

Ely Office 拿到 682 star 时,仓库公开才两天。但它的第一次提交在 10 月 9 日——462 次提交、149,475 行 Rust,全压在这 12 天里。更反常的是,作者把一份 93 条的缺陷清单也一起开源了。

它到底是个什么东西

它不是又一个拿 Electron 包网页的 Office。文档、表格、演示、PDF、Git 客户端、Markdown,六个应用各自是独立的原生程序:界面用 Rust 的 GPUI 自己画,文件只存在你自己的文件夹里,没有账号,也没有云同步。名字分别是 ElyDoc、ElyTable、ElyShow、ElyPDF、ElyTree、ElyMark;邮件和 Agent 两个排在第二批,这个版本里还没有发布包。

真正让它在同类里显得特别的,是那个「壳」的选择。绝大多数开源办公软件要么套浏览器,要么直接改 LibreOffice 的界面;Ely 走了第三条路——把 LibreOffice 当无头引擎,界面整层重写。

六个应用,一条命令就能起

读源码能看到 crates/ely-lok/src/ffi.rs 里的一行:

lib.symbol(b"libreofficekit_hook_2\0")

它在运行时把 LibreOffice 的 C 接口打进来,引擎跑在独立的工作进程里,主界面只通过自定义帧协议跟它对话。好处很实在:一个应用崩了,不会带走另一个。

代价是重。每个安装包里都塞着一台完整的 LibreOffice,所以单应用 30–240 MB,六个打包在一起的 dmg 是 828 MB。macOS 只发 arm64,Windows 发 setup.exe,Linux 发 AppImage,另外还有 deb、rpm 和 Arch 的包。

发布节奏也很猛:v0.1.1 到 v0.1.9 八个版本,全挤在 10 月 19 日深夜到 20 日早上的八个小时里。0.1.9 一天就拿到 2,493 次下载——对两周大的项目,这个数字不算小。

那些没写进宣传页的设计

引擎不是 fork,是打过补丁的上游:LibreOffice 钉在 26.2.6.3 这个提交上,叠了 53 个补丁;MuPDF 钉在 1.28.5,叠了 5 个。补丁随源码包一起发,改了什么都能查。

格式保真也没靠嘴说。它的往返测试是「打开、编辑、保存、关闭、再开、再改、再存」,最后交给一个不经 LibreOffice 的读取器验数:DOCX 另交 macOS 的 textutil 读文字,XLSX 连公式缓存值和 #DIV/0! 都要严格相等,浮点给了 1e-12 的容差。

更少见的是仓库里那份 30 万字节的 agents.md——中文写的单一事实来源,进度表在 tasks/ 下,680 个文件。加上 1,456 个 Rust 测试函数,这套「需求文档→任务表→提交」的流水线,才是 12 天出六个应用的真实原因。

适合谁,以及为什么先别当主力

如果你用的是 Apple Silicon 的 Mac,只需要打开、批注、导 PDF,又不想为「看一眼 docx」付订阅,它值得装上试。想学「怎么把 C 引擎塞进 GPUI 界面」,这是份难得的完整样本。Intel Mac 现在还装不了,issue 区最早那几条就在问这件事。

但别把它当唯一办公软件。docs/BugList.md 里写着 93 个缺陷,5 个致命:表格滚到三百行左右,点一个格子光标框会落到隔壁;演示切页后画面不刷新;PDF 写到没权限的目录会直接崩;设置窗口在前时按 Cmd+Q 会跳过保存询问、抹掉恢复点。

我拿最新代码核过第一条:修法要用到的 SheetGeometryData 全仓搜不到,0.1.9 里它还在。

值得夸的一面也有:issue 区那条「开自动筛选触发 SIGSEGV」从报告到关单只花了一天,0.1.8 到 0.1.9 就修完。含宏的文件一律进风险模式,只能另存副本、宏不运行,这个默认值是对的。

另外四件事得知道:Windows 和 Linux 的包发了,但作者自己写着「未验证」,issue 区已经有 Linux 中文、Windows 文字错位三条实测;仓库根写 MIT,可 ElyPDF 那个包整体得按 AGPL 走;462 次提交里 459 次来自同一个人,Bus Factor 就是 1;CI 只在打 tag 时触发,外部 PR 合并前一次构建都不会跑。

它更像一份公开的施工日志:架构挑得漂亮,丑话也写在明面上,只是别急着把重要文件交给一个 0.1.9。


项目地址:https://github.com/ELY-Open-Source/ElyOffice[1]

它的完整十模块分析——93 个缺陷的分布、上游补丁明细、三端验证到哪一步——已经归档进我的 ima「GitHub项目集」。想翻同类项目的深度拆解,去库里搜项目名就行。

我是海冰,持续拆解 GitHub 上真正值得用的开源项目,只写我读完源码还敢推荐的那些。如果这篇帮你省了自己翻仓库的时间,欢迎点赞、在看、转发,我们下篇见。

引用链接

[1]https://github.com/ELY-Open-Source/ElyOffice

相关学习资料