AI与忒修斯之船
摘要
本文探讨了AI驱动的代码生成如何通过测试套件实现软件的重构,引发了关于版权、版权左许可和开源未来的思考。并以chardet库的重许可争议作为案例研究。
<p>由于编写代码的成本越来越低,这也包括重新实现。我最近提到,我用AI将我的一个库移植到另一种语言,结果它在实现上选择了不同的设计。在很多方面,功能是相同的,但实现的路径不同。那种移植方式是通过测试套件进行的。</p>
<p>一件相关但又有所不同的事情发生在<a href="https://github.com/chardet/chardet/issues/327#issuecomment-4005195078">chardet</a>上。当前维护者仅通过API和测试套件从头重新实现了它。动机是:实现从LGPL到MIT的重新许可。我个人在此事中有利益关系,因为多年来我也希望chardet采用非GPL许可。所以,请认为我在这一点上非常有偏见。</p>
<p>毫不意外,新实现引起了轩然大波。特别是库的原作者Mark Pilgrim反对新实现,认为它是衍生作品。而过去12年来一直维护该库的新维护者则认为它是一个新作品,并指示其编码代理严格按此操作。据作者称,通过JPlag验证,新实现是截然不同的。如果你实际考虑其工作原理,这并不太令人惊讶。它比原始实现快得多,支持多核,并采用了根本不同的设计。</p>
<p>我认为这个问题更有趣的是我们所处位置的后果。像GPL这样的版权左代码严重依赖版权和摩擦来执行。但由于它本质上是开放的,无论是否有测试,如今都可以轻易地重写。我自己也一直在打算对某些其他GPL库这样做。特别是,我前段时间出于类似原因开始重新实现readline,因为它采用GPL许可。这里有一个明显的道德问题,但这不一定是我感兴趣的。对于所有可能以MIT软件形式重新出现的GPL软件,也可能出现专有废弃软件。</p>
<p>对我个人而言,更有趣的是我们甚至可能根本无法对这些创作进行版权保护。法院仍可能裁定所有AI生成的代码都属于公有领域,因为其中没有足够的人类输入。这种情况很有可能,尽管可能性不大。</p>
<p>但这都引发了一些我们未必准备好应对的有趣新进展。例如,Vercel愉快地用Clankers重新实现了bash,但当有人以同样方式重新实现Next.js时,却明显感到不满。</p>
<p>这会产生巨大的后果。当生成代码的成本大幅下降,并且我们可以仅从测试套件重新实现时,这对软件的未来意味着什么?我们会看到大量软件以更宽松的许可重新出现吗?我们会看到大量专有软件以开源形式重新出现吗?我们会看到大量软件以专有形式重新出现吗?</p>
<p>这是一个新世界,我们对此几乎一无所知。在此期间,我们会就版权问题展开一些争斗,但我感觉很少有人会诉诸法庭,因为所有相关方实际上都有些害怕开创先例。</p>
<p>不过,就GPL而言,我认为它重新点燃了我们已经很久未见的一些关于版权左与宽松许可的旧争论。自己的作品被用Clanker重写、作者身份被抹去,这种感觉可能并不好。不过,与<a href="https://en.wikipedia.org/wiki/Ship_of_Theseus">忒修斯之船</a>不同,这似乎更明确:如果你扔掉所有代码从头开始,即使最终结果行为相同,它也是一艘新船。它只是继续承载着名字。这或许是另一个论据,说明作者应该坚持商标保护,而不是依赖许可和合同法。</p>
<p>我个人认为这一切令人兴奋。我强烈支持将东西公开,并尽可能少地执行许可。我认为分享对社会更有利,而我认为GPL通过限制其使用方式来违背这一精神。这一发展符合我的世界观。不过,我理解并非所有人都赞同这一观点,我预计因此会出现更多关于slopforks的争论。毕竟,它以最糟糕的方式结合了两个非常热门的话题:许可和AI。</p>
查看缓存全文
缓存时间: 2026/05/16 03:29
# AI 与忒修斯之船
来源:https://lucumr.pocoo.org/2026/3/5/theseus/
发表于 2026 年 3 月 5 日
由于编写代码的成本越来越低,重新实现也变得更为常见。我最近提到,我曾让一个 AI 将我某个库移植到另一种语言,结果它选择了一种不同的设计方案来实现。虽然在很多方面功能相同,但实现路径却不同。这个移植的方式是通过测试套件来驱动的。
与此相关但略有不同的情况,发生在 **chardet**(https://github.com/chardet/chardet/issues/327#issuecomment-4005195078)上。当前维护者仅通过指向 API 和测试套件,从头开始重新实现了它。动机是:将许可从 LGPL 重新许可为 MIT。我本人在这方面也有利益关系,因为我多年来也一直希望 chardet 采用非 GPL 许可证。所以请认为我在此事上非常偏袒。
毫不意外,这一新实现引发了争议。特别是该库的原作者 Mark Pilgrim 反对新实现,认为它构成衍生作品。而过去 12 年一直维护该库的现任维护者则认为这是全新作品,并指示他的编码代理精确去实现新版本。据作者所说,使用 JPlag 验证后,新实现与原有代码是不同的。考虑到其工作原理,这并不太令人惊讶。新实现比原版快得多,支持多核,并采用一种根本不同的设计。
我认为这个问题更有趣的是我们当前所处局面的后果。像 GPL 这样的 Copyleft 代码严重依赖版权和摩擦力来执行。但由于它本质上是开放的,不管有没有测试,如今都可以轻松地重写。我自己也一直打算对某些其他 GPL 库做类似的事情。特别是,不久前我开始了 readline 的重新实现,原因类似——它的 GPL 许可证。这里有一个明显的道德问题,但这不一定是我感兴趣的。对于那些可能以 MIT 软件身份重新出现的 GPL 软件,也可能出现以专有废弃软件身份重新出现的。
对我个人而言,更有趣的是,我们甚至可能根本无法对这些 AI 生成的创作进行版权保护。法院仍有可能裁定所有 AI 生成的代码属于公共领域,因为其中没有足够的人类参与。这虽然可能,但可能性不大。
但这引发了一些我们未必准备好的有趣新发展。例如,Vercel 愉快地用 Clankers 重新实现了 **bash**(https://just-bash.dev/),但当别人以同样方式重新实现 Next.js 时,却明显感到不满(https://x.com/cramforce/status/2027155457597669785)。
这有巨大的后果。当年代码生成的成本大幅下降时,我们仅凭测试套件就能重新实现,这对软件的未来意味着什么?我们会看到大量软件以更宽松的许可证重新出现吗?我们会看到大量专有软件以开源方式重新出现吗?我们会看到大量软件以专有形式重新出现吗?
这是一个新世界,我们几乎不知道如何应对。短期内我们会就版权问题发生一些争论,但我感觉很少会诉诸法庭,因为所有相关方实际上都会有点害怕设定先例。
然而,在 GPL 的情况下,我认为这会重新点燃一些很久未见的关于 copyleft 与宽松许可证的旧争论。自己的作品被 Clanker 重写,且作者的署名被抹去,这种感觉恐怕不好受。不过,与 **忒修斯之船**(https://en.wikipedia.org/wiki/忒修斯之船)不同,这里似乎更清晰:如果你扔掉所有代码,从头开始,即使最终结果行为相同,那也是新船。它只是继续承载着名字。这也许是为什么作者应该坚持商标权,而不是依赖许可证和合同法的另一个理由。
我个人认为这一切都很令人兴奋。我是坚定支持将事物公开、并且尽量少施加许可证约束的拥护者。我认为,当我们分享时,社会会更好。而我认为 GPL 通过限制人们可以做什么,违背了这种精神。这一发展符合我的世界观。不过,我理解并非每个人都持有相同观点,我预期由此会出现更多关于“slopfork”的争论。毕竟,它将许可和 AI 这两个热门话题以最糟糕的方式结合在了一起。
本条目标记为 **ai**(https://lucumr.pocoo.org/tags/ai/)、**licensing**(https://lucumr.pocoo.org/tags/licensing/)和 **python**(https://lucumr.pocoo.org/tags/python/)
复制为(https://lucumr.pocoo.org/2026/3/5/theseus.md)/ 查看(https://lucumr.pocoo.org/2026/3/5/theseus.md)markdown
相似文章
AI 还有一个安全问题
文章认为,AI 生成的代码和闭源软件本质上安全性更低,像 Anthropic 的 Mythos 这样的大模型会加剧漏洞,唯有开源项目才值得信赖。
AI正在摧毁开源,而它甚至还不够优秀
本文讨论了AI生成的代码和代理AI如何以低质量的拉取请求和错误报告淹没开源维护者,导致像curl这样的项目取消漏洞赏金,并导致维护者受到骚扰。
@rohit4verse:AI 并没有让代码变得廉价,而是让劣质代码变得致命。Matt Pocock:“软件基础比以往任何时候都更重要”AI 在……
探讨了 AI 如何放大代码质量的影响,强调软件基础比以往任何时候都更重要,并推荐了构建可靠 AI agent 的五种设计模式。
@garrytan: https://x.com/garrytan/status/2054064931515855118
Garry Tan 认为,Claude Code 和 Codex 等 AI 编程代理通过使高测试覆盖率变得经济可行,改变了软件工程领域。这创造了一种“复杂性棘轮效应”,确保代码质量在牺牲速度的前提下随时间推移而不断提升。
@SaitoWu: https://x.com/SaitoWu/status/2053101671035851216
The article summarizes a talk by Matt Pocock criticizing 'specs-to-code' approaches, arguing that solid software engineering fundamentals like TDD and modular design are more critical than ever for effectively using AI coding assistants like Claude Code.