我们所熟知的开源已死

Lobsters Hottest 新闻

摘要

一位开发者反思 AI 如何扼杀他成长于其中的开源文化,认为 AI 生成的 pull request 让维护者心生疑虑,并侵蚀了构建现代软件生态的协作精神。

<p><a href="https://lobste.rs/s/1hnx0k/open_source_as_we_know_it_is_dead">评论</a></p>
查看原文
查看缓存全文

缓存时间: 2026/10/06 01:18

# 我们所熟知的开源已死 来源:https://jross.me/open-source-as-we-know-it-is-dead/ 我在 2011 年 6 月 17 日注册了 GitHub 账号。大约两分钟后,我打开了第一个 issue(https://github.com/Pryaxis/TShock/issues/94?ref=jross.me):TShock——一个 Terraria 服务器 mod——里的传送功能坏了,我想知道为什么。不算最早的,但也足够早了,早到还记得一个 PR 被一个完全陌生的人合并时,那种如同小小奇迹的感觉。(从那以后我就沉迷于游戏服务器——现在它简直就是我的工作。) 其实 GitHub 也不算真正的起点。在那之前,是那些看一眼就会坏掉的 SVN checkout,是在 Garry's Mod 服务器上折腾 DarkRP,是给老 Counter-Strike: Source 或 Zombie Master 服务器写 SourcePawn 插件。GitHub 只是让所有人终于像在同一个房间里一样。 开源伴随了我几乎和我写软件一样长的时间。我是自学成才的,所以说我这个职业没有开源就不复存在,并不夸张。我所知道的大部分东西,都是通过阅读别人的代码学到的,或者提了一个可能有点蠢的 issue,然后由维护者耐心地解释给我听。 这篇东西不好写,标题也有点夸张。但这就是我真实开始感受到的:**我所熟知的开源,正在死去**。而令人遗憾的是,我认为杀死它的正是 AI。 ## 从来不只关乎代码 人们谈论开源时,通常谈论的是代码。许可证、包、下载量、star 数。但从来不是这些让我一次次回来。 是人。是修掉 `README` 里的一个错别字后有人对我说谢谢。是地球另一端的陌生人在我的代码里发现了 bug,发来修复时我还没醒来。是在一个 issue 里(大多还很礼貌地)争论正确的 API 是什么,最后得到了比我们任何一个人单独建造的东西都更好的结果。 我第一批真正的 GitHub PR 是在 2014 年 6 月,恰好是我注册账号整整三年后。我们当时用 PointDNS,它那个小小的 Node.js 客户端在你查询一个大 zone 的记录时总会因为 `SyntaxError: Unexpected end of input` 而崩溃。它没有正确处理分块响应,所以我修了它(https://github.com/PointDNS/nodejs-pointdns/pull/1?ref=jross.me)。两小时后,觉得自己有点勇敢,我又开了第二个 PR(https://github.com/PointDNS/nodejs-pointdns/pull/2?ref=jross.me):一次"全局整理",几乎改动了文件中的每一行。我的描述是这样写的,带着一个从未真正维护过任何东西的人的全部自信: > 我们是你们服务的忠实粉丝,但这个 node.js 模块用起来相当反直觉。希望这个 pull request 能帮未来的开发者们解决这个问题! 第二天早上,维护者把两个都合并了——没有来回拉扯,没有检查清单,没有机器人。一个陌生人发来 300 行不请自来的改动,而他们愿意冒险尝试。我无法完全解释那对我意味着什么,除了它让我觉得自己有了归属。 一个 PR 不只是一份 diff——它是有人在说"我用了你的东西,我在乎到愿意让它变得更好,而且我信任你、把我的心血交给你"。而你审核它,就是在说"我看见你了,我们一起来做吧"。这种交换,重复了数百万次,正是塑造了我们每天使用的互联网的东西。 回头看第二个 PR,说实话我有点尴尬。一个无人知晓的人不请自来的重写,还配了点傲慢的描述?今年,维护 Flask-SocketIO 的 Miguel Grinberg 直言不讳地说(https://blog.miguelgrinberg.com/post/i-am-not-a-reverse-centaur?ref=jross.me):"如今,一个不请自来的 PR 就是一个危险信号。"如果我的 PR出现在今天的仓库里,我也会觉得是 agent 写的,而且不会责怪任何人把它关掉。 Ladybird 不再接受外部 PR 时(https://ladybird.org/posts/changing-how-we-develop-ladybird/?ref=jross.me),Andreas Kling 说得好:"一个像样的补丁过去意味着大量的投入,而这种投入是善意的合理标志。这个假设现在不再成立了。"我的 PR 是一个真人写的,紧张着,希望它足够好。那份投入本身就是信号。而现在,这个信号消失了。 ## 它不再有趣了 过去一年左右发生了一些变化,很难用语言形容。 今天打开一个流行仓库的 PR,然后观察会发生什么。几秒之内,一个机器人留下一条 AI 审查,把你自己的改动总结回给你。另一个机器人发布一个预览部署。又一个发来一份附带时序图的"走查",没人要过。有时还会出现第四个来回应第三个。等到一个真人真正看它的时候,这个 thread 已经是一堵生成文本的墙,而真正的对话(有人情味的那部分)被埋在中间某个地方。 这还是好的情况——PR 是人写的。坏的情况是根本没人真的写了,比如那些"修复"并不存在的 issue 的 PR,或者用自信、貌似合理、但完全错误的代码重写半个文件的 PR,又或者看起来像模像样的安全报告,直到你发现漏洞是凭空捏造的。而且显然有账号每天在数百个仓库里开几十个这样的 PR,就为了给简历刷绿方块。 我开始把我曾经很喜欢关注的那些仓库的通知静音了,因为现在里面大多只是噪音,这让我比想象中更难过。 甚至那个最初的 PointDNS PR(https://github.com/PointDNS/nodejs-pointdns/pull/1?ref=jross.me),安静地放了十多年,去年十一月也收到了一连串垃圾评论,来自一个我从未见过的账号。一个 `#`,一个 `###`,一张上传失败的截图。我老实说不知道那是机器人还是人。而这恰恰就是问题所在。 ## 我一点都不怪维护者 AI slop PR 是最糟糕的工作。它们看起来像贡献,所以你觉得有义务去读。审核它们要花真实的时间,然后还要更多时间向一个根本不听的人(或东西)解释为什么它们错了。这些时间本可以花在真正的项目上、陪家人,或者睡觉。 而门正在关闭。很快。 不是所有地方,也不都是同一种方式,但方向很清楚。curl 终止了它的奖金漏洞赏金计划(https://daniel.haxx.se/blog/2026/01/26/the-end-of-the-curl-bug-bounty/?ref=jross.me),因为信噪比已经崩溃。Daniel Stenberg 写道,真实报告的占比已降至 5% 以下:"每二十个里连一个真的都没有。" tldraw 开始自动关闭外部 PR(https://github.com/tldraw/tldraw/issues/7695?ref=jross.me)。Ghostty 收紧了它的 AI 政策(https://github.com/ghostty-org/ghostty/pull/10412?ref=jross.me),Mitchell Hashimoto 写道,低投入的 AI 贡献让"糟糕"的计数"增加了 10 倍甚至更多"。Jazzband——拥有几十个 Python 项目——彻底关停(https://jazzband.co/news/2026/03/14/sunsetting-jazzband?ref=jross.me),归咎于 GitHub 那场由生成的 PR 和 issue 构成的 "slopocalypse"。 OpenJDK 禁止了 LLM 生成的贡献(https://mail.openjdk.org/archives/list/[email protected]/thread/NPTV4NGSIN2IOMVESWUVN7Y3ERMUBKH2/?ref=jross.me),把审核负担列为首要风险。Ladybird 停止接受公开 PR。Godot 现在要求代码必须由人类撰写(https://godotengine.org/article/contribution-policy-2026/?ref=jross.me),并禁止自主 agent。COSMIC 要求贡献者确认其 PR 不含任何 LLM 生成的代码(https://github.com/pop-os/cosmic-epoch/blob/master/.github/PULL_REQUEST_TEMPLATE.md?ref=jross.me)、评论或描述。Codeberg 的成员投票决定将大部分 AI 生成的项目(https://blog.codeberg.org/protecting-our-floss-commons-from-llms.html?ref=jross.me)踢出平台。 然后在 10 月 1 日,Sindre Sorhus 在他所有的仓库中禁用了外部 PR(https://x.com/sindresorhus/status/2105693826690298314?ref=jross.me): > 由于 AI,我已经在所有仓库中禁用了外部 pull request。开源,如我们所知的那样,在它存在的时候是有趣的。(我已经经历了 15 年) 如果你在过去十年里写过 JavaScript,你几乎肯定运行过他的代码。 细节各不相同,但形状是一样的:维护者们现在不只是在决定一个贡献好不好,而是在决定自己是否还负担得起去了解它。我不认为他们错了,而这也是最困难的部分。每一个关上门的维护者,大概都是在为他们的项目、时间和理智做出理性的选择。但当足够多的人做出同样的理性选择时,开源就开始变成另一种东西。 然后这周,Yusuke Wada 在 Hono(https://x.com/yusukebe/status/2107027870019445007?ref=jross.me)上关闭了外部贡献者的 PR。这一下真的击中了我。Hono 是我最喜欢的项目之一,我曾多次称它为 Workers 开发的黄金标准。 > 坏消息。我们在 honojs/hono 上禁用了外部贡献者的 PR……Hono 不能没有 PR 而走到今天。我永远不会忘记 @usualoma 为 RegExpRouter 创建的那个 PR。一个我们从未见过的、快得要命的 HTTP 路由器!但在这个时代 PR 行不通了。请用其他方式贡献。谢谢 这段话让人难过,因为它包含了整个矛盾。Hono 的形态是被一个局外人的 PR 塑造的,而这个局外人四年后仍在为它贡献。现在 Hono 不得不关上他们走进来的那扇门。我不认为这是虚伪,我认为这是悲痛。 就连平台也在大声说出来。2 月,GitHub 发布了"Welcome to the Eternal September of open source"(https://github.blog/open-source/maintainers/welcome-to-the-eternal-september-of-open-source-heres-what-we-plan-to-do-for-maintainers/?ref=jross.me),说得比我好:"创造的成本已经下降,但审查的成本没有。"第二天,他们推出了一项完全关闭 pull request 的设置(https://github.blog/changelog/2026-02-13-new-repository-settings-for-configuring-pull-request-access/?ref=jross.me)。此后,他们又增加了每个用户未处理 PR 的上限(https://github.blog/open-source/maintainers/how-pull-request-limits-are-cutting-down-the-noise/?ref=jross.me)(AI agent 也计入)、限制谁可以创建 issue 的功能(https://github.blog/changelog/2026-06-29-restrict-issue-creation-to-collaborators-only/?ref=jross.me),以及归档垃圾 PR 的功能(https://github.blog/changelog/2026-07-16-repository-admins-can-archive-pull-requests/?ref=jross.me),这样其他人就看不到它们了。那个让 pull request 扬名的平台,这一整年都在建造各种关闭它的方法。 有些项目没在等 GitHub 修复。Zig 去年迁移到了 Codeberg(https://ziglang.org/news/migrating-from-github-to-codeberg/?ref=jross.me),越来越多的人开始搭建自己的 Forgejo 或 Gitea 实例。我也不怪他们,因为 GitHub 最近的可靠性确实不怎么样。但每一个离开的项目,都带着它的 issue、它的历史、它的人去往一个新的地方,又多一个账号要注册,又多一个地方要去看。这让一切更加支离破碎,也让下一个陌生人更不可能偶然走进来。 ## 我也是其中一分子 我每天都在使用 AI,这让我在写这篇博客时感到有点不安。我用它写代码,用它审核代码,甚至在整理那堆导致了这篇文章的散乱笔记时也得到了帮助。它是一个了不起的工具,让我变得更快,在状态好的日子里,也让我更能胜任我的工作。我不是来劝大家停止使用它的。 但我认为我们很多人(包括我)一直把它的成本当作零。它不是——成本只是移动了位置。当生成一个 PR 只需要十秒,而正确地审核它需要三十分钟时,你所做的不过是把工作从那个想要什么东西的人身上转移到了那个不得不说"不"的人身上——而这个说"不"的人几乎总是一个本就分身乏术的志愿者。 AI 让贡献变得廉价了。它没有让维护变得廉价——如果说有什么变化的话,是它让维护昂贵得多了。 ## 我不知道解决办法是什么 我希望我能给一个干脆的答案,但我没有。 禁止 AI PR 对很多项目来说感觉是对的决定,我会为任何做出这个决定的维护者辩护——但它也是一个粗暴的工具。它会抓住那个用 AI 帮助自己写好一个测试的人,就像抓住那个把 agent 指向一千个仓库的人一样。它依赖诚实,或者依赖并不真正有效的检测手段,而且它正把我们推向一个世界:仓库默认关闭,你需要有人担保才能获得帮助的资格,而对陌生人的默认回答是"不"。 也许这就是我们正在走向的地方——更小的、信任的圈子,源码可得,但贡献需要邀请。也许这甚至没什么不好,而我只是在怀念一个从来就不会长久存在的互联网版本。 但 2010 年代初的那个我——紧张地向陌生人发送 300 行"整理"代码——走不过那扇门。当这样的人再也进不来时,我觉得我们失去了某种真实的东西。 我不知道解决办法是什么。我只是知道我很想念那种曾经的感觉。

相似文章

AI正在摧毁开源,而它甚至还不够优秀

Jeff Geerling

本文讨论了AI生成的代码和代理AI如何以低质量的拉取请求和错误报告淹没开源维护者,导致像curl这样的项目取消漏洞赏金,并导致维护者受到骚扰。

FT:AI编程热潮令开源维护者不堪重负

Reddit r/ArtificialInteligence

《金融时报》报道称,AI编程热潮正用低质量的AI生成贡献淹没开源维护者,消耗着整个生态系统。具体证据包括cURL关闭其漏洞奖励计划、Ghostty禁止AI代码、tldraw自动关闭PR,以及研究表明贡献者参与度下降。

AI 垃圾内容正在扼杀在线社区

Hacker News Top

文章认为,在 GitHub 和博客等平台上泛滥的低质量 AI 生成内容(即“AI 垃圾内容”)正在降低在线技术社区的价值。