LWN:让 GitHub 帮我编程!

GitHub Copilot是一款能自动生成代码的机器学习系统,它引发了关于版权和自由软件许可的讨论。该系统在大量开源代码上训练,其生成的代码有时与训练数据相同,这引发了是否构成衍生作品的争议。文章探讨了 Copilot 的输出是否应视为版权作品,以及这对自由软件社区的影响。作者指出,衍生作品的宽泛定义可能有利于专有软件,而限制Copilot可能会加强版权保护,对开源不利。未来,随着类似系统的进步,版权问题可能会扩展到更广泛的领域。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

关注了就能看到更多这么棒的文章哦~

GitHub is my copilot

By Jonathan Corbet
July 15, 2021
DeepL assisted translation
https://lwn.net/Articles/862769/

编者在计算机领域工作了很久了,甚至都不愿意承认已经过去了这么久的时间。一直以来,人们总在说,总有一天所有那些乏味的编程工作都将会消失。取而代之的是,只需说出我们想要的东西,计算机就会自己来想出办法。可以说,GitHub Copilot 的公布使我们向这个方向又迈进了一步。不过,在这个过程中,它也展示了一些关于版权(copyright)和自由软件许可(fee-softwre licensing)的有趣问题。

Copilot 是一个可以自己生成代码的机器学习系统。只要给它一个函数或数据结构定义的开头部分,它会去填补其余部分。它也可以根据那些描述了所需要的功能的注释内容就来生成代码。如果人们愿意相信 Copilot 网站上的推荐评论的话,它声称可以奇迹般地弄懂开发者的意图并提供出所需的代码。它将可以去除开发中的一些繁琐工作,并提高开发人员的产出。当然,它也会产生不少安全漏洞,同时它还会上传你正在编写的代码并记住你是否接受了它的建议,但这是我们自己选择建立的世界。

当然,机器学习系统必须经过大量数据的训练。GitHub 很高兴地认识到,它恰好拥有海量代码,其中大部分都是采用了 fee-otwre license 的。因此,该公司就顺其自然地使用了托管在它这里的 public 代码仓库中的代码来训练这个模型。有证据显示,private 的代码仓库并没有被用于这一目的。目前,它已经把目前有的成果通过一个有限制的测试版软件提供了出来。该公司计划在未来将其变成一个商业产品。

Copy-and-paste

从一个角度来看,GitHub Copilot 体现了软件开发中在学校里也许并没有提到的一些方面:

  • 软件开发者的大部分时间都花在了写一些模式化的常用代码上了,这些代码其实跟之前其他项目上早就写出来的代码非常相似。当然开发人员并不觉得能摆脱这些繁琐工作是一个什么坏事。

  • 大量的软件开发工作实际上是通过复制和粘贴代码完成的。我们很想说,这就是当代开发人员的真实写照,但即使在 Stack Overflow 时代之前的时代,开发工作也是如此。

  • 虽然我们经常认为我们写的代码是原创的,但其实我们都受到了过去看到过的代码的强烈影响。阅读过大量代码的开发者往往不费脑筋就可以敲出许多有用的代码内容。

如果我们的大部分工作真的都变成了不同程度上的复制和粘贴的话,也许让计算机在能帮的上忙的时候来为我们完成这些工作,就是很有好处的了。

不过,使用免费软件来训练 Copilot 的做法已经引起了一些有趣的问题。如果一个机器学习模型是在一个特定的代码上训练出来的,那么这个模型应该算是该代码的衍生作品吗?如果是这样的话,既然使用了 GPL 许可的代码来训练此模型,那么其结果自然也应该受到 GPL 条款的约束。果真是这样的话,其实也不会有太大变化,因为 GitHub 似乎没有兴趣发布(distributing)这个模型(不发布的话也就不需要提供源代码了)。

