程序員終結者還是“白嫖”開源代碼?GitHub火爆新編程工具剛推出就陷入爭議

{"type":"doc","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"6月30日,微軟旗下代碼託管平臺 GitHub 推出了名爲“ Copilot ”的 AI 編程輔助工具。但剛發佈不久,這款工具便陷入了爭議之中。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"基於數十億行開源代碼訓練"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"根據官方介紹,GitHub Copilot 工具由 OpenAI 開發的全新 AI 系統 OpenAI Codex 提供支持。Codex 基於 GPT-3 自然語言處理 (NLP) 模型演化而來,基於開源代碼和自然語言進行了訓練,可以理解編程語言和人類語言,並獨立生成各種形式的文本。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https:\/\/static001.geekbang.org\/infoq\/57\/5761d96419a01778b7078b607f85620c.png","alt":null,"title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"該公司聲稱 Copilot “在代碼生成方面比GPT-3能力強得多”。Copilot 利用了上傳到GitHub及其他網站的數十億行公開代碼。基於龐大的代碼庫,Copilot 被引入集成開發環境(IDE)後,可以對完整代碼進行遍歷,並向程序員給出基於人工智能的分析建議,程序員可以接受或拒絕。GitHub不保證生成的代碼可以工作,因爲Copilot 不會去測試代碼。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"Copilot發佈後,有使用了該工具的"},{"type":"link","attrs":{"href":"https:\/\/news.ycombinator.com\/item?id=27676266","title":null,"type":null},"content":[{"type":"text","text":"網友表示"}],"marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}]},{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":":“Copilot 猜測到了大約十分之一我想寫的代碼,其他時候會給一些相當好或完全不合適的建議。但當Copilot猜對的時候,感覺它在讀我的心。雖然只有我一個人編碼,但真的很像結對編程。我編寫了更好的代碼、文檔和測試。Copilot 使我成爲了更好的程序員。”"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"GitHub 首席執行官 Nat Friedman 也表示,目前GitHub 的數百名開發人員在編碼時一整天都在使用 Copilot,大多數人都在接受建議而不是關閉該功能。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"除了期待,也有一些開發者留言表示擔心這一功能將使程序員失業,有人開始思考這將對編程造成什麼影響。不過目前,Copilot 的主要定位還只是提供類似 IntelliSense\/IntelliCode 的代碼補全與建議功能。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"微軟是否違反開源許可?"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"雖然 Copilot 受到了很多開發者的喜歡,但也有開發者提出了質疑。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"首先是效率問題。之前已經在 J​​ava 和 Kotlin 中嘗試過兩個 AI 驅動的自動完成引擎的"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"“thu2111 ”發帖表示,由於以下兩個問題刪掉了該插件:一是 AI 建議通常不如類型驅動的 IDE 自動完成(使用 IntelliJ)有用;二是AI 插件非常積極地將它們的建議列表推到頂部,即使它們的幫助比默認值要小。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"其次便是爭議最大的問題:微軟是否違反了開源許可協議規定。Copilot 代碼生成優於GPT-3 的部分原因在於,其在包含大量公開源代碼的數據集上進行了訓練,僅 GitHub中就有 TB 級公開可用的代碼及英語語言示例。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"GitHub Copilot 現已作爲 Visual Studio Code 擴展提供,處於"},{"type":"link","attrs":{"href":"https:\/\/github.com\/features\/codespaces","title":null,"type":null},"content":[{"type":"text","text":"測試階段"}],"marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}]},{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"的Copilot將免費供開發者使用,但正式版上線後,微軟將進行收費。微軟表示,目前僅提供存儲在公共存儲庫中的代碼的服務。那麼,微軟是否有權利將這些開源代碼應用到自己的商業產品中呢?"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"根據 GitHub 工作人員 Albert Ziegler的介紹,GitHub Copilot 要記住一段代碼,必須經常查看該代碼段。由於每個文件僅向 GitHub Copilot 顯示一次,因此該代碼段需要存在於公共代碼中的許多不同文件中。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"Ziegler表示,測試的41個主要代碼段,至少出現在10個不同的文件中,其中35個出現超過100次。測試期間,GitHub Copilot在曾訪問超過70萬次GNU公共許可證後建議啓動一個空文件。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https:\/\/static001.geekbang.org\/infoq\/21\/21c88bad7018a3b212e662ca17bc1b4a.png","alt":null,"title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":"center","origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"Copilot 測試數據,來源:"},{"type":"link","attrs":{"href":"https:\/\/docs.github.com\/en\/github\/copilot\/research-recitation#footnote8","title":null,"type":null},"content":[{"type":"text","text":"Albert Ziegler"}],"marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"由於Copilot 生成的代碼不是 GPL 代碼的副本,因此開發者無法辨認出這段代碼是來自哪個項目。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"GPL 協議的一個特點就是如果引用了GPL的代碼庫,就必須開源引用部分的代碼。即如果一家公司有一行代碼引入了基於GPL協議開源的庫函數,就必須把整個代碼開源。如果“藏匿”了 GPL 代碼的片段,再將這些代碼複製粘貼到商業項目中,這對很多開發者來說就是違反了協議。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"遊戲開發者 "},{"type":"link","attrs":{"href":"https:\/\/twitter.com\/eevee\/status\/1410037309848752128","title":null,"type":null},"content":[{"type":"text","text":"eevee"}],"marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}]},{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" 表示,版權不僅包括複製和粘貼,也包括衍生作品。微軟也承認,GitHub Copilot 基於大量GPL代碼進行了訓練,它瞭解的所有內容都是從這些代碼中提取的。“所以我不清楚爲什麼這不是一種將開放源代碼轉化爲商業產品的形式。”"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"不過,布朗大學計算機博士Thomas Dickerson 對 eevee 的觀點提出了質疑:這是否意味着任何閱讀過即使是一行 GPL 代碼的人都不能再從事閉源項目,因爲那些都是衍生作品?"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"網友 Zac Skalko 表示,Copilot 肯定會徵得使用者的同意,這樣 Copilot 就不是真正的\"作者\",使用者纔是真正的提交者,因此它是可以免除責任的。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"開發者dragonwriter 則認爲微軟玩了一個文字遊戲:微軟並沒有聲稱使用“開源語料庫”,而是採用了“公共代碼”,因爲這種使用是“合理使用”,不受版權約束。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"結束語"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"此前,對於人工智能使用有版權的作品進行訓練是否侵權也引發過爭議,至今業內尚未達成共識,涉及到開源衍生作品商業化問題更是難以判定。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"2015年,小米就曾被智能終端社區 XDA 公開指責違反 GPL v2 許可。小米的 MIUI 雖然源自 Android,採用的是 Apache 2.0 許可證,但Android 使用了遵守 GPL v2 許可的 Linux 內核。根據 GPL v2 許可,修改的源代碼也必須公開,恰恰小米已經修改了 Linux 的內核源代碼,但小米一直未公開其源代碼。雖然並未引發官司,但對社區和小米形象都帶來了很大影響。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"根據紅帽發佈的"},{"type":"link","attrs":{"href":"https:\/\/www.redhat.com\/en\/enterprise-open-source-report\/2021","title":null,"type":null},"content":[{"type":"text","text":"《2021年企業開源狀況報告》"}],"marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}]},{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":",90%的IT領導者在企業中使用開源軟件,79%的人表示,未來幾年開源軟件在新興技術領域,如邊緣計算、物聯網、人工智能和機器學習中的應用將會增加。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"隨着開源應用的增加,開源項目的開發者與使用者之間也糾紛不斷。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"在過去幾年,一些雲廠商將開源軟件用到了商業產品中,但沒有返給社區任何東西、幫助維持這些項目,包括Redis Labs、MongoDB、Cockroach Labs 和 Confluent 等在內的許多公司陸續修改或變更自己的開源許可證,以防止代碼被無償使用。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"“他們只是試圖限制用戶將軟件作爲一種單獨服務。這些新許可的目的是繼續利用軟件的普及和源代碼獲得客戶,排斥基於相同代碼的SaaS服務。”GitHub開發政策和法律顧問Justin Colannino表示。時至今日,開源陣營和雲計算平臺之間長達數年的摩擦仍然存在。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":"任何開發商、初創公司和個人開發者,都需要足夠的動力去做有意義的開源項目,否則開源生態將難以爲繼。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}},{"type":"strong"}],"text":"參考鏈接:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}],"text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"link","attrs":{"href":"https:\/\/copilot.github.com\/","title":null,"type":null},"content":[{"type":"text","text":"https:\/\/copilot.github.com\/"}],"marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"link","attrs":{"href":"https:\/\/docs.github.com\/en\/github\/copilot\/research-recitation#footnote8","title":null,"type":null},"content":[{"type":"text","text":"https:\/\/docs.github.com\/en\/github\/copilot\/research-recitation#footnote8"}],"marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"link","attrs":{"href":"https:\/\/sdtimes.com\/open-source\/the-battle-of-open-source-licenses\/","title":null,"type":null},"content":[{"type":"text","text":"https:\/\/sdtimes.com\/open-source\/the-battle-of-open-source-licenses\/"}],"marks":[{"type":"color","attrs":{"color":"#494949","name":"user"}}]}]}]}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章