荷兰政府这次做了一件不太喧哗、但很有方向感的事:上线 code.overheid.nl。

它不是一个已经铺开的全国性大平台,也不是宣布从 GitHub、GitLab 全面撤退。更准确地说,这是一个 soft launch,一个 pilot。荷兰政府先搭了一个自托管代码平台,给政府机构发布、开发开源软件用。

这件事有意思的地方在于:政府终于开始意识到,代码仓库不是“随便找个 SaaS 放一下”的工具,而是公共数字化的底座之一。

这次上线的东西,先别夸大

把事实压缩一下:

项目信息
平台名称code.overheid.nl
定位政府范围内发布和开发开源软件的代码平台
当前状态soft launch / pilot,不是全面正式上线
技术路线使用 Forgejo,自托管运行
发起方BZK 的 Open Source Program Office
协作方DAWO、SSC-ICT、Opensourcewerken、developer.overheid.nl
使用限制目前并非所有政府组织都能使用
参与方式开发者可通过 codeplatform@rijksoverheid.nl 联系参与

Forgejo 是一个开源代码托管平台,也常被放在“欧洲、开源、主权替代 GitHub/GitLab”的语境里讨论。这里要把分寸说清楚:替代,不等于已经替换;自托管,也不等于天然安全、绝对自主。

但方向很明确。荷兰政府想把政府代码协作,至少一部分,从全球商业平台的默认路径里拆出来。

受影响的人也很清楚:政府开发团队、公共数字化项目、开源治理人员,以及所有关心数字主权的人。

真正的关键词不是开源,是控制权

很多政府谈开源,容易停在漂亮话上:透明、协作、可复用、降低成本。都对,但都不够硬。

code.overheid.nl 这件事更硬的一层,是平台控制权。

公共部门的软件越来越像道路、电网、档案系统。代码放在哪里,权限怎么管,审计怎么做,谁能访问,谁来运维,出了问题谁负责,这些都不是技术小事。

过去的默认答案很简单:用成熟商业平台。省事,稳定,生态好,开发者熟。

这当然有道理。GitHub 和 GitLab 不是凭空变成事实标准的。它们降低了协作成本,也教育了几代开发者。但公共部门一旦把关键协作流程长期寄托在外部平台上,治理问题就会慢慢浮出来:账号体系、数据位置、合规边界、供应商政策变化、制裁风险、长期成本。

“天下熙熙,皆为利来。”这句话放在代码托管平台上并不刻薄。商业平台按商业逻辑运行,政府系统却要按公共责任运行。两套逻辑可以合作,但不能装作没有张力。

所以我更在意的是,荷兰这次没有只喊“多用开源”,而是往下多走了一步:自己搭一块基础设施。

这一步很小,但方向比很多宏大白皮书更实在。

方向做对了,难点才刚开始

我对这事的判断偏正面,但不想把它写成胜利宣言。

因为代码平台最难的从来不是装起来。Forgejo 能跑,域名能开,页面能上线,这只是第一层。真正难的是政府机构愿不愿意把代码、流程和责任迁进去。

这里有三道坎。

难点真问题
采用率开发团队是否愿意离开熟悉平台,或者至少双轨运行
治理谁审核项目、权限、许可证、安全响应和长期维护
运维能力自托管能否持续稳定,而不是一次性试点工程

很多公共技术项目最后失败,不是输在理念,而是输在没人愿意承担麻烦。

开源尤其如此。把代码公开,只是第一步。公开之后有没有文档,有没有 issue 响应,有没有安全披露流程,有没有复用机制,有没有预算维护,才决定它是不是公共资产。

如果 code.overheid.nl 最后只是一个“政府代码展示橱窗”,那价值有限。漂亮,但不改变协作方式。

如果它能变成政府开发团队真正使用的共享 Git 平台,让项目从一开始就按开放、可审计、可复用的方式生长,那它才算踩中了数字主权的实处。

历史上看,基础设施的关键从不只是“谁发明了它”,而是谁把它制度化。铁路不是铺了铁轨就结束,电网不是拉了电线就结束。代码平台也一样。没有规则、运维和责任,所谓主权很容易变成一个好听的控制面板。

荷兰这次少见地把话说到了基础设施层。但下一步要看得更冷一点:有多少项目真的迁入,有多少机构真的协作,有没有把许可证、安全、归档、身份管理这些脏活累活一起接住。

公共部门做技术,最怕两种极端:一种是全交给商业平台,图省事;另一种是自建一切,图安心。前者会丢控制权,后者可能丢执行力。

code.overheid.nl 的价值,就看它能不能在这两者之间走出一条窄路:既不迷信商业平台,也不迷信自托管本身。

这才是这次 soft launch 真正值得盯的地方。