本文翻译自 Is legal the same as legitimate: AI reimplementation and the erosion of copyleft,原载于 Hacker News。
事件背景
上周,Dan Blanchard 发布了 chardet 的新版本。chardet 是一个 Python 文本编码检测库,每月被约 1.3 亿个项目使用。7.0 版本比前代快 48 倍,支持多核,几乎是从头重新设计的。Anthropic 的 Claude 被列为贡献者。许可证从 LGPL 变成了 MIT。
Blanchard 的说法是:他从未直接查看过现有源代码。他只把 API 和测试套件喂给 Claude,让它从零重新实现这个库。用 JPlag 测量,生成的代码与任何先前版本的相似度不到 1.3%。他的结论:这是一个独立的新作品,他没有义务延续 LGPL。库的原作者 Mark Pilgrim 在 GitHub 上开了 issue 表示反对。LGPL 要求修改必须在同一许可证下分发,而在 Pilgrim 看来,一个在充分接触原代码库后产生的重实现,不能算作「净室(clean-room)」作品。
开源圈的反应
这场争议引来了两位开源界知名人物的回应。Flask 的作者 Armin Ronacher 欢迎这次换照。Redis 的作者 Salvatore Sanfilippo(antirez)发表了更广泛的 AI 重实现辩护,从版权法和 GNU 项目的历史出发。两人通过不同路径得出相同结论:Blanchard 的做法是正当的。
我尊重这两位作者,但我认为两人都错了——或者更准确地说,两人都在回避那个真正重要的问题。
那个问题是:合法就等于正当吗? 两篇文章都没有回答这个问题。两人都从「这在法律上是允许的」跳跃到「因此这是没问题的」,中间没有停留在两个主张之间的鸿沟上。法律设定的是底线;跨过底线并不意味着行为就是对的。那道鸿沟,正是本文的起点。
历史类比用错了方向
antirez 的论证建立在历史上。当 GNU 项目重实现 UNIX 用户空间时,这是合法的。Linux 也是如此。版权法禁止复制「受保护的表达」——实际的代码、其结构、具体机制——但不保护思想或行为。AI 辅助的重实现占据同样的法律地位。因此,它是合法的。
法律分析大体正确,我无意争辩。问题在于 antirez 接下来做的:他把法律结论当作社会结论来呈现,而他所用的历史类比,仔细审视后,恰恰反驳了他自己的立场。
当 GNU 重实现 UNIX 用户空间时,方向是从专有到自由。Stallman 利用版权法的限制将专有软件变成自由软件。那个项目的道德力量不是来自其法律允许性——而是来自它运动的方向,来自它在扩展公共领域(commons)。这就是人们为之欢呼的原因。
chardet 案例的方向恰恰相反。一个受 copyleft 许可证保护的软件——保证用户有权以相同条款研究、修改和分发衍生作品——被重实现在一个不提供此类保证的宽松许可证下。这不是一个扩展公共领域的重实现。这是一个移除保护公共领域围栏的重实现。基于 chardet 7.0 构建的衍生作品没有义务分享其源代码。那个适用于每月被下载 1.3 亿次的库的义务,现在消失了。
antirez 没有回应这个方向性差异。他援引 GNU 先例,但那个先例是他结论的反例,而不是支持者。
GPL 真的与分享精神相悖吗?
Ronacher 的论证不同。他一开始就披露自己在结果中有利益:「我个人在这里也有马在比赛中,因为我也多年来希望 chardet 处于非 GPL 许可证下。所以请把我看作在这方面非常 biased 的人。」他接着写道,他认为「GPL 通过限制人们能对它做的事情而违背了那种精神」——那种精神是社会因我们分享而变得更好。
这个主张建立在对 GPL 功能的根本误读上。
先看 GPL 实际禁止什么。它不禁止保持源代码私有。它对私下修改 GPL 软件并自己使用不施加任何约束。GPL 的条件只在分发时触发。如果你分发修改后的代码,或将其作为网络服务提供,你必须以相同条款提供源代码。这不是对分享的限制。这是对分享施加的条件:如果你分享,你必须以同等方式分享。
要求改进回馈公共领域的机制,不是一个压制分享的机制。它是一个让分享递归、自我强化的机制。声称对公共领域使用者施加贡献义务会破坏分享文化,这在逻辑上站不住脚。
与 MIT 许可证的对比可以澄清这一点。在 MIT 下,任何人都可以拿走代码、改进它、将其关闭成专有产品。你可以从公共领域接受而不回馈。如果 Ronacher 称这种结构「更利于分享」,他使用的是一个具有特定方向性的分享概念:分享流向那些拥有更多资本和更多工程师来利用它的人。
历史记录证明了这一点。1990 年代,公司经常将 GPL 代码吸收到专有产品中——不是因为它们选择了宽松许可证,而是因为 copyleft 执法松懈。copyleft 机制的加强关闭了那个缺口。对于没有资源在任何其他基础上竞争、只能靠互惠竞争的个人开发者和小项目,copyleft 使交换变得大致公平。
Flask 的作者知道这个区别。如果他仍然模糊处理,这个论证不是天真——是方便。
一个自我反驳的例子
Ronacher 文章中最有趣的时刻不是论证,而是他顺带提到的一个细节:Vercel 用 AI 重实现了 GNU Bash 并发布,然后当 Cloudflare 用同样方式重实现 Next.js 时,Vercel 明显很不满。
Ronacher 把这当作一个讽刺提了一下就过去了。但这个讽刺比他承认的切得更深。Next.js 是 MIT 许可的。Cloudflare 的 vinext 没有违反任何许可证——它做的正是 Ronacher 称为对开放文化贡献的事情,应用在宽松许可的代码库上。Vercel 的反应与许可证侵权无关;它纯粹是竞争性和地盘性的。隐含的立场是:将 GPL 软件重实现为 MIT 是分享的胜利,但我们自己的 MIT 软件被竞争对手重实现则是愤慨的原因。这就是「宽松许可比 copyleft 更利于分享」这一主张在实践中的样子。原来分享精神只向一个方向流动:从自己向外。
Ronacher 注意到了这个矛盾但没有停下来。「这个发展符合我的世界观,」他写道。当你呈现反驳自己立场的证据,承认它,然后继续走向原本的结论不变,这是一个信号:结论先于论证。
合法性与社会正当性是不同的层面
回到开头提出的问题。合法就等于正当吗?
antirez 用他仔细的法律分析收尾,仿佛它解决了问题。Ronacher 承认「这里有一个明显的道德问题,但这不一定是感兴趣的。」两篇文章都把法律允许性当作社会正当性的代理。但法律只说它不会阻止什么行为——它不证明该行为是对的。从未越界进入非法的激进税务最小化仍可能被广泛视为反社会的。一家制药公司合法获得长期仿制药的专利并将价格提高百倍,并没有做一件合法并因此没问题的事。合法性是必要条件;它不是充分条件。
在 chardet 案例中,这个区分更加尖锐。LGPL 保护的不只是 Blanchard 的劳动。它是十二年来每个为库做贡献的人达成的社会契约。那个契约的条款是:如果你拿走这个并在此基础上构建,你必须以相同条款回馈。这个契约作为法律工具运作,是的,但它也是使贡献变得理性的信任基础。一个重实现可能在法律上符合新作品的资格,这个事实,以及它与原作者失信的事实,是两个独立的问题。如果法院最终裁决支持 Blanchard,那个裁决会告诉我们法律允许什么。它不会告诉我们这个行为是对的。
FSF 执行董事 Zoë Kooyman 说得很直白:「拒绝授予你自己作为用户接受的权利,无论你用什么方法,都是高度反社会的。」
谁的视角是默认的?
阅读这场辩论,我不断回到一个关于立场的问题。这两位作者是从哪里看这个情况的?
antirez 创造了 Redis。Ronacher 创造了 Flask。两人都是开源生态系统中心的人物,拥有大量受众和稳固声誉。对他们来说,AI 重实现成本的下降意味着特定的东西:以不同形式重实现他们想要的东西变得更容易。Ronacher 明确说他已经开始重实现 GNU Readline,正是因为其 copyleft 条款。
对于花了多年为 chardet 这样的库做贡献的人,同样的成本转变意味着完全不同的东西:他们贡献周围的 copyleft 保护可以被移除。两位作者从前者的立场对后者的人说话,告诉他们这从来都是合法的,历史先例支持它,适当的回应是适应。
当这种立场不对称被忽略,论证被呈现为普遍分析时,你得到的不是分析,而是合理化。两位作者得出的结论与他们自己的利益精确对齐。读者应该记住这个事实。
这场争论指向什么
撰写原始开源定义的 Bruce Perens 告诉 The Register:「软件开发的整个经济学都死了、走了、完了、完蛋了!」他把它当作警报。antirez 从类似的情况评估中得出结论:适应。Ronacher 说他觉得这个方向令人兴奋。
这三个回应都没有解决核心问题。当 copyleft 在技术上变得更容易绕过时,它变得不那么必要,还是更必要?
我认为更必要。GPL 保护的不是代码的稀缺性,而是用户的自由。生产代码变得更便宜这一事实,并不使用该代码作为侵蚀自由的载体变得可接受。如果有的话,随着重实现的摩擦消失,剥离任何暴露在外的 copyleft 的摩擦也随之消失。执法能力的侵蚀是一个法律问题。它不触及潜在的价值判断。
那个判断是:从公共领域获取的人欠公共领域一些东西。这个原则不会因为重实现需要五年还是五天而改变。没有关于 AI 生成代码的法院裁决会改变它的社会分量。
这就是法律和社区规范分歧的地方。法律是缓慢制定的,事后反映现有权力安排。开源社区几十年来建立的规范没有等待法院批准。人们在法律不提供执行保证时选择 GPL,因为它表达了他们想要归属的社区的价值观。这些价值观不会因法律改变而过期。
在之前的写作中,我主张训练 copyleft(TGPL)作为这条发展线的下一步。chardet 情况表明论证必须更进一步:到覆盖源代码下面那层的规范 copyleft。如果源代码现在可以从规范生成,规范就是 GPL 项目本质智力内容所在的地方。Blanchard 自己的主张——他只从测试套件和 API 工作,没有阅读源代码——矛盾地是一个将测试套件和 API 规范置于 copyleft 条款下保护的论证。
GPL 的历史是许可工具响应新形式剥削而演变的历史:从 GPLv2 到 GPLv3,再到 AGPL。驱动每次演变的不是法院裁决,而是社区首先达成价值判断,然后寻求法律工具来表达它。同样的顺序现在也可用。无论法院最终如何裁决 AI 重实现,我们需要首先回答的问题不是法律问题。是社会问题。从公共领域获取的人是否欠一些回馈?我认为是的。那个判断不需要裁决。
让 antirez 和 Ronacher 的文章值得一读的不是他们是对的。是他们以异常清晰的方式展示了他们选择不看的东西。当合法性被当作价值判断的替代品时,那个真正重要的问题被埋在了它已经超越的法律的脚注里。
关键要点
- 合法 ≠ 正当:法律设定的是最低标准,合规不代表行为在道义上正确
- 方向很重要:GNU 重实现 UNIX 是从专有到自由,chardet 换照是从自由到宽松,方向相反
- copyleft 的本质:它不是对分享的限制,而是让分享递归、自我强化的机制
- 立场不对称:处于有利位置的人倡导的「开放」,往往只向一个方向流动
- 技术改变现实:AI 降低了重实现的成本,但这不改变核心价值判断——从公共领域获取的人欠公共领域回馈