Github Copilot自发布以来就一直引起人们的争议。
而近日,自由软件基金会 (FSF) 终于忍无可忍了!
FSF认为,Copilot这个技术引起了法律和哲学问题。
FSF在一篇文章中写道,GitHub Copilot「从我们的角度来看是不可接受、不公正的」。
因为Copilot需要运行付费的软件,如Microsoft的Visual Studio IDE或者Visual Studio Code编辑器。
这样,Copilot就变成了一个SaaSS(Service as a Software Substitute)。
Copilot只要「复制」「粘贴」,就能够窃取开发人员以往的工作成果。
Copilot还引起许多其它需要深入研究的问题。
比如,开发人员不知道在软件上训练神经网络是否合理。
另外,一些对Copilot感兴趣的人想搞清楚,使用GitHub存储库中复制出来的代码会不会侵权。
就算所有东西都是合法合规,但有些活动人士还是想知道,这样一家专有的软件公司,基于开发人员过往的工作成果来提供服务究竟公不公平。
为了回答这些问题,捍卫用户的使用自由,FSF宣布资助一项白皮书,一并解决Copilot、安全、机器学习和免费软件的问题。
500美元换一份白皮书
FSF在官网上列出来白皮书应该要解答的内容:
Copilot的公共存储库培训是否侵犯版权?使用是否合理使用?
Copilot的输出对违反GPL许可作品的可诉索赔的可能性有多大?
开发人员如何确保他们拥有版权的任何代码都受到保护,不受Copilot违规行为的影响?
有没有办法让使用Copilot的开发人员遵守GPL等免费软件许可证?
如果Copilot从AGPL覆盖的代码中学习,Copilot有没有侵犯AGPL?
如果Copilot生成的代码确实会导致违反自由软件许可作品,版权所有者如何发现这种违规行为?
受过训练的AI或机器学习模型是来源于机器学习产生的训练数据编译版本吗?还是用户可以通过进一步训练来修改的源代码?
Copilot训练的AI/ML模型是否受版权保护?如果是,谁拥有这个版权?
像FSF这样的道德倡导组织是否应该主张修改与这些问题相关的版权法?
如果投稿的白皮书能够解决上述的问题,就能获得500美元奖励。
https://www.fsf.org/blogs/licensing/fsf-funded-call-for-white-papers-on-philosophical-and-legal-questions-around-copilot
FSF还表示,如果还需要进一步研究,发表成后续论文,FSF会再加大资金支持。
FSF与GPL
自由软件基金会(Free Software Foundation,FAF)致力于为计算机用户争取使用软件的自由。
通过促进软件和文档的开发和自由使用,特别是GNU系统,以及反对数字限制管理(DRM)和软件专利等对计算机用户产生的威胁。
FSF发布的GNU通用公共许可证(GNU GPL)是世界上最流行的自由软件许可证。
也是唯一以促进和维护软件自由为明确目的而编写的许可证。
GNU GPL可保证用户运行、研究、共享和修改软件的自由。
同时,GPL下的任何衍生作品都必须遵循相同或等效的许可条款。
GNU官网对于GPL的解释说,如果你想把修改过的GPL代码向公众发布,就需要提供源代码。
https://www.gnu.org/licenses/gpl-faq.zh-cn.html#language-container
FSF还会发布其它重要的许可证,包括GNU LGPL、GNU AGPL和GNU FDL。
所以FSF才会这么理直气壮地质疑Copilot的存在。
质疑声迭起
GitHub Copilot凭借着自动生成代码这个强有力的噱头,推出之后就成为了讨论的焦点。
GitHub声称Copilot可以做到分析文档中的字符串、注释、函数名称以及代码本身,从而生成新的匹配代码,包括之前调用的特定函数。
发布之后就有人把Copilot拉去刷Leetcode的题库,并对这位「AI程序员」的表现十分满意。
经过数个题目的验证,Copilot每次都能通过Leetcode的测试。
鉴于几乎是实时的生成速度,博主表示,AI可能比我们更会编写代码。
不过可疑的一点是,Copilot「生成」的内容和Leetcode给的模板几乎一模一样。
无独有偶,在Copilot发布的第二天,就有网友质疑GitHub Copilot是把免费开源的代码清洗之后,摇身一变就成了赚钱的工具。
而这些代码本应该受到GNU GPL的保护,避免商用。
Copilot用基于GPL的代码进行训练这件事,网友就质疑:
GPL明确声明「不要将我的工作成果放在专利软件中」,但Copilot真就这么做了。
不出所料,这个怀疑没过两天就变成了实锤。
有网友发现,Copilot直接「复制-粘贴」了最有名的「平方根倒数速算法」。
Copilot「生成」的这段代码不仅用到了至今都没有人能理解的magic number:0x5f3759df。
旁边「生成」的注释还有对这段代码的吐槽:what the f***?
所以,其实Copilot就是把训练集中别人写好的代码重新组装了一下而已。
GitHub的解释
GitHub在Copilot的官网上表示,虽然可能有0.1%的直接引用,但是Copilot生成的代码大部分都会是原创的。
除此以外,一位名叫Albert Ziegler的团队成员表示,他收集了300名员工日常工作使用Copilot的数据,其中包括对于Python的453780条建议。
Albert在分析整理之后写了一篇看似十分完备的博客。
在博客中Albert表示,记住训练集的内容不是什么问题。
就好比背诗,大家都背诗,但这并不会让他在日常交流中这些诗带跑偏。
测试结果
对于GitHub Copilot的大部分建议,Albert表示并没有发现与训练用的代码有任何明显的重叠。
Albert认为,虽然GitHub Copilot会逐字逐句地引用一组代码,但它很少这样做。
就算是,多数情况下都是所有人都会引用的代码,而且大部分是在文件开头。
Albert表示,理想状态下,如果Copilot「生成」了一个直接从训练集复制的代码,Copilot就会告知用户。
用户再决定给这个代码署名还是直接拒绝Copilot给出的代码。
但现实是,GitHub、微软和OpenAI迟迟做不到这点。
FSF因此不得不亲自下场表示要守护开发者的权益。
网友讨论
基于道德层面,网友表示支持FSF,但同时也认为Copilot能够降低程序员写代码的门槛。
网友表示,AI其实也跟人一样,能够在任何可以获得的源代码上学习编程。
如果有人说Copilot将自己以前见过的代码粘贴在一起,那这种发言在技术和法律上都不太明智了。
当然,也有网友认为FSF应该设法让软件免费使用,而不是限制这个软件。
你觉得Copilot究竟有没有侵权呢?