2026年8月1日,Sebastian Pipping 的生活变了。过去十年,维护 libexpat 只能挤在正职工程师工作、家务和社交的缝隙里;从这天起,他第一次可以把维护这个 C 语言 XML 解析库当作正式工作,雇主是慕尼黑市政府,合同最长 6 个月。
图:libexpat 维护者 Sebastian Pipping 的宣布博文。来源:blog.hartwork.org
libexpat是什么:藏在每一台设备里的XML解析器
libexpat 是一个用 C99 写的快速流式 XML 解析器,MIT 许可,跨平台。它和 libxml2 一起,并列为全球使用最广泛的 C 语言 XML 解析库。Python、Perl、Apache 等大量软件在底层依赖它,浏览器解析 XML 也经常走这条路——绝大多数用户这辈子不会直接看到它,但它几乎无处不在。
Pipping 是该项目多年的维护者。他在博文里说得直白:过去 10 年,维护 libexpat 一直在和正职、家务、社交、休息争夺时间。漏洞报告排队等着处理,修复速度取决于他下班后还剩多少精力。这次慕尼黑的资助,是他第一次能以「维护 libexpat」为正式岗位工作。
Open Source Sabbatical:市政厅的开源带薪假期
这笔钱来自慕尼黑的 Open Source Sabbatical 项目。机制不复杂:市政厅每年拿出约 20 万欧元,资助有资质的开发者全职投入开源项目,期限一般 6 个月。外部开发者通过慕尼黑市属的数字咨询公司 digital@M 签订常规工作合同,补偿目标约为常规工资的 60%,不受指令约束,远程办公即可。
项目挑选标准也宽松:可以是慕尼黑自研软件、市政正在用的自由软件,也可以是其他公开项目——只要对城市有益。2025 年上半年,第一个名额给了移民信息平台 Integreat 的开发者 Sven Seeberg,让他全职做多语言聊天功能。这次轮到 libexpat:一个市政厅自己大概率也在用的库。
图:慕尼黑新市政厅(Neues Rathaus),Open Source Sabbatical 项目的决策地。来源:Wikipedia Commons
为什么是慕尼黑:LiMux 的遗产
慕尼黑与开源的关系,是一段反复横跳的历史。本世纪初,时任市长 Christian Ude 力推 LiMux 项目,把市政厅约 1.4 万台电脑迁到 Linux 桌面。据 HN 上的老慕尼黑人回忆,微软的 Ballmer 和 Gates 曾先后亲赴慕尼黑游说,试图阻止这次迁移。2017 年,继任政府最终叫停 LiMux,回归 Windows,开源路线一度沉寂。
2017 年之后慕尼黑并没有彻底放弃。2020 年绿红联盟推出开源 5 点计划,2024 年初成立开源项目办公室(OSPO),由 Kubernetes 先驱 Klaus Mueller 牵头,同时落实 Public Money, Public Code 原则——纳税人的钱开发的软件,应该公开、可复用。Open Source Sabbatical 正是这套思路的延伸:既然市政依赖自由软件,那就直接出钱维持它。
6个月干什么:5个漏洞、XML 1.0r5、健壮性
Pipping 的优先事项写得很清楚。第一是修复目前已知但尚未处理的 5 个安全漏洞;第二是补上 XML 1.0r5(XML 1.0 最新修订版)的支持;第三是继续提升项目的健壮性和可维护性。发博文的前两天,他刚把时间花在修复一个 Mozilla 报告的漏洞上——这类工作以前只能见缝插针,现在成了日常。
他还在公开征集漏洞报告:接下来几个月是提交 libexpat 漏洞的最佳窗口期,修得会比以前快。不过有个前提——未经验证的 AI slop 提交依然不受欢迎。文末还有个程序员式的小请求:谁要是搞定了 Clang 版 MinGW 配 AddressSanitizer 加 Wine 不崩溃的组合,请发邮件教教他。
值不值:HN上的两种声音
HN 上 142 分的讨论里,对这个项目有明确的分歧。有用户直接质疑:城市不应该干这种事,税收应该花在修路和减税上。反驳的声音也直接:城市每天都在依赖这些软件,为什么不能为它们买单?
从公开信息看,分歧的根源在于「公共品」的边界。libexpat 没有企业雇主,维护者的时间就是稀缺资源,排队论和物理定律都站在漏洞这边——一个人一天只有 24 小时。慕尼黑的 6 个月解决不了开源维护资金问题的全部,但它给一个全球基础设施项目买到了喘息窗口,顺便给其他城市提供了一个可复制的样本。这笔账算不算得过来,看接下来半年 libexpat 的漏洞清单变化就知道了。
参考链接: hartwork.org 博客:libexpat now funded by the City of Munich for up to 6 months HN 讨论 (49176606) heise online:After LiMux shutdown: How Munich is slowly getting closer to open source again heise online:After LiMux shutdown: Munich launches first open source sabbatical opensource.muenchen.de:Open Source Sabbatical GitHub:libexpat/libexpat