開源軟體幾乎運行著一切,你可能會認為大多數重要程式都是由多位開發者在企業贊助的協助下維護的。你會錯的。
正如軟體供應鏈公司 Anchore 的安全副總裁 Josh Bressers 去年指出的,絕大多數開源專案,在 1180 萬個程式中佔了 700 萬個,僅有一個維護者。你可能會認為這些程式很冷門或不再被使用。你也會錯的。
Bressers 仔細研究了 JavaScript NPM 生態系統,發現每月下載量超過百萬次的專案中,「約有一半的 13,000 個下載量最大的 NPM 套件是由一個人維護的。」
換個角度想,成千上萬的關鍵程式,可能因為一次意外或心臟病發作就無法運作了。這不是好事。
我們能做什麼?你無法揮動魔杖奇蹟般地找到成千上萬的現成專家維護者。相反地,幾位知名的開源維護者一直在考慮使用 AI 來維持舊程式碼庫的生命,或使其更容易維護。
這是可能的,因為,信不信由你,AI 程式碼工具最近在程式碼編寫方面變得更加出色。這不是我的意見。在我最好的時候,我只是一個普通的程式設計師。不,這是 Linux 穩定核心的維護者 Greg Kroah-Hartman 的意見。
Kroah-Hartman 和我在阿姆斯特丹的 KubeCon Europe 會面。他告訴我:「幾個月前,我們得到所謂的『AI 垃圾』,AI 生成的安全報告明顯錯誤或品質低下。」
然後,發生了一件奇妙的事。「一個月前,」他繼續說道,「世界變了。現在我們有了真實的報告。所有開源專案都有由 AI 生成的真實報告,而且它們很好,而且是真實的。所有開源安全團隊現在都面臨這個情況。」
發生了什麼事?Kroah-Hartman 聳聳肩:「我們不知道。似乎沒有人知道為什麼。要麼是很多工具都變得更好,要麼是人們開始說,『嘿,讓我們來看看這個。』」
這並不意味著 Anthropic Claude 會很快取代 Linus Torvalds,甚至是你公司裡的中級程式設計師。但這確實意味著,如果使用得當——這裡沒有隨意編寫程式碼——AI 可以幫助清理舊的但仍在使用中的程式碼;維護被遺棄的程式;並改善現有的程式碼。
例如,Verizon 的開源資深總監 Dirk Hondhel 在 LinkedIn 上發文表示,雖然 AI 程式碼工具還沒有準備好維護程式碼,但他相信它們很快就會準備好。「這幾乎是今天就可以做到的。以這些工具在過去幾個季度看到的改進速度來看,我確信今年某個時候將能夠取得可接受的結果。」
他不是唯一一個。Ruby 專案維護者 Stan Lo (st0012) 寫道,AI 已經幫助他處理了文件主題、重構和除錯,他明確地想知道 AI 工具是否會「幫助復興未被維護的專案」以及「培養新一代的貢獻者——甚至維護者。」
事實上,已經有一個名為 Autonomous Transpilation for Legacy Application Systems (ATLAS) 的 AI 專案,幫助開發者將舊程式碼庫現代化為現代程式語言。我們可以預期很快會出現其他類似的 AI 工具。市面上有很多過時但仍在使用中的程式碼,它們可以得到現代化的更新。
在慶祝之前,讓我們考慮幾個主要問題。首先,如果我們能用 AI 改進開源程式碼,有什麼能阻止某人複製和重寫現有程式碼,然後將其置於專有授權下?律師們將因此忙碌不堪。哦,等等!——他們很快就會忙碌起來:一個名為 chardet 的重要 Python 函式庫的維護者 Dan Blanchard,剛剛發布了該程式的最新「乾淨房間」版本,採用 MIT 授權,取代了其 GNU Lesser General Public License (LGPL)。他所說的「乾淨房間」是指他使用了 Anthropic 的 Claude 完全重寫了該函式庫。Claude 現在被列為專案貢獻者。
一位自稱是該專案原始開發者的人 Mark Pilgrim,對此並不高興。Pilgrim 說:「[維護者們]聲稱這是『完全重寫』是無關緊要的,因為他們充分接觸了原始授權的程式碼。加入一個花哨的程式碼產生器並不會賦予他們任何額外的權利。」
然而,Blanchard 聲稱「chardet 7 並非衍生自早期版本。」我是否提到過使用 AI 修改或複製開源程式碼將會導致訴訟?
還有另一個問題:雖然 AI 在修復程式碼問題方面似乎比以前有用得多,但市面上仍然充斥著大量的 AI 垃圾,開源專案維護者們正被其淹沒。問問流行的開源數據傳輸程式 cURL 的創始人 Daniel Stenberg 就知道了。
幾乎所有開源專案維護者都能講出同樣的故事。在某些情況下,AI 垃圾已被證明具有如此毒性,以至於專案本身已經死亡。例如,Python Software Foundation 的 Jannis Leidel,Jazzband 的首席維護者,關閉了該專案,因為「湧入的 AI 生成的垃圾 PR 和問題」淹沒了該專案。
Torvalds 本人,一位謹慎的 AI 使用者,警告說雖然 AI 可以快速生成程式碼,但結果可能「難以維護」。他將 AI 視為一種提高生產力的工具,但當出現問題時,它並不能取代真正理解程式碼中發生情況的必要性。而且,我向你保證,事情總會出問題。
Linux Foundation 的安全組織 Alpha-Omega Project 和 Open Source Security Foundation (OpenSSF) 正在透過免費提供 AI 工具給維護者來解決這個問題。Kroah-Hartman 說:「OpenSSF 擁有必要的活躍資源來支持眾多專案,這些專案將幫助這些過度勞累的維護者處理他們目前收到的日益增長的 AI 生成的安全報告的分類和處理。」
雖然 AI 對開源開發者和維護者來說正變得真正有用,但在 AI 和開源程式設計真正和諧地協同工作之前,仍有許多法律、程式碼和品質問題需要解決。