最近掘金上有个帖子火了,介绍了一个叫malus的项目。这东西干了一件特别欠揍的事——它用AI”学习”一段GPL协议的代码,然后输出一段功能完全相同的”全新”代码,挂上MIT协议。

法律上,完全合规。

GPL白写了。你精心选择的开源协议,被一个AI用三秒钟绕过去了。

你以为License是防盗门,其实是纸糊的

大部分程序员对开源协议有一种朴素的信任:我选了GPL,别人就不能拿我的代码做闭源产品;我选了MIT,至少得保留我的版权声明。

这个信任在人类世界里基本成立。你抄了我的代码,diff一下就能看出来,法庭上铁证如山。

但AI改变了游戏规则。

当一个大语言模型”读”了你的代码之后,它不是在复制粘贴——它是在”理解”。它学会了你代码背后的逻辑、模式、算法思路,然后用完全不同的变量名、不同的代码结构,重新”写”出一段功能一样的代码。

这就像一个厨师看了你的菜谱,理解了做法,然后用自己的话重新写了一份。新菜谱的每一个字都是他写的,但菜的味道跟你的一模一样。

你能告他抄袭吗?不能。因为版权法保护的是”表达”,不是”想法”。你的菜谱文字有版权,但”红烧肉先焯水再上色”这个方法本身——不好意思,谁都可以用。

代码也一样。你的具体代码文本有版权,但你代码里的算法逻辑、设计模式、架构思路——AI提取出来之后,法律上跟你没关系了。

Copilot:全球最大的”洗代码”机器

malus好歹是个讽刺项目,明着告诉你”我在演示漏洞”。但有一个产品,正儿八经地、大规模地、商业化地在干同样的事——GitHub Copilot。

微软拿GitHub上几乎所有公开仓库的代码训练Copilot,其中包括大量GPL协议的代码。按GPL的精神,你用了我的代码,你的衍生作品也得开源。

微软的法务团队怎么说?”AI生成的代码是全新创作。”

翻译成人话:你的GPL代码喂给了AI,AI”学会”之后吐出来的东西,跟你没有法律上的继承关系。GPL的传染性条款?失效了。

气不气?但从现行版权法的角度看,微软说的还真没毛病。

2023年一帮开发者联合起诉了Copilot,官司拖到现在还没结。但法律界的主流判断是——原告赢面不大。你很难证明AI”吐”出来的某一行代码,是从你的某一行代码”复制”来的。

你贡献的开源代码,正在免费给闭源产品打工。而你对此,什么都做不了。

知识 vs 载体:一个让人绝望的类比

为什么开源协议在AI面前这么脆弱?归根到底是一个错位——

开源协议保护的是代码的”载体”,但AI提取的是代码的”知识”。

什么是载体?就是你写下的具体字符序列——那些变量名、函数签名、注释、代码缩进。这些东西有版权。

什么是知识?就是你代码背后的逻辑——”用双指针可以把这个O(n²)优化到O(n)”、”这种并发场景用channel比mutex更优雅”。这些东西没有版权。

打个不太恰当的比方:你写了一首诗,AI把你的诗”读懂”了,然后用散文重新表达了同样的意思。字面上一个字都没抄,但你读完总觉得哪里不对。

可惜”哪里不对”不是法律用语。法院只认”你抄了哪一句”。

AI做的事情,就是把代码的”知识”从”载体”里提取出来,然后用一个全新的”载体”重新包装。

载体变了,版权就断了。GPL也好,AGPL也好,管不到。

这不是法律的bug——这是法律的feature。版权法从诞生之初就没打算保护”想法”和”知识”,它只保护”表达”。只是以前从来没有一种技术能这么高效地把”知识”从”表达”中分离出来。AI是第一个。

开源协议保护了什么:知识vs载体

开源社区的三个”药方”

被掀了桌子,总得想办法重新坐下来。开源社区眼下有三个方向在折腾:

药方一:给代码打水印。

思路跟图片数字水印一样——在训练数据里埋标记,AI生成的代码如果带有你的”指纹”,就能被追溯到。

想法很美好,但代码不是照片。照片藏个水印,肉眼看不出来,机器一扫就知道。代码被AI嚼碎咽下去之后,吐出来的是全新的字符序列——你的”水印”早就消化成渣了。(就好比你在面粉里做了记号,但面包烤出来之后,你还能找到那个记号吗?)

药方二:用了我的代码?交钱。

有人设计新型协议——你可以拿我的代码训练AI,但你AI赚了钱,得分我一杯羹。类似音乐圈的”采样费”。

方向是对的,但坑太多:怎么定义”用了”?GPT训练集里有几百万个仓库的代码,你那200行贡献占百分之多少?分钱按什么比例?谁来审计?光是吵这些问题就够开三年会了。

药方三:在协议里写”禁止AI训练”。

最硬气的方案——LICENSE文件里直接加一行:No AI Training

已经有人这么干了。但效果嘛……你在家门口贴个”禁止小广告”的告示,有用吗?代码放在GitHub上,爬虫三秒钟抓走,你根本不知道谁拿去训练了。就算知道了,你一个人去告OpenAI?人家法务团队的年薪可能比你的项目star数还多。

开源社区的三个药方

回到malus

malus做的事情一点都不违法。它只是把一件大家心知肚明但不愿说破的事情,做成了一个可以点击运行的demo。

开源不会消亡。写代码的人不会因为”AI可能学走我的代码”就不再开源——就像歌手不会因为”有人可能翻唱我的歌”就不唱了。

但游戏规则得改。

GPL、MIT、Apache这些协议诞生于一个前提:代码的传播方式是”复制”。复制就有痕迹,有痕迹就能追责。

AI把这个前提拆了。它不复制你的代码,它消化你的代码。消化完之后,法律上跟你毫无关系——就像malus这个项目演示的那样,三秒钟,干干净净。

malus在拉丁语里是”恶意”。但最恶意的不是这个项目本身,而是它揭示的现实:我们还在用纸质时代的锁,守一扇数字时代的门。

纸质时代的锁,数字时代的门

该换锁了。