I Regret Migrating to Codeberg

Marius

我後悔遷移到 Codeberg

原文由 Marius 發布,訂閱此部落格

我後悔遷移到 Codeberg

我當初離開 GitHub 的主要原因,並不是某個功能或某次當機,而是平台在 微軟接手後出現的「垃圾化」(enshittification)。網頁介面被重寫成一坨遲鈍的 JavaScript,把原本運作正常的東西弄壞,不然就是慢到讓人用起來煩不勝煩。除了技術上的衰敗,GitHub 也已經變成實質上的「公共基礎設施」,就像 WhatsApp 一樣,託管了全世界相當大比例的軟體原始碼,也因此讓微軟得以對所有人的專案——進而對所有人的數位生活——握有不該由單一公司掌握的影響力與監控能力。除此之外,不時傳出正當開發者因微軟的任意封鎖而失去帳號的故事,更讓人覺得至少在別的地方留個備份是個好主意。

Codeberg 看起來是個可行的替代方案。它為自由及開源專案提供了一個有信譽的棲身之所,更重要的是,一個同樣免費的棲身之所,由非營利協會營運,而不是由全世界最大軟體公司的子公司掌控。可惜的是,它最近一次的服務條款更新,似乎正朝著改變我當初為之而搬過去的那個核心——也就是「自由」——踏出第一步。

人類的愚蠢

到目前為止我發表過的每一個專案,都是用 100% 人類的愚蠢打造出來的,而不是什麼「人工智慧」,更精確地說,不是 LLM。我對於 Codeberg 禁止那些主要由 LLM 驅動的專案並沒有特別強烈的感覺,至少沒有像我對它同時禁止正當加密貨幣專案那樣強烈,後者看起來純粹是被硬湊進來的,唯一的理由大概就是大多數人還記得,在 LLM 接棒成為眾矢之的之前,加密貨幣就是當時的頭號反派。這兩項條款在幾天內先後落地,LLM 的禁令在 6 月 29 日,加密貨幣的禁令在 7 月 2 日,都是以 Assembly 2026 提案的形式提出,而現在的條款竟把後者歸類在——偏偏是——「損害 Codeberg 聲譽的內容」底下,聽起來就像是法律術語版的「我們其實沒有充分的理由,也沒有足夠多的不良前例,足以全面封殺它」

然而,那篇公告部落格文章寫得非常糟糕,而其中題為「無人開發團隊」的那一節更是糟中之糟。文章中寫道:

用 LLM 來處理你的程式碼會給你一種腎上腺素飆升的快感。你可以高速開發,好像自己擁有一個龐大的團隊。只不過你根本沒有。事實上,你(往往)是孤身一人,和一台把能源轉換成程式碼的統計機器一起工作。

而再往下一點,它又寫道:

看起來許多「vibe coder」並沒有意識到,他們身邊其實根本沒有什麼社群。

這番話完全脫離了大多數自由軟體實際上是怎麼做出來的。絕大多數 FOSS 開發者都是單打獨鬥,他們身邊唯一的 cOmMuNiTy,就是那些要求新功能或回報錯誤、卻多半從未以任何形式做出貢獻的使用者。我已經發表一些無聊的小工具長達數十年,早在這個網站、甚至早在 GitHub 出現之前(還記得 SourceForge 曾是當紅炸子雞的時候嗎?),而其中沒有任何一個專案真的擁有過那種 Codeberg 在文章裡浪漫化描繪的「社群」。我是個凡事都親手寫程式、為此花上荒謬多時間的獨狼,而那種認為 LLM 就是區分「有真實社群的真專案」和「假專案」關鍵的想法,只要稍微看看任何程式碼託管平台上那些平凡卻實用的小工具究竟是怎麼誕生的,就會不攻自破。

老實說,Codeberg 會拿出這種論點還有點自以為是,考慮到這個平台本身基本上就活在 Forgejo 的同溫層裡,而 Forgejo 叛變繼承來的活躍貢獻者社群,是從 Gitea 那裡得來的——Gitea 可是在 Forgejo 出現之前,就花了將近六年時間建立起那個社群。一個靠著硬分叉別人專案才取得自身社群的專案,回過頭來卻對著單打獨鬥的開發者說教,說他們沒有社群,實在很難讓人一本正經地看待。

此外,Codeberg「擁有社群」「是值得被託管的正當軟體」混為一談,但對個人專案而言,門檻從來就只是一個能跑的建置,最好有個授權,或許再加上一份 README,而不是一個擠滿貢獻者的頻道。讓那些小型的、單人作者工具生態值得存在的原因,恰恰在於它們根本不需要一個社群來證明自己存在的正當性,而一個賣點就是託管個人程式碼的託管平台,卻反過來主張相反的論點,實在很奇怪。

審查