但 Copilot 吐出的代码呢?这些代码是否也算是那些用于训练模型的代码的衍生作品呢?Copilot 有时候生成的代码是跟训练用的代码逐字逐句相同地重复出来的(根据 Copilot FAQ,大概有 0.1%的概率),因此这一事实似乎可以作为那些认为 Copilot 的输出应被视为衍生作品的人的论据了。如果真是这样的话,那么任何使用 Copilot 输出的代码体都会处于同样的情况,这将会引来一些混乱,因为它其实来自于多种代码,这些代码体的许可证可能会相互冲突,也就有了各种各样的条款要求。这种对派生作品的解释将使得所有在 Copilot 的帮助下开发出来的代码都完全无法分发。

The best outcome is unclear

编者不是律师,当然也不希望在网上扮演律师。尽管如此,还是有一些论据认为 Copilot 的输出内容不应该被看作是用于训练的代码的衍生作品。当然,GitHub 也是这么看的。Copilot 的 FAQ 中说:"在公开可见的数据集上训练机器学习模型在机器学习界看来是合理使用(fair use)"。这种看法是否完全符合实际生活中的版权法律,目前并不完全清晰,但肯定会逐渐有一些先例和实例出现。

更直观地说,人们可以很容易地将 Copilot 看作一个经验丰富的软件开发人员,它在漫长的职业生涯中看过很多代码。开发者今天写的代码肯定会受到他们过去所见代码的影响,但今天的代码一般不会被看作是昨天阅读的衍生作品。可以说,Copilot 也在做同样的事情。唯一不同的是,由于它是一台计算机,它可以阅读大量的代码——甚至包括 PHP 代码——而不会不耐烦。

前欧洲议员 Julia Reda 提出的论点是,Copilot 产生的代码片段不够大,也不够复杂,不足以被认为是原创的、可拥有版权的作品。人们不禁要问,Copilot 如果做得更加好了,是不是就会越过这条界限,但她也声称:"机器的输出根本没有资格获得版权保护——它属于公共领域(public domain)"。这一论点,如果考虑极端情况的话,就表明受版权保护的作品通过复印机就可以变成公共领域的作品了。这些论点目前可能成立,但不清楚它们长期之后是否站得住脚。

更有趣的是,Reda 和 Matthew Garrett 认为,衍生作品的解释在任何情况下都不符合自由软件社区的利益。他们说,Copyleft 是对过于强大的代码版权保护的一种回应,而不是继续加强代码版权保护的理由。正如 Garrett 所说:

GPL 用来强制共享代码的权力被专有软件的作者利用来减少这种代码共享。他们试图禁止我们查看他们的代码来确定这部分代码是如何工作的——他们认为所有那些做了这样的事情的人都是有污点的,也不可以向自由软件项目贡献类似的代码,以防产生基于原版的衍生作品。广义上讲,衍生作品的定义越广泛,专有软件作者的权力就越大。

另一方面,他继续说,像 Copilot 这样的系统提供了用专有代码训练模型并使用其结果而不用担心被玷污的前景。他说,这可能是对自由软件社区有好处的一个变化。

有理由认为,Copilot 并不是目前唯一的基于机器学习的代码合成系统。所有这些系统随着时间的推移会变得更加强大,这是完全可以预料到的。Copilot 引出的版权问题目前似乎集中在自由软件上,但它们将来很可能会扩展到这个领域之外。不过,现在发生的事情都将为未来树立先例。如果自由软件社区利用版权问题而关闭了 Copilot,那么其他利益集团将有更强的理由要求加强适用于未来世界的版权法律。这种能力可能会被利用来增强专有软件世界,或者导致那些对社区有益的机器学习系统被关闭。因此,我们应该仔细想清楚我们所希望的(what we wish for)到底是什么,以免我们真的得到它之后却又后悔。

全文完
LWN 文章遵循 CC BY-SA 4.0 许可协议。

欢迎分享、转载及基于现有协议再创作~

长按下面二维码关注,关注 LWN 深度文章以及开源社区的各种新近言论~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值