QGIS 投票通過新規:程式碼貢獻禁用 AI

開源地理資訊軟體 QGIS 把自己的 AI 政策改成了「不允許」。編號 QEP 428 的提案在 10 月 7 日於 QGIS 增強提案儲存庫中被標為 Accepted 並合併,標題只有一句話:No AI contributions permitted。

提案由 QGIS 核心開發者 Nyall Dawson 於 9 月 24 日發起,10 月 5 日進入投票。他在投票貼文中列出 4 位投贊成票的成員,另有幾位在討論中明確表態 +1;開場貼文獲得 25 個讚、3 個倒讚,前後約 15 人參與討論。QGIS 是全球使用最廣的開源 GIS 桌面軟體之一,這次表決之後,它不再接受 AI 寫出的程式碼貢獻。

從「人在迴路中」收緊到一刀切

QGIS 之前執行的是 QEP 408,核心原則叫「human in the loop」,允許使用 AI 工具,只要有人對提交負責。Dawson 在 6 月的開發者郵件列表中就提過,這套規則「相當寬鬆」,並提到 PostGIS 社群當時因為 AI 提交而鬧出的衝突。

這次提案給出的理由主要有兩條。一是維護者審不過來:AI 生成的提交量超過了人工審閱的能力,硬審會審不細,放水則會傷害程式碼品質。二是開源社群靠人與人之間的關係維繫,需要替人類貢獻者留出空間。

舊政策的執行情況也被拿出來討論。原本計畫設立的「extractive」標籤一直沒建起來;成員 uclaros 在討論中提到,大約 50 個 PR 被標成「AI Assisted」,其中約 40 個最終關閉、沒有合併。這個數字出自討論串,頁面上沒有提供逐條清單,目前無法獨立查證。

Dawson 對新規的定位是「先把門關上」,以後再按個案慢慢打開,例如拿 AI 取代 IDE 的自動補全、用來翻譯介面文字,前提是先充分討論。

跟 GDAL、Godot 比一比

同一個圈子裡,GDAL 走在前面。它的規則寫明「Submission of vibe-coded contributions is banned」,人類必須是貢獻的主要作者;大型語言模型只能當增強版自動補全,或是用來做那些本來就能以確定性演算法完成的機械式重構;無人值守的代理程式提交一律不收;任何使用大型語言模型的地方,都要在工單、留言或提交訊息中註明。

遊戲引擎 Godot 的思路更偏向「問責」,核心一句是「Contribute only what you understand」:提交者要能向維護者說明自己的程式碼,無論是用了 AI、抄了別人的程式碼,還是實作了別人的想法,都要說明哪些部分不是自己寫的。

Dawson 6 月發文時提的是參考 GDAL 加 Godot 的組合。最終落地的 QEP 428 比兩者都更嚴格:GDAL 至少替自動補全和機械式重構留了餘地,QGIS 這一版連這些都要等日後另行討論。

怎麼執行,還沒說清楚

執行層面目前只有原則。成員 timlinux 在討論中說,標準是「你是不是憑良心自己寫的程式碼」,專案不會去檢查任何人的電腦。換句話說,規則主要靠貢獻者自律,加上維護者在審閱時的判斷。

邊界上也留著幾處空白。vpicavet 和 adamjstewart 先後問到,issue、留言、PR 描述、文件這些非程式碼內容是否同樣適用;「用 AI 寫程式碼」和「用 AI 輔助排查、審閱」之間怎麼劃線,討論中也有分歧。截至提案合併,頁面上沒有看到正式答覆。

對參與開源的專案外開發者來說,這條新規的直接影響是:往 QGIS 主儲存庫提 PR 之前,Copilot、Cursor 一類工具生成的程式碼不能再直接帶進去。中國不少地理資訊、測繪和政務 GIS 專案是基於 QGIS 二次開發,自家儲存庫怎麼用 AI 不受約束,但向上游回饋修補程式時就得依新規辦理。

參考來源:QGIS 增強提案儲存庫 QEP 428 討論頁、QGIS 開發者郵件列表、CocoLoop、GDAL 專案 AI 政策;查證提案編號、投票贊成人數及約 50 個 AI Assisted PR 的說法來源。