Vibe Porting 現象: 當 AI 一週能重寫 Next.js,開源授權該怎麼辦?
最近 Simon Willison (Django 共同作者、知名技術部落客) 點出一個正在成形的新現象: Vibe porting—用 LLM 把某個語言或某個授權的程式碼,整包移植(或乾脆從頭重寫)成另一個版本。兩個指標案例同時浮上檯面: 一邊是 chardet 7.0 用 Claude 重寫後,把 LGPL 授權改成 MIT,引發原作者 Mark Pilgrim (經典教材《Dive Into Python》作者) 沉寂 15 年後出來抗議; 另一邊是 Cloudflare 用 AI agent 一週內重寫了 Next.js,接著又花兩個月寫出 WordPress 的替代品 EmDash。小編覺得這議題值得一起看,它同時牽動了技術、法律和商業三個面向。
什麼是 Vibe Porting?
它在精神上很接近傳統的「淨室實作」(clean-room implementation): 先把現有程式碼抽成規格,再由另一組人照規格寫出全新的實作,目的就是讓產出不構成衍生作品,可以換授權也可以換語言。
編按: clean-room 的經典案例是 1980 年代 IBM PC BIOS 的相容品—一組工程師讀原版 BIOS 寫出行為規格,另一組完全沒碰過原碼的人照規格重刻。這就是 Compaq 當年切入 PC 市場的關鍵做法。
以前這種工作要幾週到幾個月的工程師人力,現在交給 AI agent,幾天甚至幾小時就能搞定。當成本從「一個工程團隊幾個月」掉到「一個人一週、幾百美金 API 費用」,整個遊戲規則就變了。
chardet 案例: 用 AI 把 LGPL 改成 MIT,合法嗎?
chardet 這個 Python 字元編碼偵測套件 15 年來一直是 LGPL 授權,維護者 Dan Blanchard 今年 3 月發布 7.0.0 版,描述是「從零開始、MIT 授權的重寫」,順手把授權條款換掉。
動機並不瑣碎: LGPL 讓 chardet 早在 2015 年就被擋在 Python 標準庫門外。當年 Guido van Rossum (Python 之父) 評估過收編 chardet,但卡在 LGPL 授權相容性就作罷。Dan 想把這塊絆腳石搬開—用 AI 重寫可能是十年來第一個看得見的路徑。
但原作者 Mark Pilgrim 沉默 15 年後首度發聲抗議:
「他們沒有這個權利,這麼做是對 LGPL 的明確違反⋯⋯他們聲稱這是『完整重寫』並無意義,因為他們早就長期接觸過原始授權程式碼(也就是說,這不是一個 clean-room 實作)。」
Dan 的回應也蠻精彩。他用 JPlag 這個抄襲偵測工具跑了比對,新版跟 6.x 相似度只有 1.29%,而正常版本演進之間通常有 80-93%。他強調自己「明確指示 Claude 不要基於任何 LGPL/GPL 授權的程式碼」,並在後來一篇 Everything Claude Saw 的自白文裡坦承:
「我試著以 clean-room 重新實作為基礎來進行這個流程,但它是一種『近似』(approximation),不是真正的 clean room。」
這句話蠻誠實的—傳統 clean-room 是兩組完全隔離的人,Dan 自己同時扮演了看過原碼、寫規格、又指揮實作的三重角色,嚴格說不符合 clean-room 定義。Ars Technica 上的社群討論後來還挖出,給 Claude 的指令檔其實有引用到 LGPL 原版的特定檔案,這讓「clean room」的主張更站不住腳。
LGPL v3 共同作者 Richard Fontana 介入後,結論偏向 Dan: 「沒有人能指出 7.0.0 保留了原版本中可受著作權保護的表達元素」,所以沒有違反 LGPL。但 Fontana 另開了一個 issue 丟出更根本的問題: 如果 Dan 沒有真正手寫這些程式碼,他對 AI 產出是否有足夠的著作權主張,可以套用 MIT 授權? 這是另一個還沒人有答案的坑。
Cloudflare: 一週重寫 Next.js,兩個月重寫 WordPress
如果 chardet 是個人案例,Cloudflare 兩個專案就是企業級的大規模示範。
Vinext: 把 Next.js 的整個 API surface 重新實作在 Vite 上。Cloudflare Workers 工程總監 Steve Faulkner (2021-2024 曾任 Vercel 基礎設施工程總監) 主導了 800+ 個 OpenCode session,總共 API 費用約 $1,100 美金。開發節奏誇張到有點不真實:
- 2/13 第一個 commit,當晚 streaming 就能動
- 隔天下午 App Router Playground 有 10/11 路由能跑
- 第三天
vinext deploy就能直接部署到 Cloudflare Workers
成果覆蓋了 Next.js 16 約 94% 的 API surface,附帶 1,700+ Vitest 單元測試和 380 Playwright E2E 測試。建置速度比 Next.js 快 4.4 倍,client bundle 還小了 57%。
EmDash: WordPress 的「精神繼承者」—用 TypeScript 建在 Astro 和 Cloudflare Workers 上。最有意思的是架構層級的重新設計: 每個 plugin 跑在獨立的 Dynamic Worker 沙盒裡,必須在 manifest 明確宣告需要的權限才能存取資料庫或發 HTTP request。直接回應 WordPress 生態「96% 安全問題來自 plugin」的老毛病。
編按: EmDash 主工程師 Matt Kane (Astro 核心團隊成員) 在 Hacker News 上有出來澄清: 「這不是 vibe-coded 的週末專案,我從 1 月中就全職在做,而且我已經在 Astro 核心團隊兩年了。」—兩個月的時程背後,是一位懂這個領域的工程師在掌舵。
Cloudflare 揭露的開發心得很實在:
「當你給 AI 好的方向、好的上下文、好的護欄,它可以非常有生產力。但人還是得掌舵。」
他們也分析了為什麼 Next.js 這個題目特別適合這樣做,小編覺得這四點幾乎可以當成「什麼專案能用 Vibe porting」的檢核表:
- Target 有完整文件: Next.js 官方文件和 Stack Overflow 問答夠多,AI 不會亂幻想 API 行為
- 測試可以當規格: Next.js 自己的測試套件可以機械式地驗證新實作的正確性
- 底層地基已經成熟: Vite 的 plugin API 和 plugin-rsc 都很穩,不用從零刻 bundler 和 RSC
- 模型夠強: Cloudflare 工程師直白寫出「更早一代的模型撐不起這種規模的 codebase」
反過來看也就知道哪些專案目前還沒辦法: 文件稀薄、沒有完整測試、底層地基也不成熟的題目,Vibe porting 還搞不定。Matt Kane 在 EmDash 那篇的 MIT 授權理由也講得直白: 「對很多企業來說,GPL 軟體只有在他們的律師免費時才是免費的。」—這解釋了為什麼授權選擇在大公司策略裡這麼關鍵。
社群怎麼看
這一波爭議也激起了頗多有見地的評論,小編挑幾個值得參考的觀點:
Bruce Perens (「Open Source」一詞的共同提出者) 在 The Register 直接下警報: 「chardet 之爭顯示 AI 可能殺死軟體授權。」他的擔憂是 copyleft 機制原本靠「衍生作品」判定來保障改進必須回饋社群,但當 AI 能在幾天內做出 1% 相似度的重寫,整套 GPL/LGPL 的防線可能正在系統性地瓦解。
Nikola Balic (獨立技術評論者,部落格 nibzard) 寫了一篇 「軟體的後著作權時代」,觀點更結構化:
「軟體一直以來就不太適合用著作權來保護。AI 並沒有創造這個錯位,只是讓人再也沒辦法忽略。」
他指出 AI 真正改變的不是「拷貝」的道德地位,而是「重新實作」的成本。以前 rewrite 貴、redesign 貴、相容實作貴—就算法律允許也沒人做。現在一個規格、一組測試套件、一份 wire protocol 描述,就能催生多個可行的重新實作。
也有務實的正面聲音。Ars Technica 的討論串裡有開發者分享: 「這件事有個好處,維護者可以現代化和改進他們原本沒時間碰的老 code。我花了幾天就把 littlefs 從 C 移植到 Rust。」
不過也有人持續質疑 chardet 的做法: Kitty Giraudel (知名前端開發者、無障礙議題倡議者) 寫了一篇「論 chardet、AI 和 OSS 授權」,認為就算法律上站得住腳,這種做法「違反了開源社群的禮節和倫理精神」—畢竟原作者開口了,維護者選擇繼續推進而非協商,這本身就是個訊號。
小編的觀察
Vibe porting 的技術門檻明顯降低了。接下來一兩年,應該會看到更多「重寫對手主流專案」的動作浮出水面—法律、商業、生態三邊的張力才剛剛開始展開。幾個值得持續追蹤的問題:
- 如果 AI 重寫能合法繞過「衍生作品」判定,copyleft (GPL/LGPL) 授權的感染力是不是正在快速消解? 還會有新授權條款嘗試補這個洞嗎?
- 反過來問: 人對 AI 產出要有多少「創作性貢獻」才足以主張著作權? 這是 Fontana 在 chardet 丟出的問題—如果純指示 AI 而沒實際參與設計決策,著作權主張的強度就會有疑慮,連帶使 MIT 授權的效力也站不穩。
- 下一波會不會出現「先開源立 flag、吸引生態,再用 AI 重寫切成專有授權」這種操作?
Cloudflare 的文章結尾有一句話蠻發人深省:
「軟體裡大多數的抽象層之所以存在,是因為人類需要幫助管理複雜度。」
當 AI 可以把整個系統的 context 一次吞下去,原本為了「人類認知極限」而存在的中間層框架,可能就沒那麼必要了。這個論點當然激進—抽象不只是給人看,還牽動維護性、團隊分工、生態協作—但至少值得重新檢視一次,哪些抽象是真的必要,哪些只是歷史慣性。