Cal.com 剛剛宣布封閉他們的原始碼,理由是 AI 讓開源對 SaaS 公司來說變得太危險了。在公開建置 Discourse 超過 13 年後,我們決定繼續保持開源。以下是原因。

Cal.com 宣布他們將關閉代碼庫,不再是開源產品。他們的理由是 AI 使得開源對 SaaS 公司來說過於危險。AI 以近乎零成本掃描並利用代碼,透明度變成了暴露。

我理解這種想法的來源;產業變化迅速。每隔幾週就會有具備新網路安全能力的 AI 推出。這是個令人害怕的世界,我完全同意開源公司需要適應這種變化。

但我不同意封閉原始碼是解決當前安全風暴的方案。

我不認為這是 SaaS 供應商的正確狹義決定,也不認為這是整個產業的正確決定。

我想明確且堅定地表達 Discourse 的立場。我們是開源的,從來都是,未來也會繼續保持開源。

自從 Jeff、Robin 和我十多年前首次將 Discourse 的原始碼提交到 GitHub,該代碼庫一直是 GPLv2 授權,這不會改變。

Cal.com 的立場歸結為:如果攻擊者能讀取你的代碼,AI 將讓他們比你加固或修補漏洞的速度更快地利用它,因此你必須隱藏代碼以爭取時間。這個威脅確實存在——AI 改變了漏洞發現的速度。過去幾個月,我們團隊利用 GPT-5.3 Codex、GPT-5.4 和 Claude Opus 4.6 在我們的開源代碼庫中發現並修補了大量潛在安全問題。

OpenAI 和 Anthropic 對此非常關注,並謹慎推出 GPT-5.4-Cyber 和 Anthropic Mythos。

但我認為封閉軟體的競賽忽略了某些事實。這些 AI 系統其實不需要你的原始碼就能找到漏洞;它們可以針對編譯後的二進位檔和黑盒 API 運作。

封閉原始碼對 SaaS 來說一直是比人們想像中更弱的防禦。一個網頁應用程式不是一次發佈後就能隱藏的。大量程式碼會直接送到使用者瀏覽器:JavaScript、API 合約、客戶端流程、驗證邏輯和功能行為。攻擊者已經可以檢查這些,AI 讓這種檢查成本大幅降低。封閉代碼庫可能隱藏部分伺服器端實作細節,但不會讓系統隱形。它主要是減少能全面檢視系統的防禦者人數。

世界上最重要的網際網路基礎設施都運行在開源軟體上,尤其是 Linux。這些代碼受到全球攻擊者、防禦者、研究人員、雲端供應商和維護者的持續檢視。它不斷遭受攻擊,但也不斷被強化。這是開源在安全上的真正教訓:透明度不會消除風險,但能促進更大規模的防禦反應。

AI 確實改變了安全計算方式,但我仍相信它有利於開源。是的,AI 驅動的掃描工具現在能在數小時內揭露過去需人類研究員數週才能發現的安全問題。OpenAI 在研究預覽階段表示,Codex Security 在 30 天的測試期間掃描了超過 120 萬次提交,發現了 792 個嚴重問題和 10,561 個高嚴重性問題。

這是驚人的漏洞發現量。

但關鍵問題是:誰能使用這些工具?

如果你的代碼是開源的,你的安全團隊、貢獻者和獨立研究人員都能掃描它。這不保證防禦者總是先發現問題,但大幅增加了能及早發現真正問題的人數。如果你的代碼是封閉的,攻擊者仍能從瀏覽器、API、行動客戶端和系統行為研究產品,只有你的內部團隊能直接存取完整代碼。這不是降低暴露,而是降低防禦能力。

Discourse 接受這個現實。我們最近一次月度發佈修補了 50 個透過 GPT-5.4 xhigh 多日掃描發現的安全問題。開源帶來有用的緊迫感:當代碼公開時,你假設它會被仔細檢查,因此會更早且更積極地投入發現和修補問題,勝過攻擊者。

在封閉環境中,你可能誤以為安全,因為沒人能看見。部分問題仍會存在,未被防禦者發現,等待攻擊者偶然發現。這不是更好的情況。

Discourse 於 2013 年推出。Jeff Atwood、Robin Ward 和我創立它,是因為當時社群軟體狀況令人尷尬。論壇多使用十年前的 PHP 代碼庫,安全和升級模式停留在 2000 年代初期。

Facebook 吸走了所有能量,完全不允許社群討論可攜或用戶控制。我們建立 Discourse 為開源,是因為我們認為社群軟體應屬於使用它的社群,而非當年承載它的平台。

那是 13 年前。如今超過 22,000 個社群使用 Discourse,從小型新創到財富 500 強企業皆有。整個代碼庫在 GitHub,採用 GPL 授權。數百名外部開發者貢獻安全修補。

13 年公開運營 Discourse,我們未見公開原始碼使我們更不安全的證據。當然,我們有漏洞,任何大型軟體都會。但通常情況是理想的:漏洞被回報,協調披露負責任處理,發布 CVE,快速修補。

