查看原文
其他

GitHub Copilot 受开发者抨击:它发出了版权代码!

21CTO 2023-01-28

话说,在美国加州德克萨斯农工大学,听这名字,估计在这上学的人都比较实在。这所学校的计算机科学与工程系的一位教授、开发者蒂姆戴维斯在Twitter上声称,基于人工智能的编程助手GitHub Copilot发出了大量受版权保护的代码,没有标明来源,也没有遵守LGPC许可证。

戴维斯认为所发的代码看起来确实非常接近。他还输入了注释:

//sparse matrix transpose

在一个 C++ 文件中,以下是响应生成的 Copilot 建议给出了代码,还是包含了他之前的代码注释:

/* place A(I,j) as entry C(j,i) */

戴维斯排除了 Copilot 提供代码是因为他之前编写代码的可能性,这是因为另一位使用 Copilot 的开发人员也获得类似的结果。

他上传了 Copilot照搬的“证据”。

GitHub 的首席工程师,同时也是 Copilot 的发明者 Alex Graveley 对此回应说:“有问题的代码与给出的示例实际是不同的。有一部分相似,但不相同。” 

他的话虽然比较坚决,但还是补充说了句,“这确实是一个麻烦的问题,欢迎可扩展的解决方案。”

需要大家注意的是,有问题的原始代码本身是开源的,是以LGPL 2.1 许可证下放置于 GitHub 上。开源并不代表没有版权。开源本身又有许多不同的开源许可证,每个许可证都传达不同的权限。

开源社区的担忧之一是,如果大量复制开源代码,却没有指定任何许可证,那么它就违反了开源许可证之规定。另一个担忧是开发者可能会无意中将许可证不兼容的代码组合到一个项目中。

“这是 GitHub 自动进行的未经授权的源代码清洗,” System 76 的首席工程师 Jeremy Soller指出。System 76 系统是 pop!_os Linux 发行版。“在不兼容的许可证下,你可以从字面上找到一段想要的代码,然后继续探索 Copilot,直到它重现。后来才有似是而非的否认” 。

Copilot 似乎在一定程度上预先想到了此问题。它有一个公共代码过滤器,它声称“检测与 GitHub 上的公共代码匹配的代码建议……当启用过滤器时,GitHub Copilot 会对比代码建议中大约 150 个字符的代码与 GitHub 公共代码。如果存在匹配或接近匹配,则不会向开发者显示建议。”

然而,戴维斯解释说,“当我注册GitHub时,我禁用了‘允许 Github 使用我的代码..’选项。还有一个“匹配公共代码的建议”选择了”拒绝”。但结果是一样的。”

主要问题在于,开源代码很可能会出现在不同人的多个项目中,因此最终会在 GitHub 和 Copilot 的多个用户中多次出现。无论有没有 Copilot,开发人员都可能错误地使用有版权的代码。

Copilot 上的常见问题解答对此相关主题解释的并不怎么清晰。它这样指出:“你在 GitHub Copilot 的帮助下编写的代码属于你自己,你要对它负责”,并且“GitHub Copilot 的建议绝大多数代码以前你从未见过。”

但是,它也表示“大约 1% 的情况下,建议可能包含一些长于约 150 个字符的代码片段与训练集合相匹配。” 另一个常见问题指出:“你应该采取与自己编写的任何非独立来源的代码相同的预防措施。其中包括严格测试、IP 扫描与安全漏洞检查。”

这导致一些开发者可能会想:这个是 AI 生成代码,还是 AI 在网络上搜索可能合适的开源代码?

作者:场长


相关阅读:

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存