Hacker News 中文摘要

RSS订阅

熟悉的开源已死 -- Open Source as We Know It Is Dead

2011年6月17日我注册了GitHub账号,约两分钟后就打开首个issue:TShock(一款泰拉瑞亚(Terraria)服务器模组)的传送功能出了故障。虽非最早接触开源,却记得陌生人合并PR如小奇迹。GitHub并非真正的起点,更早前是SVN,或在Garry's Mod上摆弄DarkRP,或为反恐精英:起源(Counter-Strike: Source)写SourcePawn插件,以及Zombie Master服务器。GitHub终让所有人像同处一室。

正文

我 2011 年 6 月注册了 GitHub,两分钟后开了第一个 issue:Terraria 服务器模组 TShock 的传送功能坏了。虽不是最早,但记得陌生人合并 PR 像小奇迹。之前用 SVN、玩 Garry's Mod 的 DarkRP、写 Counter-Strike 插件。开源几乎伴随我写软件生涯,自学成才,读别人代码、开笨 issue 让维护者耐心解释才走到今天。

从来不只是代码

人们谈开源总谈许可证、包、下载量、星标,但留住我的是人。是改了 README 拼写有人道谢,是地球另一端陌生人趁我睡觉前发来修 bug 的补丁,是礼貌争论 API 最后做出比谁单独都好的东西。

我 2014 年 6 月发了真正第一个 GitHub PR,距注册整三年。当时用 PointDNS,它的 Node.js 客户端在大 zone 列记录时因没处理分块响应而崩,我修了。两小时后我开了第二个 PR,几乎改了文件每行,描述写着:“我们超爱你们服务,但这模块用着反直觉,希望这 PR 帮未来开发者解决。”

维护者次日早上合并了两个,没来回、没清单、没机器人。陌生人发 300 行未经请求改动,他们赌了一把,让我觉得自己属于这里。

PR 不只是 diff,是“我用你东西、在乎到改好、把工作托付给你”。审查是“我看见你,一起做”。这交换重复百万次,建起我们每天用的互联网。

现在回头看那第二个 PR 有点尴尬。Miguel Grinberg 今年直说:“如今,未经请求的 PR 是红旗。”若我的 PR 今天进仓库,我也会当是代理写的。Andreas Kling 在 Ladybird 停收公开 PR 时说得好:“实质性补丁曾意味着实质努力,那努力是善意的合理代理。这假设不再成立。”真实的人紧张写我的 PR,努力就是信号。那东西没了。

不再有趣了

去年开始变。今天开个流行库 PR,几秒内机器人留 AI 审查把改动复述给你,另一个发预览部署,再一个发没人要的序列图讲解。等人看时,真对话埋在生成文本中间。

更糟是根本没人写:修不存在的 issue、自信但全错的重写、幻觉出的安全报告。还有账户一天在几百库刷几十个只为大绿方块。