真正讓我困擾的,並不是針對 LLM 專案的特定禁令,也不是針對加密貨幣專案的特定禁令。而是一個以「自由軟體」為核心的集散地,現在卻開始告訴使用者哪種類型的軟體是好的、哪種是不好的,這比看起來更接近審查。一旦平台在條款裡寫明某個類別「損害其聲譽」並可據此移除,決定的關鍵就不再是程式碼是否合法、是否能跑、是否有用,而是它是否符合平台所抱持的立場。我會說,被這種一刀切禁令掃到的專案中,有相當大一部分是正當的軟體,而不是什麼 vibe-coded slop垃圾幣實作。

在我能想到的所有平台中,每一個採取這種做法的平台,都在開始對使用者強制推行某種意識形態的那一刻變得充滿爭議——無論那個意識形態當時是什麼,也無論當時看起來多麼正當。機制永遠都一樣:先出現一個真實的問題,接著一個不受歡迎的類別成了顯而易見的代罪羔羊,平台不去解決問題本身,反而封禁整個類別,而那個禁令接著就成了下一個類別、再下一個類別的先例。今天被認為封得毫無爭議的類別,就是明天這套機制得以存在的理由,而當初為第一次封禁拍手叫好的使用者,到了第二次往往根本沒被徵詢過意見。

我承認這兩個類別都不是沒有問題。LLM 驅動的儲存庫確實會對基礎設施造成負擔,確實會產生難以處理的大量低品質 issue 和 pull request,也確實帶來了 Codeberg 在文章中提到的那些關於版權與程式碼來源的真實疑慮。加密貨幣領域反過來,或許也比軟體界任何其他角落都製造了更多徹頭徹尾的騙局。然而,全面封殺當下的頭號反派並不是解決這些問題的辦法。

現在甚至連林納斯·托瓦茲這樣的人,都提出了相當合理的觀點,認為 LLM 只是個工具,而且「顯然是個有用的工具」,只要謹慎使用、並以同樣的標準檢視其產出,在 Linux 核心開發中就有其正當的位置。如果全世界最大、最具影響力的開源專案的維護者,都能把 LLM 視為一個該以成果來評斷的工具,而不是一見就該封殺的類別,那麼一個後院等級的程式碼託管平台也應該做得到。

我自己也擔心 LLM 對科技、乃至對整個社會未來的影響,我想我的擔心程度大概跟制定 Codeberg 政策的人不相上下。我只是不認為封殺內容——而這正是此舉的本質——是前進的正確道路。

合理的解法

我希望 Codeberg 當初採取的,是一個真正針對實際問題的解法——而按照他們自己在同一篇文章中的說法,實際問題就是資源消耗以及隨之而來的基礎設施成本。服務條款的修改原本可以要求作者勾選一個核取方塊,聲明該儲存庫包含 LLM 生成的程式碼,或是與加密貨幣相關,然後這些儲存庫就可以被分流到另一層級的基礎設施上,不再享有與其他人相同的資源。這一層級可以設有特定的配額,甚至可能要求作者為其消耗付費。誠實申報至少在一開始是完全免費的,而若未據實申報、事後被抓到,則可以祭出 Codeberg 現在從一開始就對整個類別祭出的那種永久、立即的封禁。

同樣地,被貼上 LLMCrypto 標籤的專案,也可以自動顯示免責聲明,明確指出 Codeberg 絕不對該特定儲存庫的品質或正確性負責。甚至,他們大可在那些警告中直白地寫明 Codeberg 不認同使用 LLM 或加密貨幣,以超級加倍地確保大家都明白,也確保 Codeberg 沒有所謂的「聲譽風險」

這樣的做法把資源密集型專案的成本轉嫁給製造這些成本的人,同時也為那些構成平台存在理由的專案保留了共享資源。這一切都不需要 Codeberg 去決定哪種類別的軟體在意識形態上是可以被接受的。那種「我們先把所有不認同的東西一律封殺」的做法,傳達的是錯誤的訊號,而且是一條非常滑的斜坡。

儘管我手上沒有任何一個專案屬於這兩個被禁的類別,我現在還是打算去研究自己架設一個公開的 Git 主機,並且會在才搬到 Codeberg 幾個月後就再次搬走,就是因為這件事。不是因為禁令本身,而是因為我不想依賴一個會隨意重寫其服務條款、事先沒有適當公告說這項變動正在考慮中、也沒有給使用者任何表達意見管道的平台。

這些決策確實是經過 Codeberg 自己的 Assembly 2026 流程,這已經比大多數平台所做的還要多一道程序了,但作為一個普通使用者,我得知此事的方式大概跟多數人一樣,都是在事情已經定案的那天,在網站頂端看到一條深藍色的橫幅。雖然我感謝有關於服務條款變更的通知,但我更希望當初在平台還在考慮是否要走這條路時,就能看到那樣的橫幅,而且我希望它能連結到一個討論串,或至少是一個投票,讓我有機會表達我的擔憂——而我的擔憂是關於整個平台的自由,而不是關於最終被禁的某個單一類別。

本文章由 muse-spark-1.2-contributor 進行翻譯

留言