QCon北京「鸿蒙专场」火热来袭!即刻报名,与创新同行~ 了解详情
写点什么

程序员终结者还是“白嫖”开源代码?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/

2021-07-01 16:178793

评论 1 条评论

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

【活动报名】PolarDB开源数据库&PG中文社区技术沙龙温州站

阿里云数据库开源

数据库 postgresql 阿里云 开源 polarDB

Go_Gin之初体验

神木鼎

golang 日更 gin框架

头部企业走入无人区,国产数智化厂商挑大梁

用友BIP

做客《创新之路》,Tapdata 创始人唐建法对话央视著名主持人李雨霏,畅聊创业故事

tapdata

如何在 Mac 上查看显示刷新率

互联网搬砖工作者

小程序的安全架构解析

Onegun

小程序 安全 小程序容器 小程序架构

GitHub发布即百万!字节内网超实用 java性能优化手册,star超十万

Java你猿哥

Java JVM ssm Java性能调优 java程序优化

MLCC龙头涨价;车厂砍单芯片;台积电28nm设备订单全部取消!

元器件秋姐

芯片 汽车 资讯 新能源 MLCC

今年互联网是“银二铜三铁四丐五”?程序员面试如何破局?

Java你猿哥

Java 架构 算法 多线程 java面试

兼顾可扩展、高并发与数据一致性:咸鱼优惠系统设计实践

Java你猿哥

Java 架构 ssm 架构设计 并发

软件测试丨Pytest学习笔记-Mark标记、Skip跳过、xFail预期失败

测试人

软件测试 自动化测试 测试开发 pytest

创业做共享电动车!如何找厂家合作

共享电单车厂家

共享电动车厂家 共享电单车厂商 共享电单车投放 共享电动车创业项目

GPT:低代码的终局性机遇

小博

人工智能 低代码 PaaS GPT

跨平台的Markdown编辑器:Typora for Mac中文版

真大的脸盆

2023淘宝天猫金婴奖公布,小度学习机获年度超级新品奖!

科技热闻

哪些技术有可能坐上智慧城市发展的快车

Onegun

智慧城市 小程序容器 数字城市

阿里内部教材:15W字的SpringCloud微服务实战,我一口气给你打包

做梦都在改BUG

Java 架构 微服务 Spring Cloud

WebSocket与Socket、TCP、HTTP的区别

Apifox

程序员 TCP socket HTTP websocket

大开眼界!Jenkins结合SpringCloud+K8S,打通微服一条龙技术讲解

做梦都在改BUG

Java Kubernetes k8s Spring Cloud jenkins

NFTScan 开发者平台发布 CU 付费方案,为 Web3 初创团队提供多链 NFT API 服务

NFT Research

NFT #Web3

如何解决注册并发问题并提高QPS

北桥苏

队列 并发 Redis 核心技术与实战

德邦快递:逆境之下,让数字化辅助业务的利润增长

Kyligence

数据分析 数字化管理 指标中台

从GitHub火到头条!共计1658页的Java岗面试核心MCA版,拿走不谢

做梦都在改BUG

Java java面试 Java八股文 Java面试题 Java面试八股文

还在分不清各种IO模型?

Java你猿哥

Java Linux io I/O模型 Java IO

Last Week in Milvus

Zilliz

Milvus Zilliz 向量数据库

用scrum敏捷工具做敏捷需求管理

顿顿顿

Scrum 敏捷开发 敏捷项目管理 看板工具

Spring Boot如何优雅提高接口数据安全性

做梦都在改BUG

Java spring Spring Boot

如何利用java实现一个布隆过滤器?

做梦都在改BUG

Java 布隆过滤器

大模型竞争白热化 这家广州的科技公司却开辟了新战场

科技热闻

intellij idea 粘贴字符串如何不带换行符?

源字节1号

微信小程序 开源 软件开发 前端开发 后端开发

全新问世!阿里内藏版的SpringBoot 2.5实战笔记,全面覆盖新特性

做梦都在改BUG

Java spring 微服务 Spring Boot 框架

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