我静音了曾经爱看的仓库通知,比预期更难过。连那个躺了十年的 PointDNS 首个 PR,去年十一月也被生人账户垃圾评论(#、###、坏截图)。不知是 bot 还是人,而这正是重点。

我一点都不怪维护者

AI 垃圾 PR 最糟。像贡献所以得读,花时间审查再花时间解释错给不听的人。那是没花在项目、家人或睡眠上的时间。

门在快速关上。curl 在信噪比崩后结束赏金,Daniel Stenberg 写真实报告不到 5%:“二十个里不到一个真。”tldraw 自动关外部 PR。Ghostty 收紧 AI 政策,Mitchell Hashimoto 写低质量 AI 贡献让“坏”增十倍。Jazzband 因 GitHub“垃圾末日”关站。OpenJDK 禁 LLM 贡献。Ladybird 停收公开 PR。Godot 要求人写禁代理。COSMIC 要贡献者确认无 LLM。Codeberg 投票禁 AI 项目。

10 月 1 日 Sindre Sorhus 在所有仓库禁用外部 PR:

因为 AI,我禁了所有仓库外部 PR。我们所知的开源,存在时挺有趣。(我干了 15 年)

你若写过 JS 大概率跑过他代码。

细节不同形状同:维护者不只决定贡献好不好,而决定能否负担去发现。他们理性,但当够多人这么选,开源变样。

本周 Yusuke Wada 在 Hono 禁用外部 PR,这个狠。Hono 是我最爱项目之一,常称 Workers 开发黄金标准。

坏消息。我们禁了 honojs/hono 外部 PR……Hono 没 PR 站不到这。我永忘 @usualoma 给 RegExpRouter 的 PR,前所未见超快路由!但这时代 PR 没用。换别方式贡献。谢谢

这引语痛在矛盾:Hono 由外人 PR 塑造,那人四年后还在贡献,现在得关自己进来的门。不是伪善是悲伤。

平台也明说。二月 GitHub 发“欢迎来到开源永恒九月”,说“创造成本降,审查成本没降”。次日发完全关 PR 设置。之后加每用户 PR 上限(AI 代理算)、限制谁开 issue、归档垃圾 PR。让 PR 出名的平台花一年建关掉它的方法。

有些不等 GitHub。Zig 搬 Codeberg,更多人搞 Forgejo/Gitea。每项目离开把问题历史人带去新处,又得注册,更碎,陌生人更难闯入。

我自己也是其中一员

我天天用 AI 写代码审查,甚至帮忙整理这文笔记。不叫谁停用。

但很多人(包括我)把成本当零。生成 PR 十秒,审查三十分钟,只是把想要者的工作推给说不和的人——几乎是本就忙的志愿者。

AI 让贡献便宜,没让维护便宜,反而更贵。

我不知道解法是什么

愿有整齐答案,没有。

禁 AI PR 对很多项目对,但钝器。它抓用 AI 写个好测试的人,也抓对千库放代理的人。靠诚实或无效检测,推我们向默认关、需担保、陌生人对默认不。

也许就去更小信任圈,源码可见、邀请贡献。也许行,我怀旧不长存网络。

但 2010 初紧张发 300 行“整理”的我进不去那门。当那样人进不来,我们失了真实东西。

不知解法。只想念曾经感觉。

评论

讨论整体并不一致悲观:多数人承认 AI 生成贡献正冲击开源维护者的时间、信任与社区感,分歧在于这是开源旧有开放模式的老问题被放大、是 GitHub 式 PR 工作流失灵,还是工具换代中必须适应的阵痛。少数人坚持开源从不等于无条件接受贡献,维护者应果断设边界;另一条主线是“先回到社区对话,再谈代码”。

认为开放的是代码,而不是社区;低质量贡献与信任缺失本就是旧问题

  • 开源之名里的开放指向代码,不自动等于建设它的社区也开放;高可靠性流行软件的开放往往在用户侧。平台越大,刷履历和低质量贡献越多,又缺少信任机制,今天更像旧问题加剧。(较多人)
  • 这更像对 GitHub 和 PR 工作流的抱怨,而非 FOSS 本身;原文完全没提邮件列表和补丁。(较多人) > 开源的开放在于代码,不自动等于社区也开放;没有信任机制,这些问题迟早会出现。(@Barrin92)

认为这只是“永恒九月”再次上演,不必当成开源之死

  • 小圈子一流行,装模作样的人就来了;他们未必作弊,只是不再好玩,于是老成员想拿球回家。这是圈层扩张与演化的常态,不该只怪某一方。(少数人)
  • 编程、黑客、开源这些社群本来也只是历史阶段,之前不存在,之后也可能被别的东西取代。(少数人) > 我们的俱乐部一流行,来玩的人就变了;他们不算作弊,只是不好玩,于是我们想把球带走。(@gavmor)

主张直接关闭或禁止 AI 生成 PR,维护者不必为“开放”愧疚

  • 已禁止生成式 AI PR,目前有效;商业开发看结果和钱,难抗拒 AI,但开源历来重过程、折腾、协作和帮人,不追求速度。(较多人)
  • 果断关掉,别犹豫;项目是帮具体的人解决问题,不是追求抽象的好软件。新贡献者本就该先证明能成为社区好成员,拒绝非人类垃圾提交没什么问题。(较多人) > 我们已禁止生成式 AI PR,目前效果不错;开源一直关乎过程,我不在乎速度。(@jcupitt)

认为贡献应回归社区对话:先讨论问题,再写代码

  • 大 PR 不再是诚意证明,参与社区才是;邮件列表或等价物会以很大规模回归。(较多人)
  • 做了三十年自由软件仍觉得有趣;现在发补丁前更重要的是先和人谈,进聊天室说明问题、听取方案,再交代码并留下测试。过去和现在靠的都是这个。(较多人)
  • 更好的流程是不管有没有 AI,贡献者都应先确立问题并获得同意,再产出大补丁。(较多人)
  • 在议题里加“起草本文未使用 LLM”的声明,至少明确给出两个人类在对话的信号;就算能伪造,目前也少有人这么做。(少数人) > 现在更要紧的是先和人谈,加入聊天室,让大家知道你在修什么,再发代码;自由软件过去和现在靠的都是这个。(@ToyKeeper)

认为维护者已不再需要贡献,AI 让每个人自建小栈,合作下降

  • 维护者不再需要贡献;工作中也如此,每人维护自己的小栈,贡献上升而合作下降,能问 Claude 就不问同事。变化无处不在。(较多人)
  • 人的面向已死或濒死;过去几个月把自己一直想做的小东西做出来,但没人在乎,因为人人能自建小栈;悲伤但无法回头。(较多人)
  • 也许小包生态会被淘汰,因为需要什么可以即时生成。(少数人) > 维护者已不再需要贡献;大家都在维护自己的小栈,贡献上升而合作下降,能问 Claude 何必问同事。(@injidup)

认为这场变化已从开源蔓延到公司内部,评审正被代理接管

  • 大厂工程师十年苦学代码库和语言,如今高质量评审常来自不理解代码的人,数量多到追不上;自己也不得不用 AI 评审和生成更多代码。代理留评论、代理回复、代理辩论技术决策,人类作者和评审者几乎退出;像把写代码细节全抽象掉,每天派一百个实习生做任务。(少数人) > 我们把写代码的细节层层抽掉,如今每天像派一百个实习生出去做任务,人类越来越远离这个职业。(@r0m4n0)

认为平台应隔离机器输出与人类讨论

  • 问题之一是机器生成内容涌入为人类设计的讨论区;GitHub 已有持续集成工具生成大量文本,本可被收好。可为自动化分析增加通道,让维护者把机器分析给 PR 作者看,又不淹没人类讨论;工具出现太快,整合方式还没定型。(少数人) > 问题之一是机器生成内容涌进为人类设计的讨论区;可以让自动分析可见,但不淹没人类讨论。(@SequoiaHope)

认为这只是又一次工具换代,适应后开源仍能继续

  • 个人体感反而更好;问题会有,Linux 内核团队能处理,其他人也能;现在更容易上手陌生项目来学习、扩展,很多项目功能更精、缺陷更少,不全是坏事。(较多人)
  • 代码不由人手敲,但陌生人隔天醒来前帮你修缺陷、说声谢谢仍会发生;要调整并前进,挡掉低质生成内容,提示词后面仍有人。写汇编的人当年也鄙视 JavaScript,后来还是往前走了。(较多人) > 这只是要调整并往前走;就像当年写汇编的人看 JavaScript,后来大家也还是接受了。(@willio58)

认为 AI 终会越过“恐怖谷”,评审可被可信地自动化

  • 希望当前只是 AI 攀爬通用智能阶梯时的恐怖谷;等工具足够强,低质生成内容会大幅消失,PR 评审有望以可信方式自动化,尽管部分问题仍会留下。(少数人) > 希望这只是 AI 的恐怖谷阶段;等它更强,低质生成会过去,PR 评审也许能以可信方式自动化。(@shingoshoji)

认为贡献形态可从代码转向文字、提示词和技能

  • 也许部分开源该从代码转向文字或散文;既然 AI 修缺陷加功能更容易,社区可分享的是想法、提示词和技能,供社区评审。清晰、克制、表达好的文字会成为明天的贡献;LLM Wiki 因基础价值扩散到许多技能就是例子。(少数人) > 既然 AI 修缺陷加功能更容易,社区能互相分享的也许会是思想、提示词和技能,清晰表达的文字就是明天的贡献。(@kayashaolu2)

有价值的补充

  • GitHub 可关闭外部贡献 PR;ternaus 从讨论中得知并启用,现在更偏好议题,因为有 Codex 辅助可生成更合意的 PR。
  • FlowingRiver 提出人工质量闸门的类比:例如要求所有提交能在 486 25MHz、4MB 内存上运行,以保持代码小可控;不建议照做,但说明项目可以设边界来提高提交质量。
  • Barrin92 提到 SQLite 因独特的开发者行为准则常被讨论;高可靠性流行软件的开放往往体现在用户侧。