一个在Python生态中默默服役了近二十年的基础组件,因一次“脱胎换骨”的重写,被推上了开源社区舆论的风口浪尖。
近日,Python经典编码检测工具库 chardet 发布了7.0版本。然而,这个号称“速度更快、准确性更高”的新版本,不仅变更了开源许可证,更因在重写过程中大量使用AI工具,引发了一场关于代码所有权与开源许可规则的激烈辩论。
更具戏剧性的是,在发布后不久,一位自称是原作者、已“退网”十余年的开发者突然现身,对此次变更提出强烈抗议。
一、核心矛盾:从LGPL到MIT的许可证变更
chardet 是Python生态中一个至关重要的文本编码检测库,其核心功能是自动识别字节流的编码格式,如UTF-8、GBK等。它虽然不起眼,却是 requests 等无数流行库的底层依赖。据统计,其年下载量曾高达8.54亿次。
该项目最早由开发者 Mark Pilgrim 于2006年创建,并使用 LGPL(GNU宽通用公共许可证) 发布。熟悉开源协议的开发者都知道,LGPL允许修改和分发,但对衍生作品的许可有严格要求,通常要求继续沿用相同的LGPL协议。
Mark Pilgrim在维护数年后,于2011年淡出了公众视野,项目维护工作由此交予他人。其中最主要的维护者是 Dan Blanchard,他自2012年以来负责了绝大多数版本的发布和近700次提交。
上周,Dan Blanchard发布了 chardet 7.0 版本,并在开源实战 的项目主页上宣称:“chardet 7.0 是一个完全重写的版本,采用 MIT 许可证。包名和公共API保持不变,可直接替代 chardet 5.x/6.x,速度更快,准确性更高。”

MIT许可证比LGPL宽松得多,允许用户自由使用、修改、复制、分发软件,甚至用于闭源商业项目,只需保留原作者版权声明即可。
Dan Blanchard在后续采访中解释了变更许可的动机:长期以来,他希望 chardet 能进入Python 标准库,但受限于旧许可的约束、性能瓶颈以及个人时间有限,一直无法推进。他表示:“如今,借助Claude,我得以在大约5天内完成我想做的事情。”
二、原作者“闪现”抗议:这是非法重新授权
新版发布仅两天后,一场风暴降临。一位用户名为“Mark Pilgrim”的人在GitHub仓库的Issues区提交了标题为“No right to relicense this project”的问题。
他在帖子中明确写道:“你好,我是Mark Pilgrim……我是 chardet 的最初作者……在7.0.0版本的发布中,维护者声称他们有权对这个项目进行‘重新授权’。实际上,他们并没有这样的权利;这么做是对LGPL许可的明确违反。”
他进一步指出:“根据LGPL的规定,对已授权代码进行修改后发布时,仍然必须继续使用同样的LGPL许可证。他们声称这是一次‘完全重写’并不成立,因为他们曾经大量接触过原本的授权代码(即这不是所谓的‘clean room’实现)。我郑重要求他们将项目的许可证恢复为最初的版本。”

原作者的出现和强硬表态,让事件性质从一次普通的技术升级,转变为一场关于开源规则和道德的根本性争议。
三、维护者辩护:AI辅助的“独立作品”
面对质疑,Dan Blanchard给出了他的辩护。
首先,他承认自己维护该项目超过十年,确实长期接触原始代码,不满足传统“洁净室(Clean Room)”原则中关于人员隔离的要求。但他认为,“洁净室”只是一种手段,其核心目的是确保最终产生的代码不是原始代码的“衍生作品”。
他强调,自己可以通过技术手段证明新代码是独立的。他使用代码相似度检测工具JPlag进行分析,数据显示:
chardet 7.0 与 6.0 版本的文件,最大相似度仅为 1.29%。
- 而
5.2 到 6.0 版本之间,某些文件的相似度高达 80%。

Dan Blanchard坚称,他从零开始创建了新的代码库,没有直接复制任何旧文件。如果仅仅因为曾经接触过原始代码就否定重写,那么未来任何LGPL项目的维护者都将无法在不同许可证下重新实现相同功能。“核心问题在于:新的代码是否来源于旧代码?从证据来看,它并不是。”
四、AI如何参与?过程与争议
为了保持透明,Dan Blanchard详细披露了重写过程:
- 制定设计文档:他使用Claude的“头脑风暴”功能,基于自己拟定的设计目标生成了一份详细的设计文档。目标包括:API兼容、高性能、无运行时依赖、支持PyPy、不使用任何GPL/LGPL代码等。
- 在空仓库中开发:他在一个全新的Git仓库中开始工作,并明确指示Claude不要基于任何LGPL/GPL许可的代码进行实现。
- AI生成与人工审查:他使用Claude生成各部分代码,然后亲自对每一部分进行审查、测试和迭代。他坦言:“我没有亲手编写代码,但我深度参与了代码的设计、审查和迭代的每一个环节。”
然而,争议点也随之浮现:
- 元数据依赖:有开发者发现,在重写过程中,Claude明确参考并使用了
chardet 旧版本的元数据文件(如编码-时代的映射关系),这些文件本身是LGPL项目的一部分。

- AI训练的“原罪”:Claude等大语言模型在训练时吸收了大量公开网络数据,其中必然包含
chardet 早期版本的源代码。这是否意味着AI生成的代码在本质上仍是原作的“衍生作品”?这是一个尚无定论的法律灰色地带。
- 项目的连续性:所有操作都在同一个项目仓库、同一个PyPI包名 (
chardet) 下进行,这模糊了“全新项目”与“版本升级”的界限。一个全新的、独立的作品,是否应该沿用旧项目的名称和发布渠道?
五、社区激辩:规则空白与未来隐忧
这起事件在开源社区引发了广泛而激烈的讨论,直指人工智能 时代下版权与开源协议的规则空白。
支持维护者的观点认为:
- 维护者单人无偿维护关键项目十余年,功不可没。在原作者长期消失的情况下,他用新技术让项目焕发新生,动机可以理解。
- 如果代码相似度检测能证明其独立性,那么从结果上看,这就构成了一艘“新船”。
反对者的担忧则更为深远:
- 这是一种“许可证洗白(License Laundering)”。如果把所有Copyleft(如GPL/LGPL)许可的代码喂给AI重写一遍,然后以MIT许可发布,那么所有Copyleft项目都将形同虚设。
- 自由软件基金会(FSF)执行董事 Zoë Kooyman 直言:“AI模型吸收了要重新实现的代码,因此根本不存在真正‘洁净’的实现。”
- 有评论者提出了一个尖锐的类比:如果把泄露的Windows源码丢给大模型重写后开源,能被接受吗?如果不能,那么
chardet 事件的不同之处仅仅在于“你是否同情版权方”。
这场争论没有简单的答案。它不仅是关于一个Python库的许可问题,更是对AI时代软件开发范式、知识产权边界和开源精神的一次严峻拷问。当工具的进化速度远超规则的建立,开发者们将如何在创新与合规之间找到平衡?这或许是整个行业都需要思考的课题。
参考资料: