AI News HubLIVE
站內改寫3 分鐘閱讀

人工智能如何改變開源

本文探討了AI對開源軟件的多方面影響,包括項目膨脹、審核過載以及開發者發佈代碼意願下降等趨勢。AI使得代碼生成變得容易,但同時也帶來了質量控制和維護的挑戰,可能改變開源生態的未來。

來源Hacker News AI作者: pksadiq

人工智能在2025年全面進入軟件開發領域,並對開源項目產生了深遠影響。本文作者基於自身觀察,分析了幾個關鍵趨勢,這些趨勢正在改變開源軟件的世界。

項目膨脹

AI帶來的一個普遍趨勢是內容爆炸。搜索結果被生成的網站充斥,社交網絡充斥着生成的圖像和視頻,源代碼也不例外。如今,GitHub上的倉庫數量激增,但高質量項目的增長並未同步。過去,遇到一個擁有數千行代碼的較大項目時,可以合理假設作者投入了心血,瞭解問題,並有意願維護。但現在,情況完全不同。AI可以在幾分鐘內生成數千行代碼,但這些代碼可能是無意義的,甚至是危險的。有些代碼功能正常,但作者只是為自己臨時需求而生成併發布到GitHub,無意將其轉化為真正的開源項目。代碼倉庫不等同於開源項目,後者需要解決用户的問題和用例,而不僅僅是作者的一時之需。

以MeshCore為例,該項目出現了大量分支。缺少功能?直接分支,用AI編寫缺失部分,然後作為MeshCore-UltimateEdition發佈。問題是,這些分支通常投入極少精力,作者缺乏長期興趣,往往一個月後就成為廢棄軟件。

大約十年前,人們開始質疑Linux倉庫的概念是否已過時。2000年代,倉庫幾乎是Linux軟件的唯一來源。但隨着項目數量激增,發行版難以跟上。用户不得不從其他渠道獲取軟件,開發者也不再依賴發行版。然而,現在的情況可能促使精心策劃的軟件源(如Linux發行版倉庫)復興。開源世界變得過於混亂,用户可能再次重視經過篩選、可靠且長期維護的軟件源。

審核過載

AI引發的另一個趨勢是“審核過載”。過去,編寫代碼需要大量時間和精力,這本身就是一個自然過濾器。現在,代碼生成變得快速且容易,但代碼在投入生產前仍需審核。開源項目中長期有效的審核流程現已達到極限。

在GNOME 50中,Google Drive支持被移除,因為長期無人維護。用户不滿,一位用户重新添加了該功能並提交給gvfs項目。負責維護的同事感嘆,這是一個涉及4000行代碼的變更。儘管基本功能正常,但明顯是AI生成的。他仍需逐行審查,確保代碼符合質量標準和長期維護要求。

大部分努力從代碼創建轉向了代碼審查,這是AI的典型特徵。但開源中,經驗豐富的開發者原本就是瓶頸,AI使問題更加嚴重。上述例子中,同事還算幸運,貢獻者態度積極且表現出了長期興趣。然而,這如今是罕見例外。常見的貢獻是有人用AI隨意編寫代碼,缺乏深入興趣和理解,然後拋給維護者。

作者在Meshy項目中親身經歷:有人提交了9000行變更的拉取請求,聲稱添加macOS支持。作者花一小時粗略審查,發現諸多問題:代碼明顯是AI生成的,數千行只是無用的引號替換,修改了無關代碼,並覆蓋了主分支的近期更改。提交者從不回覆,之後消失。作者認為,即使一小時也是過多投入,以後會更快拒絕。

一些項目通過收緊貢獻要求來應對。例如,Flathub拒絕AI生成的應用,引起爭議。Flathub託管數千應用,每日新增,但只有三人負責審核。審核流程高度自動化,但仍需大量人工。六個月前,作者提交了兩個應用,審核過程最終提升了應用質量。但如今,人們提交完全由AI生成的應用,毫無個人努力。提交模板要求上傳展示應用功能的短視頻,僅需15分鐘,但AI生成內容的創造者連這都不願做。他們反而指責這是對Linux自由的攻擊,並迅速用AI搭建了Flathub的替代品,聲稱對所有人開放,但僅維持了一個月。

開源維護者不僅缺乏滿足審核需求的能力,也失去了動力。通常他們自己編寫功能更快,但審核曾是培養長期貢獻者和潛在繼任者的途徑。當貢獻者發送一個零投入的AI生成貢獻,且可能自身都不理解時,如何期望他們成長為長期幫助項目的人?開源軟件不僅關乎最終結果,也關乎過程——貢獻者與項目建立聯繫,並最終傳遞給他人。這與AI世界只重結果、速成和低投入形成鮮明對比。

發佈代碼意願下降

作者觀察到,開源開發正出現一種微妙的退縮趨勢。一個論點是審核過載:對某些項目而言,被AI生成內容淹沒的成本超過了社區貢獻的益處。他們可能為了透明度仍發佈源代碼,但從開放開發轉為開放源代碼但封閉開發。更不關心透明度的則可能完全封閉代碼。

另一個論點是擔心許可證被規避。現代LLM無視許可證訓練源代碼,然後輕鬆生成類似解決方案,可在任何許可證下發布。對於寬鬆許可證,這不成問題;但對於GPL等Copyleft許可證,AI構成了直接威脅。如果LLM基於你多年工作的項目生成類似代碼,並以專有許可證發佈,那就繞過了Copyleft原則。

MeshCore再次成為例子:協議和固件開源,但客户端閉源。社區發現核心成員秘密申請了MeshCore商標,並開始基於現有代碼開發自己的閉源解決方案。創始人Scott Powell認為這堅定了他保留客户端源代碼私有的決定,他表示:“在AI時代,開源等於把你的血汗付出拱手讓人以無數種方式剽竊。”

雖然觀點有爭議,但作者越來越多地看到這種立場。終身開源倡導者——過去發佈每個小腳本的人——現在保留這些東西,僅應要求提供。理由與Powell相似。

開源也源於分享的需求:編寫代碼困難,維護更難。為何各自實現相同功能?不如聯合起來開發共享庫。互聯網基礎設施正是建立在這個基礎上。但AI抑制了這種需求。例如,有人認為WordPress已死,因為“我可以輕鬆生成自己的CMS”。這低估了開源項目提供的價值——不僅僅是代碼,用對LLM的依賴取代對開源項目的依賴,長期可能得不償失。

儘管如此,對共享開源組件的依賴確實有所下降。