一位开源老兵的告别信:我们曾把整个开源世界托付给一家公司,然后看着它慢慢烂掉。
我亲眼看着GitHub变成废墟
Armin Ronacher这个名字,你可能不熟,但你一定用过他写的东西。
Flask、 Jinja2、 Werzeug —— 这些Python Web开发离不开的底层库,全是他一个人扛起来的。他是开源圈的超级老兵,代码写了十七年,社区混迹了更久。
2026年4月28日,他在自己的博客上写了一篇帖子,标题简单得可怕:"Before GitHub"。
这不是怀旧,这是一封悼词。
"GitHub在我生命中重要到无以复加。我的开源身份很大一部分是在那里形成的。我做过的项目、认识的人、无数的专业关系和友谊,都是因为某个仓库、某个Issue、某条PR、某条评论而产生的。"
然后话锋一转:
"这就是为什么我对GitHub今天的处境感到如此悲伤和失望。我不只是不喜欢微软的产品决策——它曾经是开源社会基础设施的一部分。对我们很多人来说,代码住在哪里,社区就住在哪里。"
说实话,看到这段话的时候我愣了一下。
因为我知道他说的是真的。
GitHub不是另一个代码托管平台。它是开源世界的客厅、酒吧、咖啡馆。是无数人职业生涯的起点,是无数项目从"我写着玩"变成"几百万人每天在用"的转折点。
而现在,这个客厅正在塌方。
在GitHub出现之前,开源是一片荒漠
不是比喻,是真的荒漠。
Ronacher回忆说,他的第一个开源项目住在一台自己架的服务器上。Trac、Subversion、tarball、文档,全是手动维护。他和另一个开发者Georg合伙搞了个叫"Pocoo"的组织,平摊服务器费用和运维负担。
这在当时是常态。
你想发布软件?先学会当半个系统管理员。项目要有官网、有邮件列表、有下载页、有维护者、有发布流程。每一个环节都有摩擦,每一个环节都在筛选用户。
为什么?
因为没有别的选择。
那时候的依赖不是一行package.json。是一个项目、一段历史、一群活生生的人。你要依赖它,就得了解它是怎么来的,谁在维护,为什么可信。这种摩擦让人谨慎,但也让人有安全感。
SourceForge曾经辉煌过,后来变成广告和恶意软件的垃圾场。Google Code说关就关,几百万个项目的文档和代码瞬间蒸发。Bitbucket曾经是GitHub的正经对手,现在几乎被人遗忘。
Ronacher说得扎心:
"我最早的一些开源项目现在在PyPI上还能搜到,但实际的包早就没了。元数据指向我那台早已关停的服务器。在大平台出现之前,这是常态。"
个人域名过期,VPS被关,开发者去世——他们付费维护的服务也跟着消失。 互联网曾经填满了这种小软件家园,现在大多数都消失了。
GitHub给了开源一个家,然后把它变成了全部
2008年GitHub上线,一切都变了。
它把"发布一个项目"这件事的摩擦降到了近乎为零。点几下鼠标,一个仓库就建好了。Issue、PR、Wiki、Release、Organization Pages,全是内置的。它让"给开源项目贡献代码"这件事,从需要读邮件列表、学git rebase、遵守一堆莫名其妙礼仪的硬核任务,变成了任何人都能上手的简单操作。
Ronacher说GitHub是"一份巨大的礼物",这个评价很克制。
实际上,GitHub重新定义了"开源"这个词的含义。在它出现之前,开源是极客的玩具、专业人士的领域、小众社区的自娱自乐。在它之后,开源变成了互联网的公共基础设施,变成了每个开发者每天都在使用、却不再觉得稀奇的日常。
npm和GitHub联手,把"发布代码"和"消费代码"这件事变得几乎没有成本。结果是什么?
依赖爆炸。
一个项目可以轻松依赖几百个、几千个 tiny packages。每个包都是一个陌生人写的几行代码,装配在一起跑起来像魔法,出问题的时候像噩梦。
但Ronacher没有一味指责这个趋势。他说:
"它确实让开源变得更包容了。GitHub改变了开源的'感觉',npm和其他系统改变了依赖的'感觉'。把它们加起来,就得到了一个发布代码几乎无摩擦、消费代码几乎无摩擦、项目数量爆炸式增长的世界。"
这是实话。
问题是,当整个开源世界都住在同一个屋檐下,而这个屋檐开始漏水的时候,所有人都得淋雨。
GitHub正在慢慢死去,这不是秘密
Ronacher用了"dying"这个词,很重,但他说得出来。
"GitHub正在失去一些让它曾经看起来'必然'的东西。也许这就是大型中心化平台的宿命——它们最终总会让人失望。眼下人们已经受够了不稳定的产品、频繁的改版、Copilot的AI噪音、不明确的领导层,以及那种'这个平台不再是为我们这些创造价值的人设计'的感觉。"
他还提了一句有点黑色幽默的话:
"显然GitHub也身处AI编程代理革命的风暴中,这给那边的人带来了巨大压力。但这个网站没有领导力!能维持现在这个状态简直是个奇迹。"
一个平台"没有领导力",这在一个几百亿美金的公司身上发生,听起来很魔幻,但如果你最近用过GitHub,你不会觉得奇怪。
Issue追踪器越来越像社交媒体的信息流,推送通知永远在轰炸你,真正重要的安全公告反而被淹没了。Copilot无处不在,像个过度热情的实习生,你关都关不掉。UI三个月变一次,每次都得更适应新版本。
疲劳。
这是很多开发者的共同感受。
真正有分量的人开始用脚投票了
Ronacher承认自己曾经" cringe "过。
当Zig语言项目宣布从GitHub迁移到Codeberg的时候,他的第一反应是"这太极端了"。Codeberg是德国的一个非营利性GitHub替代品,听起来像是理想主义者的玩具。
但现在,他的看法变了。
"现在我看到真正有分量、有影响力的人也在谈论离开GitHub。最明显的是Mitchell Hashimoto,他宣布Ghostty会迁移。虽然他还没说搬去哪,但这本身就是一个强烈的信号。"
Mitchell Hashimoto是谁?HashiCorp的创始人,Vagrant、Terraform、Vault、Consul——这些基础设施工具的作者。他的开源项目被全世界无数公司在用。他是开源圈里说话有分量的人。
不只是他。Strudel搬到了Codeberg,Tenacity也搬了。
Ronacher说自己现在"比一年前更频繁地出现在非GitHub平台上"。这不是情怀,这是风向变了。
但他也承认,这些迁移不太可能动摇GitHub的根本。GitHub太大了,大到即使10%的项目离开,它依然是行业默认选择。
问题是:这个"默认"还值多少钱?
分散有代价,我们可能正在忘记
Ronacher提出了一个很现实的担忧:
"回到多个forge、多个服务器、多个独立社区,会增加去中心化程度,在很多方面也会迫使系统做出改变。这可以恢复自主权,让项目不那么依赖微软领导层的反复无常。但也会让互联网再次遗忘。"
他说的"遗忘"不是比喻。
代码在理论上可以是分布式的——每个人的电脑上都有完整的仓库副本。但社交语境不是。Issue讨论、代码审查、设计决策、发布说明、安全公告、旧的tarball——这些东西脆弱得很,比我们愿意承认的更容易消失。
邮件列表承载了早期很多这种语境,但它们没有跟上现代用户的需求,使用体验简直是一场灾难。
Ronacher说了一句很透彻的话:
"我挺喜欢会遗忘的软件,它有某种净化作用。但也许真正失去东西的风险,会让我们更认真地利用分布式版本控制系统本身。"
换句话说:Git让我们可以有自己的家,但我们大多数人都懒得用。
我们需要一个不属于任何公司的档案馆
这是Ronacher文章最动人的部分。
"无论GitHub是留是活,我希望看到的,是某个公共的、无聊的、资金充裕的开源软件档案馆。某种拥有捐赠或公共资金支持的东西。它的任务不是赢得开发者生产力市场,而是确保我们创造的最重要的东西不会消失。"
花哨的功能可以是别人的问题,但源代码存档、发布产物、元数据、足够理解项目发生了什么所需的上下文——这些应该保存在某个不与某家公司的商业模式或领导层情绪绑定的的地方。
GitHub"意外地"成为了那个档案馆,因为它成为了开源活动的中心。一旦这个前提不再成立,我们不应该假设某种神奇的存档功能会自动出现,或者GitHub会继续扮演这个角色。
"我已经见过个人服务器和良好意愿会发生什么,我也见过Google Code和Bitbucket发生了什么。"
他说得对。
Google Code关闭的时候,无数项目的文档和下载链接一夜之间失效。Bitbucket衰落的时候,很多Mercurial仓库找不到新家。每一个"大平台会一直在"的假设,都被现实打脸过。
Ronacher对GitHub还有一丝希望:
"我希望它能恢复,我真的希望,因为很多历史都在那里,而且仍在上面工作的人们继承了一些真正重要的东西。但我不再认为让开源的持续记忆依赖GitHub保持健康是负责任的做法。"
我们不能假装过去二十年是正常的
文章的最后,Ronacher写了一段像遗嘱一样的话:
"我不想回到那个充满失效tarball链接和废弃Trac实例的旧网络。我也不想让开源假装过去二十年是正常的或永久的。GitHub写了开源的非凡篇章,如果这一章正在结束,下一章应该从中学习,也要从之前的历史中学习。"
更容易迁移项目,更容易镜像社交语境,更容易保存发布产物,更难让一家公司的偏离成为所有人的文化危机。
这是他的愿望,也是他给开源社区的遗书。
尾声
读完这篇文章,我一直在想一个问题:
我们是不是太把GitHub当回事了?
它是一个工具,一个平台,一家公司。它不是开源本身。开源在GitHub出现之前就存在,在GitHub消亡之后也会继续存在。
但它确实曾经是某种"家"的感觉。
Ronacher说"代码住在哪里,社区就住在哪里"。这句话让我有点难过。
因为如果社区住在一个不属于自己、随时可能被关闭的平台上,那这种归属感是有代价的。
而现在,账单到期了。
【锐评】:Ronacher这篇告别信,写得像是一代人的墓志铭。GitHub不是死于某个致命bug,而是死于"不再把开发者当人看"的慢性死亡。开源社区是时候学会自己建档案馆了,别再把家安在租来的房子里。
参考链接:
https://lucumr.pocoo.org/2026/4/28/before-github/