OceaBase开发者大会落地上海!4月20日共同探索数据库前沿趋势!报名戳 了解详情
写点什么

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

  • 2021-07-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/

公众号推荐:

2024 年 1 月,InfoQ 研究中心重磅发布《大语言模型综合能力测评报告 2024》,揭示了 10 个大模型在语义理解、文学创作、知识问答等领域的卓越表现。ChatGPT-4、文心一言等领先模型在编程、逻辑推理等方面展现出惊人的进步,预示着大模型将在 2024 年迎来更广泛的应用和创新。关注公众号「AI 前线」,回复「大模型报告」免费获取电子版研究报告。

AI 前线公众号
2021-07-01 16:178447

评论 1 条评论

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

模块三作业

blazar

「架构实战营」

中远海运集团总经理付刚峰率队访问百度 双方将加强合作

百度大脑

PaddleOCR 部署实战之Java&C#方案直播分享来啦

百度大脑

学生管理系统-详细架构设计文档

AragornYang

架构训练营 架构实战营

关于阿里云多活容灾的那点事

阿里巴巴云原生

阿里云 云原生 应用多活

学生管理系统架构设计文档

Bear

「架构实战营」

[架构实战营]-外包学生管理系统架构设计

邹玉麒

「架构实战营」

外包学生管理系统架构设计文档

石小天

「架构实战营」

模块三作业

Mr小公熊

网站开发进阶(六十八)防抖节流

No Silver Bullet

防抖节流 2月月更

"5G通达,AI赋能" AI在网络规划中的应用实践

百度大脑

内网安全-记一次内网靶机渗透

网络安全学海

黑客 网络安全 信息安全 渗透测试

Go自定义DNS解析器负载均衡实践

FunTester

HTTP 接口测试 DNS Go 语言 FunTester

NodeJS事件循环

真嗣

前端 nodejs 事件循环 eventloop

【架构师训练营】模块八作业

樰巳-堕~Horry

架构实战营 「架构实战营」

云计算情报局预告|告别 Kafka Streams,让轻量级流处理更加简单

阿里巴巴云原生

阿里云 云原生 消息队列 Kafka ETL

模块三作业

Geek_ec866b

架构实战营

如何高效交付专有云?百度智能云有妙招

百度大脑

外包学生管理系统架构设计文档

smile

DDD实战(2):看看代码结构长啥样

深清秋

DDD 软件架构 生鲜电商系统

外包学生管理系统架构设计文档

「架构实战营」

学生管理系统详细架构方案

IT屠狗辈

架构实战营 详细架构

人类的AI调校计划:像个淑女,或者硬汉

脑极体

博文干货|在 Kotlin 中使用 Apache Pulsar

Apache Pulsar

开源 架构 云原生 kotlin Apache Pulsar

使用 Solidity、Web3 和 Vue.js 创建区块链游戏

devpoint

dapp NFT Solidity 2月月更

系统学习 TypeScript(三)——基础类型

编程三昧

typescript 前端 2月月更

Python3 cpython优化 实现解释器并行

字节跳动终端技术

字节跳动 编程语言 代码优化 Python3 火山引擎MARS

“首席AI架构师”+57人!百度AICA第五期结业啦

百度大脑

如何设计一个复杂的业务系统?从对领域设计、云原生、微服务、中台的理解开始

阿里巴巴云原生

阿里云 云原生 架构设计

全国人工智能师资培训班·上海站火热招生中

百度大脑

引领创新技术发展,百度荣获两项数据中心国家级荣誉

百度大脑

程序员终结者还是“白嫖”开源代码?GitHub火爆新编程工具刚推出就陷入争议_文化 & 方法_褚杏娟_InfoQ精选文章