Cal.com 正在對軟體安全的未來下注。他們認為在 AI 加速的威脅環境中,減少代碼庫可見度會提升安全。我認為這是錯誤的賭注。我們則相反:在 AI 讓漏洞發現成本大幅降低的世界,較強的立場是讓防禦者使用相同工具,針對他們能實際檢視的代碼。

我想對 Cal.com 公平,他們並非惡意行事。我只是認為安全論點是方便的包裝,實際決策背後是其他因素。

主要是競爭壓力。如果代碼公開,競爭對手能讀你的架構和產品思路。這很痛苦,隨著成長更痛苦——尤其是當有資金充足的競爭者分叉你的代碼庫並以半價推出託管版本時。

治理也是一大因素。開源社群會反彈,提出不滿意的議題,分叉代碼。管理起來很累,封閉代碼能立即停止這些噪音。投資人會問為何你免費給出他們投資的東西,封閉原始碼在董事會報告中看起來更有說服力。

這些都是合理的商業壓力,我不會評判感受到這些壓力的人。但這是商業決策,不是安全決策。將商業決策包裝成安全必要,對幫助 Cal.com 成長的開源生態系不公平。

每個發佈週期,我們團隊都會部署最新 AI 漏洞掃描器(目前是 GPT-5.4 xhigh,接下來是 Opus 4.7 max)進行多日深度分析。我們的掃描能捕捉攻擊者 AI 會找到的漏洞類型,並先行修補。

AI 掃描採多步驟流程。我們逐一檢查數百個控制器尋找漏洞。對於批量掃描中發現的每個候選漏洞,我們會指示代理在完整運行的 Discourse 容器中寫入失敗測試驗證漏洞是否真實。只有證實漏洞存在才會列為問題並交由人工處理。此過程還能提供候選修補程式供驗證。

目前全代碼掃描成本低廉,因為有大量補貼。若以零售價計算,OpenAI 對 Discourse 進行全源碼掃描可能花費 2,000 美元,但在 200 美元月費方案下僅約 50 美元。此外,OpenAI 和 Anthropic 慷慨提供方案給許多開源公司和貢獻者。我們非常有信心未來數月及數年價格會下降,品質會提升。

產業計算方式快速改變。去年我們花了數萬美元做第三方安全掃描。如今你能以更低成本獲得更高品質,令人驚訝。

我們的漏洞賞金計劃因代碼公開而更有效。安全研究員能無需逆向工程就做出有意義的分析。他們發現真實漏洞,我們迅速處理。架構也很重要:即使攻擊者找到漏洞,沙箱執行環境、嚴格速率限制、內容安全政策和最小權限原則限制了影響範圍。

漏洞賞金原本設計於發現較稀少的世界。AI 正推動我們進入發現豐富的世界。這對防禦有利,但讓現金獎勵更難公平判定。我們暫停了獎勵,但非常感謝防禦社群,並持續與 HackerOne 合作。

當漏洞被發現,我們的發佈流程能在數小時內將修補推送至所有託管的 Discourse 實例。反應速度最重要。由於開源,我們通常能更快修補。上游貢獻閉環:當我們在依賴項(Rails、Ember、PostgreSQL、Redis)中發現漏洞,我們會回報並貢獻修補,讓整個生態更安全,也讓我們更安全。

生物免疫系統因暴露於威脅而有效。它們遇到病原體並建立記憶。未曾受挑戰的免疫系統會在首次感染時崩潰。開源代碼庫也是如此——被發現並修補的漏洞讓軟體更難被攻擊。閱讀代碼的安全研究員增加防禦層,公開審計建立機構知識,了解弱點並加強防護。

封閉原始碼能帶來一定的模糊性,但模糊性脆弱。代碼會外洩,二進位檔會被逆向,API 會被映射,攻擊者透過系統運作本身就能學到很多。真正的防禦不是永遠隱藏代碼,而是建立在檢視下仍能堅固的軟體和運營實踐。

Discourse 的存在來自開源。我們建立在 Ruby、Rails、PostgreSQL、Redis、Ember、Linux 及其他許多專案上。它們都是開放且由相信透明度的社群維護。我們欠他們同樣的回報。

Cal.com 在公告中承認,封閉代碼「並非拒絕開源給予我們的東西」。但實際上就是如此。你不能拿走五年的社群貢獻,關閉大門,卻聲稱感激。我不認為事情是這樣運作的。

我們不會封閉原始碼。13 年的證據告訴我們,開放讓我們更安全。我們的社群應該有權存取運行他們社群的代碼。對抗 AI 驅動攻擊的最佳防禦是 AI 驅動防禦,由盡可能多的人針對他們能閱讀的代碼部署。

開源並未死去。但要正確做安全,需要勇氣,而非退縮到鎖著門希望沒人有鑰匙。我們已經做了 13 年,將繼續做下去。