计算机工程师和程序员长期以来一直依赖逆向工程作为复制计算机程序功能的方法,而无需直接复制受版权保护的代码。如今,AI编程工具在法律、伦理和实践层面对这种"洁净室"重写过程提出了新的挑战。
这些问题在上周随着chardet新版本的发布而浮出水面。chardet是一个用于自动检测字符编码的热门开源Python库。该代码库最初由程序员Mark Pilgrim于2006年编写,并在LGPL许可证下发布,该许可证对如何重用和重新分发代码设置了严格限制。
Dan Blanchard于2012年接手了该代码库的维护工作,但在上周发布chardet 7.0版本时引发了争议。Blanchard将这次大修描述为"从零开始,基于MIT许可证的重写",借助Claude Code的帮助使整个库"比以前更快、更准确"。
在接受The Register采访时,Blanchard表示他一直希望将chardet加入Python标准库,但没有时间解决"许可证、速度和准确性"方面的问题,这些问题阻碍了该目标的实现。不过,在Claude Code的帮助下,Blanchard说他能够在"大约五天内"彻底改造这个库,并获得48倍的性能提升。
然而,并非所有人都对这一结果满意。一位使用Mark Pilgrim名字的用户在GitHub上指出,这个新版本相当于将Pilgrim原始代码非法重新许可为更宽松的MIT许可证(其中包括允许在闭源项目中使用)。作为他原始LGPL许可代码的修改版本,Pilgrim认为这个新版本的chardet也必须保持相同的LGPL许可证。
"他们声称这是'完全重写'是无关紧要的,因为他们充分接触了原始许可的代码(即,这不是'洁净室'实现),"Pilgrim写道。"在混合中添加一个花哨的代码生成器并不会以某种方式赋予他们任何额外的权利。我恳请他们将项目恢复到原始许可证。"
到底是谁的代码?
在对Pilgrim的回应中,Blanchard承认他"广泛接触了原始代码库",这意味着他没有传统"洁净室"逆向工程通常使用的"严格分离"。但这个传统是为人类程序员建立的,目的是"确保生成的代码不是原始代码的衍生作品",Blanchard争辩道。
在这种情况下,Blanchard说新的AI生成代码与以前的代码"在性质上不同",并且"在结构上独立于旧代码"。作为证据,他引用了JPlag相似性统计数据,显示chardet 7.0.0版本的任何文件最多只有1.29%在结构上与6.0.0版本中的相应文件相似。相比之下,将5.2.0版本与6.0.0版本进行比较,在某些相应文件中发现高达80%的相似性。
"7.0.0代码库中没有任何文件在结构上类似于任何先前版本中的任何文件,"Blanchard写道。"这不是'重写了大部分但保留了一些文件'的情况。什么都没有保留。"
Blanchard说从"清空"提交和新仓库开始是从AI中制作新的非衍生代码的关键。
Blanchard说他能够通过首先在设计文档中指定架构并向Claude Code写出一些要求来完成这个"AI洁净室"过程。之后,Blanchard"在一个空仓库中开始,无法访问旧源码树,并明确指示Claude不要基于任何LGPL/GPL许可的代码"。
然而,这个简单故事有几个复杂因素。首先,Claude明确依赖了chardet先前版本的一些元数据文件,这直接引发了这个版本是否真正"衍生"的问题。
另外,Claude的模型是在从公共互联网提取的大量数据上训练的,这意味着Claude很可能在其训练中摄取了chardet先前版本的开源代码。这种先前的"知识"是否意味着Claude的创作是Pilgrim作品的"衍生品"仍是一个开放问题,即使新代码在结构上与旧代码不同。
然后还有剩余的人为因素。虽然这个新版本的代码是由Claude生成的,但Blanchard说他"使用Claude审查、测试和迭代了结果的每一部分...我没有手工编写代码,但我深度参与了设计、审查和迭代它的每个方面。"让一个对早期chardet代码有深入了解的人在审查新代码时如此重度参与,这也可能影响这个版本是否可以被认为是一个全新的项目。
勇敢新世界
所有这些问题可预见地在开源社区中引发了关于chardet 7.0.0版本合法性的巨大辩论。"大语言模型摄取了它被要求重新实现的代码,这一点没有什么'洁净'可言,"自由软件基金会执行董事Zoe Kooyman告诉The Register。
但其他人认为在代码许可争论中经常出现的"忒修斯之船"式论证在这里不太适用。"如果你丢弃所有代码并从头开始,即使最终结果表现相同,这也是一艘新船,"开源开发者Armin Ronacher在分析这种情况的博客文章中说道。
AI生成代码的法律地位仍然很大程度上未确定。
除了旧代码许可证,使用AI从头创建新代码也可能在未来产生自己的法律复杂性。法院已经表示AI不能成为专利的作者或艺术作品的版权持有者,但尚未就这对全部或部分由AI创建的软件许可意味着什么做出裁决。围绕这种生成代码可能"污染"开源许可证的问题可能会变得异常复杂。
无论这里的结果如何,能够使用AI快速重写和重新许可许多开源项目的实际影响——而无需人类程序员付出太多努力——很可能在整个社区中产生巨大的连锁效应。
"现在重写的过程如此简单,许多人对此感到困扰,"意大利程序员Salvatore "antirez" Sanfilippo在他的博客上写道。"这里有一个更根本的真理:软件的性质改变了;不同许可证下的重新实现只是这种性质被永远改变的一个例子。我认为与其对抗自动编程的每一种表现,不如建立一个新的思维模式并适应它。"
其他人则用更令人担忧的术语来形容这种巨变。"我正在打破玻璃并拉响火警!"开源倡导者Bruce Perens告诉The Register。"软件开发的整个经济学都死了、消失了、结束了、完蛋了!...我们以前也经历过这种情况,例如当印刷机出现并导致版权法时,当科学方法传播并突然有了知识积累的逻辑结构时。我认为这一次同样重大。"
Q&A
Q1:chardet是什么?这次争议的核心是什么?
A:chardet是一个用于自动检测字符编码的热门开源Python库,最初由Mark Pilgrim于2006年在LGPL许可证下发布。争议的核心是Dan Blanchard使用Claude Code重写了整个库并改为MIT许可证,但原作者认为这违反了原始的LGPL许可证要求。
Q2:AI重写代码是否算作原始代码的衍生作品?
A:这是目前法律上未确定的问题。虽然新代码在结构上与原代码相似度很低(最多1.29%),但由于开发者接触过原始代码,且AI模型可能在训练时接触过原代码,是否构成衍生作品仍存争议。
Q3:AI代码重写对开源社区有什么影响?
A:这可能彻底改变软件开发经济学。开发者现在可以快速使用AI重写和重新许可开源项目,这引发了关于代码所有权、许可证有效性和开源生态系统未来的根本性问题。