第一個提交到 electron/electron
儲存庫的時間是 2013 年 3 月 13 日1。

經過 10 年和 1192 位獨特貢獻者的 27,147 次提交,Electron 已成為當今建置桌面應用程式最受歡迎的框架之一。這個里程碑是慶祝和反思我們迄今為止的旅程,並分享我們一路學到的經驗的絕佳機會。
如果沒有每位投入時間和精力為專案做出貢獻的人,我們今天就不會在這裡。儘管原始碼提交始終是最可見的貢獻,但我們也必須承認那些報告錯誤、維護使用者領域模組、提供文件和翻譯以及參與網路空間中 Electron 社群的人們的努力。每一項貢獻對我們維護者來說都非常寶貴。
在我們繼續進行部落格文章的其餘部分之前:謝謝您。❤️
我們是如何走到這裡的?
Atom Shell 是作為 GitHub Atom 編輯器的骨幹而建置的,該編輯器於 2014 年 4 月公開測試發布。它從頭開始建置,作為當時可用的基於網路的桌面框架(node-webkit 和 Chromium Embedded Framework)的替代方案。它有一個殺手級功能:嵌入 Node.js 和 Chromium,為網路技術提供強大的桌面執行階段。
在一年內,Atom Shell 的功能和受歡迎程度開始大幅成長。大型公司、新創公司和個別開發人員都開始使用它建置應用程式(一些早期採用者包括 Slack、GitKraken 和 WebTorrent),並且該專案被恰當地更名為 Electron。
從那時起,Electron 就開始快速發展,從未停歇。以下是我們隨著時間推移的每週下載量,數據來自 npmtrends.com

