InfoQ 编辑部出品——2021年度技术盘点与展望 了解详情
写点什么

程序员终结者还是“白嫖”开源代码?GitHub 火爆新编程工具刚推出就陷入争议

  • 2021 年 7 月 01 日
  • 本文字数:2471 字

    阅读完需:约 8 分钟

程序员终结者还是“白嫖”开源代码?GitHub火爆新编程工具刚推出就陷入争议

6 月 30 日,微软旗下代码托管平台 GitHub 推出了名为“ Copilot ”的 AI 编程辅助工具。但刚发布不久,这款工具便陷入了争议之中。

 

基于数十亿行开源代码训练

 

根据官方介绍,GitHub Copilot 工具由 OpenAI 开发的全新 AI 系统 OpenAI Codex 提供支持。Codex 基于 GPT-3 自然语言处理 (NLP) 模型演化而来,基于开源代码和自然语言进行了训练,可以理解编程语言和人类语言,并独立生成各种形式的文本。

 


该公司声称 Copilot “在代码生成方面比 GPT-3 能力强得多”。Copilot 利用了上传到 GitHub 及其他网站的数十亿行公开代码。基于庞大的代码库,Copilot 被引入集成开发环境(IDE)后,可以对完整代码进行遍历,并向程序员给出基于人工智能的分析建议,程序员可以接受或拒绝。GitHub 不保证生成的代码可以工作,因为 Copilot 不会去测试代码。

 

Copilot 发布后,有使用了该工具的网友表示:“Copilot 猜测到了大约十分之一我想写的代码,其他时候会给一些相当好或完全不合适的建议。但当 Copilot 猜对的时候,感觉它在读我的心。虽然只有我一个人编码,但真的很像结对编程。我编写了更好的代码、文档和测试。Copilot 使我成为了更好的程序员。”

 

GitHub 首席执行官 Nat Friedman 也表示,目前 GitHub 的数百名开发人员在编码时一整天都在使用 Copilot,大多数人都在接受建议而不是关闭该功能。

 

除了期待,也有一些开发者留言表示担心这一功能将使程序员失业,有人开始思考这将对编程造成什么影响。不过目前,Copilot 的主要定位还只是提供类似 IntelliSense/IntelliCode 的代码补全与建议功能。

 

微软是否违反开源许可?

 

虽然 Copilot 受到了很多开发者的喜欢,但也有开发者提出了质疑。

 

首先是效率问题。之前已经在 J​​ava 和 Kotlin 中尝试过两个 AI 驱动的自动完成引擎的

“thu2111 ”发帖表示,由于以下两个问题删掉了该插件:一是 AI 建议通常不如类型驱动的 IDE 自动完成(使用 IntelliJ)有用;二是 AI 插件非常积极地将它们的建议列表推到顶部,即使它们的帮助比默认值要小。

 

其次便是争议最大的问题:微软是否违反了开源许可协议规定。Copilot 代码生成优于 GPT-3 的部分原因在于,其在包含大量公开源代码的数据集上进行了训练,仅 GitHub 中就有 TB 级公开可用的代码及英语语言示例。

 

GitHub Copilot 现已作为 Visual Studio Code 扩展提供,处于测试阶段的 Copilot 将免费供开发者使用,但正式版上线后,微软将进行收费。微软表示,目前仅提供存储在公共存储库中的代码的服务。那么,微软是否有权利将这些开源代码应用到自己的商业产品中呢?

 

根据 GitHub 工作人员 Albert Ziegler 的介绍,GitHub Copilot 要记住一段代码,必须经常查看该代码段。由于每个文件仅向 GitHub Copilot 显示一次,因此该代码段需要存在于公共代码中的许多不同文件中。

 

Ziegler 表示,测试的 41 个主要代码段,至少出现在 10 个不同的文件中,其中 35 个出现超过 100 次。测试期间,GitHub Copilot 在曾访问超过 70 万次 GNU 公共许可证后建议启动一个空文件。

 


Copilot 测试数据,来源:Albert Ziegler

 

由于 Copilot 生成的代码不是 GPL 代码的副本,因此开发者无法辨认出这段代码是来自哪个项目。

 

GPL 协议的一个特点就是如果引用了 GPL 的代码库,就必须开源引用部分的代码。即如果一家公司有一行代码引入了基于 GPL 协议开源的库函数,就必须把整个代码开源。如果“藏匿”了 GPL 代码的片段,再将这些代码复制粘贴到商业项目中,这对很多开发者来说就是违反了协议。

 

游戏开发者 eevee 表示,版权不仅包括复制和粘贴,也包括衍生作品。微软也承认,GitHub Copilot 基于大量 GPL 代码进行了训练,它了解的所有内容都是从这些代码中提取的。“所以我不清楚为什么这不是一种将开放源代码转化为商业产品的形式。”

 

不过,布朗大学计算机博士 Thomas Dickerson 对 eevee 的观点提出了质疑:这是否意味着任何阅读过即使是一行 GPL 代码的人都不能再从事闭源项目,因为那些都是衍生作品?

 

网友 Zac Skalko 表示,Copilot 肯定会征得使用者的同意,这样 Copilot 就不是真正的"作者",使用者才是真正的提交者,因此它是可以免除责任的。

 

