程序员终结者还是“白嫖”开源代码?GitHub推出的AI编程辅助工具陷入争议
整理 | 褚杏娟
微軟是否違反了開源許可協議規定?
6 月 30 日,微軟旗下代碼托管平臺 GitHub 推出了名為“ Copilot ”的 AI 編程輔助工具。但剛發布不久,這款工具便陷入了爭議之中。
?
?
基于數十億行開源代碼訓練
根據官方介紹,GitHub Copilot 工具由 OpenAI 開發的全新 AI 系統 OpenAI Codex 提供支持。Codex 基于 GPT-3 自然語言處理 (NLP) 模型演化而來,基于開源代碼和自然語言進行了訓練,可以理解編程語言和人類語言,并獨立生成各種形式的文本。
該公司聲稱 Copilot “在代碼生成方面比 GPT-3 能力強得多”。Copilot 利用了上傳到 GitHub 及其他網站的數十億行公開代碼?;邶嫶蟮拇a庫,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 代碼進行了訓練,它了解的所有內容都是從這些代碼中提取的。“所以我不清楚為什么這不是一種將開放源代碼轉化為商業產品的形式?!?/p>
不過,布朗大學計算機博士 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 服務?!盙itHub 開發政策和法律顧問 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编程辅助工具陷入争议的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Kafka关键参数设置
- 下一篇: 如何看待水氢发动机事件