Electron v1 於 2016 年發布,承諾提高 API 穩定性,並提供更好的文件和工具。Electron v2 於 2018 年發布,引入了語義化版本控制,讓 Electron 開發人員更容易追蹤發布週期。
到了 Electron v6,我們轉為配合 Chromium 的發布週期,定期每 12 週進行一次主要版本發布。這個決定改變了專案的心態,將「擁有最新的 Chromium 版本」從可有可無變成優先事項。這減少了升級之間的技術債務,使我們更容易保持 Electron 的更新和安全。
從那時起,我們就像一台運轉良好的機器,在每次 Chromium 穩定版發布的同一天發布新的 Electron 版本。當 Chromium 在 2021 年將發布週期加速到 4 週時,我們也能輕鬆地將發布週期相應地增加到 8 週。
我們現在已經到了 Electron v23(並且還在持續增加),並且仍然致力於為建構跨平台桌面應用程式打造最佳的執行環境。即使近年來 JavaScript 開發工具蓬勃發展,Electron 仍然是桌面應用程式框架領域中穩定且經過實戰考驗的支柱。如今,Electron 應用程式無處不在:你可以使用 Visual Studio Code 進行程式設計、使用 Figma 進行設計、使用 Slack 進行溝通,以及使用 Notion 進行筆記(還有許多其他使用案例)。我們為這項成就感到非常自豪,並感謝所有讓這一切成為可能的人。
我們一路走來學到了什麼?
通往十年里程碑的道路漫長而曲折。以下是一些幫助我們運行一個可持續的大型開源專案的關鍵要素。
透過治理模型擴展分散式決策
我們必須克服的一個挑戰是,當 Electron 初次爆紅後,如何處理專案的長期發展方向。我們如何處理一個由數十位分佈在不同公司、國家和時區的工程師組成的團隊?
在早期,Electron 的維護者團隊依賴非正式的協調,這對於較小的專案來說快速且輕量,但無法擴展到更廣泛的協作。2019 年,我們轉為採用治理模型,其中不同的工作組有正式的責任領域。這對於簡化流程以及將專案所有權的部分分配給特定的維護者至關重要。現在每個工作組 (WG) 的責任是什麼?
- 發布 Electron 版本(發布工作組)
- 升級 Chromium 和 Node.js(升級工作組)
- 監督公共 API 設計(API 工作組)
- 保持 Electron 安全(安全工作組)
- 運行網站、文件和工具(生態系統工作組)
- 社群和企業拓展(拓展工作組)
- 社群管理(社群與安全工作組)
- 維護我們的建置基礎設施、維護者工具和雲端服務(基礎設施工作組)
在我們轉向治理模型的同時,我們也將 Electron 的所有權從 GitHub 轉移到 OpenJS 基金會。雖然最初的核心團隊現在仍然在 Microsoft 工作,但他們只是構成 Electron 治理的更廣泛協作者群體的一部分。2
雖然這個模型並不完美,但它在全球疫情和大環境經濟逆風中非常適合我們。展望未來,我們計劃修改治理章程,以引導我們度過 Electron 的第二個十年。
開源的社群部分很困難,尤其是當您的拓展團隊只是十幾位穿著寫著「社群經理」字樣風衣的工程師時。也就是說,身為一個大型開源專案意味著我們有很多使用者,而利用他們的能量來為 Electron 建立使用者生態系統,是維持專案健康至關重要的一部分。
我們為了發展社群影響力做了哪些努力?
建立虛擬社群
- 2020 年,我們啟動了社群 Discord 伺服器。我們之前在 Atom 的論壇中設有一個版塊,但決定建立一個更非正式的訊息平台,讓維護者和 Electron 開發人員可以進行討論,並提供一般除錯協助。
- 2021 年,在 @BlackHole1 的協助下,我們建立了 Electron 中國 使用者群組。這個群組對於 Electron 在中國蓬勃發展的科技領域的使用者成長至關重要,他們在這裡可以合作交流想法,並在我們的英語空間之外討論 Electron。我們也想感謝 cnpm,他們的工作是在他們的中國 npm 鏡像中支援 Electron 的每晚發布。
參與高知名度的開源計畫
- 自 2019 年以來,我們每年都會慶祝 Hacktoberfest。Hacktoberfest 是由 DigitalOcean 組織的年度開源慶典,每年我們都會收到數十位熱情的貢獻者,他們希望在開源軟體中留下自己的印記。
- 2020 年,我們參與了 Google Season of Docs 的初始迭代,與 @bandantonio 合作重新設計了 Electron 的新使用者教學流程。
- 2022 年,我們首次指導了一位 Google Summer of Code 學生。@aryanshridhar 做了一些很棒的工作,重新設計了 Electron Fiddle 的核心版本載入邏輯,並將其打包工具遷移到 webpack。
自動化所有事情!
今天,Electron 的治理團隊約有 30 位活躍的維護者。我們中只有不到一半是全職貢獻者,這意味著有很多工作要做。我們讓一切順利運行的訣竅是什麼?我們的座右銘是電腦很便宜,而人類的時間很昂貴。以典型的工程師方式,我們開發了一套自動化的支援工具,讓我們的生活更輕鬆。
Not Goma
Electron 的核心程式碼庫是 C++ 程式碼的龐然大物,而建置時間一直是限制我們發布錯誤修復和新功能速度的因素。2020 年,我們部署了 Not Goma,這是 Google Goma 分散式編譯器服務的客製化 Electron 特定後端。Not Goma 處理來自授權使用者機器的編譯請求,並將處理程序分佈在後端的數百個核心上。它還會快取編譯結果,以便其他編譯相同檔案的人只需要下載預先編譯的結果。
自推出 Not Goma 以來,維護者的編譯時間已從數小時縮短到數分鐘。穩定的網路連線成為貢獻者編譯 Electron 的最低要求!
持續因素驗證
持續因素驗證 (CFA) 是圍繞 npm 雙因素驗證 (2FA) 系統的一層自動化,我們將其與 semantic-release 結合使用,以管理我們各種 @electron/
npm 套件的安全和自動化發布。
雖然 semantic-release 已經自動化了 npm 套件發布流程,但它需要關閉雙因素驗證,或傳入繞過此限制的秘密權杖。
我們建置 CFA 以為 npm 2FA 提供基於時間的一次性密碼 (TOTP) 給任意 CI 作業,讓我們能夠利用 semantic-release 的自動化,同時保持雙因素驗證的額外安全性。
我們將 CFA 與 Slack 整合前端一起使用,讓維護者可以從他們擁有 Slack 的任何裝置驗證套件發布,只要他們手邊有 TOTP 產生器即可。
Sheriff 是我們編寫的開源工具,用於自動管理 GitHub、Slack 和 Google Workspace 的權限。
Sheriff 的主要價值主張是權限管理應該是一個透明的過程。它使用單個 YAML 設定檔,指定上述所有服務的權限。有了 Sheriff,在儲存庫上取得協作者身分或建立新的郵寄清單就像取得 PR 核准並合併一樣簡單。
Sheriff 還有一個稽核記錄,會發布到 Slack,警告管理員 Electron 組織中任何地方發生可疑活動。
…以及我們所有的 GitHub 機器人
GitHub 是一個具有豐富 API 擴充性和第一方機器人應用程式框架的平台,稱為 Probot。為了幫助我們專注於工作中更具創造性的部分,我們建立了一套較小的機器人,幫助我們完成繁瑣的工作。以下是一些範例
- Sudowoodo 自動化 Electron 從開始到結束的發布流程,從啟動建置到將發布資產上傳到 GitHub 和 npm。
- Trop 透過嘗試根據 GitHub PR 標籤將修補程式 cherry-pick 到先前的發布分支,自動化 Electron 的回溯流程。
- Roller 自動化 Electron 的 Chromium 和 Node.js 相依性的滾動升級。
- Cation 是我們用於 electron/electron PR 的狀態檢查機器人。
總之,我們這個小小的機器人家族極大地提高了開發人員的生產力!
下一步是什麼?
當我們作為一個專案進入第二個十年時,你可能會問:Electron 的下一步是什麼?
我們將與 Chromium 的發佈節奏保持同步,每 8 週發佈 Electron 的新主要版本,使框架與來自 Web 平台和 Node.js 的最新和最佳技術保持同步,同時為企業級應用程式保持穩定性和安全性。
我們通常會在即將推出的計畫變得具體時宣布相關消息。如果你想了解未來的版本、功能和一般專案更新,你可以閱讀我們的部落格並關注我們的社交媒體個人資料(Twitter 和 Mastodon)!