开发者 dragonwriter 则认为微软玩了一个文字游戏:微软并没有声称使用“开源语料库”,而是采用了“公共代码”,因为这种使用是“合理使用”,不受版权约束。

 

结束语

 

此前,对于人工智能使用有版权的作品进行训练是否侵权也引发过争议,至今业内尚未达成共识,涉及到开源衍生作品商业化问题更是难以判定。

 

2015 年,小米就曾被智能终端社区 XDA 公开指责违反 GPL v2 许可。小米的 MIUI 虽然源自 Android,采用的是 Apache 2.0 许可证,但 Android 使用了遵守 GPL v2 许可的 Linux 内核。根据 GPL v2 许可,修改的源代码也必须公开,恰恰小米已经修改了 Linux 的内核源代码,但小米一直未公开其源代码。虽然并未引发官司,但对社区和小米形象都带来了很大影响。

 

根据红帽发布的《2021年企业开源状况报告》,90%的 IT 领导者在企业中使用开源软件,79%的人表示,未来几年开源软件在新兴技术领域,如边缘计算、物联网、人工智能和机器学习中的应用将会增加。

 

随着开源应用的增加,开源项目的开发者与使用者之间也纠纷不断。

 

在过去几年,一些云厂商将开源软件用到了商业产品中,但没有返给社区任何东西、帮助维持这些项目,包括 Redis Labs、MongoDB、Cockroach Labs 和 Confluent 等在内的许多公司陆续修改或变更自己的开源许可证,以防止代码被无偿使用。

 

“他们只是试图限制用户将软件作为一种单独服务。这些新许可的目的是继续利用软件的普及和源代码获得客户,排斥基于相同代码的 SaaS 服务。”GitHub 开发政策和法律顾问 Justin Colannino 表示。时至今日,开源阵营和云计算平台之间长达数年的摩擦仍然存在。

 

任何开发商、初创公司和个人开发者,都需要足够的动力去做有意义的开源项目,否则开源生态将难以为继。

 

参考链接:

 

https://copilot.github.com/

https://docs.github.com/en/github/copilot/research-recitation#footnote8

https://sdtimes.com/open-source/the-battle-of-open-source-licenses/

2021 年 7 月 01 日 16:177822

评论 1 条评论

发布
暂无评论
发现更多内容

Python OpenCV 基于图像边缘提取的轮廓发现函数

梦想橡皮擦

7月日更

博睿数据亮相2021中国互联网大会,践行数字政府新路径

博睿数据

博睿数据 数据链DNA

架构实战营模块二作业

Clarke

架构实战营

Magician 1.1.16 is released, the handler adopts annotation configuration

Magician网络编程包

Java nio

“低代码开发”与“传统IT开发”的区别是什么?

优秀

低代码

2021年6月券商App行情刷新及交易体验评测报告

博睿数据

博睿数据 博睿指数 券商App

亚马逊云科技携手 Vodafone Business 向欧洲企业推广边缘计算

亚马逊云科技 (Amazon Web Services)

Web UI自动化的设计和实践

GrowingIO技术专栏

TcaplusDB·倏忽温风至,因循小暑来

tcaplus

TcaplusDB

Lamda(拉姆达)表达式演化过程

叫练

jdk8 JDK1.8新特性

第四周作业-知识星球加入星球的用例文档

小夏

产品经理训练营 邱岳

模块二作业

VE

架构实战营

Python 实战(五)| 字符串

JavaFish

智能合约DAPP系统开发技术搭建

薇電13242772558

区块链 智能合约

【入门必读】TcaplusDB数据库常见问题解决及诊断技巧集锦-信息咨询类-1

tcaplus

TcaplusDB

高阶的产品经理是什么样的?

石云升

产品经理 职场经验 7月日更

5分钟速读之Rust权威指南(四十二)高级函数

码生笔谈

rust

作为程序员,遇到问题时你的解决手段是什么?

阿杰

程序员

模块二作业:微信朋友圈高性能复杂度架构设计

Felix

便捷赔付,自在出行!亚马逊云科技助力车险业务因“云”而变

亚马逊云科技 (Amazon Web Services)

北鲲云超算:以HPC解决方案助力生命科学领域研究发展

北鲲云

捕货拼团软件系统开发详情

百分点大数据技术团队:ClickHouse国家级项目性能优化实践

百分点科技技术团队

百分点数据科学实验室:智慧应急安全生产智能决策方案建设实践

百分点科技技术团队

phabricator + gitlab 强制code review

阿呆

gitlab Code Review phabricator

利用亚马逊云科技的 Cloudify 实施 5G 网络切片

亚马逊云科技 (Amazon Web Services)

阿里“保姆级”教程,这份SpringBoot应用到实战手册,满满的精华

Java架构师迁哥

Magician 1.1.16 发布,handler采用注解配置

Magician网络编程包

Java 网络编程 nio

B 站崩了:事情不大,影响不小

Java架构师迁哥

【得物技术】零拷贝

得物技术

io 网络 零拷贝 流程 传输

网易云信线上万人连麦技术大揭秘

网易云信

网易 视频 音频技术

ShadowRealm 与微前端沙箱

ShadowRealm 与微前端沙箱

程序员终结者还是“白嫖”开源代码?GitHub火爆新编程工具刚推出就陷入争议-InfoQ