整理 | 褚杏娟

微软是否违反了开源许可协议规定?

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 受到了很多开发者的喜欢,但也有开发者提出了质疑。

首先是效率问题。之前已经在 Java 和 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/

有道无术,术可成;有术无道,止于术

欢迎大家关注Java之道公众号

好文章,我在看❤️

程序员终结者还是“白嫖”开源代码?GitHub推出的AI编程辅助工具陷入争议相关推荐

  1. 30w+粉丝的程序员给你白漂:这些都是我常用的在线工具网站(合集)

    如果现在手里有一张低分辨率的小图,如果让它变成高清大图呢,就像这样: 那么就可以借助于bigjpg这款在线图片超分辨率神器,它使用的是人工智能方面的深度学习技术进行图片超分辨率,挺有特色的. 在线PS ...

  2. 程序员的职业技能不止于敲代码!

    程序员,除了编码,还需要关注哪些技能? 当我在寻找一名可以合作的程序员时,我认为相比起专业技能来说,非专业方面的技能更能让他们成为优秀的合作者. 事实上,本文中谈到的所有技能都能帮助技术项目编写好的代 ...

  3. java程序员一天多少行有效代码,持续更新~

    Java程序员应该知道的20个有用的库经验丰富的优秀Java开发人员的一个特点是对API(包括JDK和第三方库)有广泛的了解.今天分享一些Java开发人员应该熟悉的最有用.最基本 程序员经常会因为不编 ...

  4. 程序员以为警察不懂技术删代码,民警亮出学历,程序员懵了;4月数据库流行度排行榜;曝雷军接待王传福;VS Code 1.55...

    点击上方 "编程技术圈"关注, 星标或置顶一起成长 后台回复"大礼包"有惊喜礼包! 每日英文 Leave all your unhappiness to yes ...

  5. 刘强东:京东将末位淘汰部分高管;马斯克要求推特程序员写周报,具体到代码行数;Stable Diffusion2.0发布|极客头条...

    「极客头条」-- 技术人员的新闻圈! CSDN 的读者朋友们早上好哇,「极客头条」来啦,快来看今天都有哪些值得我们技术人关注的重要新闻吧. 整理 | 梦依丹 出品 | CSDN(ID:CSDNnews ...

  6. 千万不要相信程序员在加班时间写的代码!

    其中最重要的就是这条:不要相信一个程序员在加班时间写出来的代码. (软件工程的学说表明,连正常时间好好写的代码,也不要太相信.不过这不是本文的重点,略过不提.) (不懂代码的人,看到本文中的Java代 ...

  7. python在哪里写代码比较适合-程序员面试被要求手写代码,你与顶级程序员的差别在哪?...

    原标题:程序员面试被要求手写代码,你与顶级程序员的差别在哪? 前言: Python现在非常火,语法简单而且功能强大,很多同学都想学Python! 所以小的给各位看官们准备了收藏已久的视频教程分享给大家 ...

  8. 十二星座用JAVA怎么,十二星座的“程序员”,都是怎么写代码的?

    怎么可能看到一整段白羊座程序员写的完整代码!他们的电脑里大概存了三万多个文档,都是极其美妙的开头,然后呢?然后就没有然后了!人说金鱼的记忆只有7秒,白羊座程序员对一段新代码的热情大概只有25.7142 ...

  9. python在哪里写代码-程序员面试被要求手写代码,你与顶级程序员的差别在哪?...

    原标题:程序员面试被要求手写代码,你与顶级程序员的差别在哪? 前言: Python现在非常火,语法简单而且功能强大,很多同学都想学Python! 所以小的给各位看官们准备了收藏已久的视频教程分享给大家 ...

最新文章

  1. return与exit()
  2. AFF镜像工具集afflib-tools
  3. 贴片电阻代号对照表图_贴片二极管的检测技巧
  4. open表和closed表_excel工作表合并,多文件数据一键合成
  5. Flutter Scaffold组件详情配制使用
  6. 2021年3月国产数据库排行榜:雏凤声清阿里三连 绝代双骄华为合璧
  7. 下一代AirPods可能就可以监测你的健康状况了
  8. matlab作图函数的总结与分析.pdf,Matlab作图函数的总结与分析_黄琼湘
  9. Artifact xxx:war exploded: Error during artifact deployment. See server log for details.
  10. Python中time.sleep(0.001)真的只等待1毫秒吗?
  11. java 内部类,匿名内部类
  12. mbedTLS中的握手建立操作
  13. java 0.1 0.2_0.1+0.2结果却不等于0.3
  14. python编程自然数表达式_实现四则运算 (python实现)by 周乃君 张宏根
  15. DWG中注记平移问题
  16. ISO 14229、ISO 15765、ISO 11898的区别
  17. 每日一道题,划水有意义,看我不卷死你们(评论送书)
  18. 回顾大一|我们要做的是提前准备,而不是提前焦虑
  19. 地铁框架保护的原理_地铁直流系统中框架保护原理及处理程序
  20. qpsk的映射过程_(完整版)QPSK调制原理及matlab程序实现

热门文章

  1. ai可以滚轮缩放吗_AI侵入艺术天堂!艺术也可以“量产”了吗?
  2. email邮件中 内嵌iframe_Python+Selenium执行结果,封装函数,用Python自动发送SMTP邮件...
  3. c/c++ 求字符数组长度(非所占内存大小)
  4. (王道408考研数据结构)第二章线性表-第三节1:单链表的定义及其操作(插入和删除,建立之尾插和头插)
  5. x64 结构体系下的内存寻址
  6. http响应头中X-Frame-Options的作用及危害
  7. arp 命令详解(安装、arp欺骗防御)
  8. python requests 提示警告 InsecureRequestWarning
  9. 栈应用:中缀表达式转后缀表达式
  10. how pwm update