跳至主要內容

25 篇標記為「社群」的文章

Electron 中的社群計畫

查看所有標籤

本週專案:Jasper

·閱讀時間 5 分鐘

本週我們採訪了 Jasper 的創作者,這是一個基於 Electron 的工具,用於管理 GitHub 通知。


您好!請問您是?

我是 Ryo Maruyama,一位在日本的軟體開發人員。我正在開發 JasperESDoc

什麼是 Jasper?

Jasper 是一個靈活且功能強大的 GitHub 問題讀取器。它支援 github.com 和 GitHub Enterprise 上的問題和提取請求。

Jasper App Screenshot

您為什麼要製作它?

當人們在工作或 OSS 活動中使用 GitHub 時,他們每天都會收到許多通知。作為訂閱通知的方式,GitHub 提供電子郵件和 網頁通知。我使用了這些幾年,但我面臨以下問題

  • 很容易忽略那些我被提及、我評論或我正在關注的問題。
  • 我把一些問題擱置在腦海中稍後查看,但我有時會忘記它們。
  • 為了不忘記問題,我在瀏覽器中保持許多標籤開啟。
  • 很難查看所有與我相關的問題。
  • 很難掌握我團隊的所有活動。

我花費了大量的時間和精力來嘗試防止這些問題,因此我決定為 GitHub 製作一個問題讀取器,以有效地解決這些問題,並開始開發 Jasper。

誰在使用 Jasper?

Jasper 被許多使用 GitHub 的公司的開發人員、設計人員和經理使用。當然,一些 OSS 開發人員也在使用它。而且 GitHub 的一些人也在使用它!

Jasper 如何運作?

配置 Jasper 後,會出現以下畫面。從左到右,您可以看到「串流清單」、「問題清單」和「問題主體」。

Jasper Start Screen

這個「串流」是 Jasper 的核心功能。例如,如果您想查看「分配給 electron/electron 儲存庫中的 @zeke 的問題」,您可以建立以下串流

repo:electron/electron assignee:zeke is:issue

Jasper Start Screen 2

建立串流並等待幾秒鐘後,您可以看到符合條件的問題。

Jasper Start Screen 3

我們可以使用串流做什麼?

我將介紹串流可以使用哪些條件。

使用者和團隊

串流問題
mentions:cat mentions:dog提及使用者 catdog 的問題
author:cat author:dog由使用者 catdog 建立的問題
assignee:cat assignee:dog分配給 catdog 的問題
commenter:cat commenter:dogcatdog 評論的問題
involves:cat involves:dog「涉及」catbob 的問題
team:animal/white-cat team:animal/black-doganimal/white-catanimal/black-dog 被提及的問題

involves 表示 mentionauthorassigneecommenter

儲存庫和組織

串流問題
repo:cat/jump repo:dog/runcat/jumpdog/run 中的問題
org:electron user:cat user:dogelectroncatdog 中的問題

orguser 相同

屬性

串流問題
repo:cat/jump milestone:v1.0.0 milestone:v1.0.1cat/jump 中附加到 v1.0.0v1.0.1 的問題
repo:cat/jump label:bug label:blockercat/jump 中附加了 bug blocker 的問題
electron OR atomshell包含 electronatomshell 的問題

審查狀態

串流問題
is:pr review:requiredcat/jump 中需要審查的問題
is:pr review-requested:catcat 請求審查的問題。
但這些尚未審查。
is:pr reviewed-by:catcat 審查的問題

正如您可能已經注意到的,透過查看這些,串流可以使用 GitHub 的搜尋查詢。有關如何使用串流和搜尋查詢的詳細資訊,請參閱以下 URL。

Jasper 還具有未讀問題管理、未讀評論管理、標記星號、通知更新、篩選問題、鍵盤快捷鍵等功能。

Jasper 是付費產品嗎?它的費用是多少?

Jasper 的費用為 12 美元。但是您可以免費使用 試用版 30 天。

您為什麼選擇在 Electron 上建置 Jasper?

我喜歡 Electron 的以下幾個方面

  • 可以使用 JavaScript/CSS/HTML 開發應用程式。
  • 可以為 Windows、Mac 和 Linux 平台建置應用程式。
  • Electron 正在積極開發,並且擁有龐大的社群。

這些功能可實現快速且簡單的桌面應用程式開發。真是太棒了!如果您有任何產品構想,您應該考慮務必使用 Electron。

開發 Jasper 時,你遇到哪些挑戰?

我對於「串流」的概念感到相當困惑。一開始我考慮使用 GitHub 的通知 API。然而,我發現它不支援某些使用情境。之後,我考慮除了通知 API 之外,還使用Issue APIPull Request API。但它始終無法達到我想要的效果。然後在思考各種方法時,我意識到輪詢 GitHub 的搜尋 API 會提供最大的彈性。我花了約一個月的時間實驗才達到這個階段,然後我用了兩天的時間實作了具有串流概念的 Jasper 原型。

注意:輪詢的頻率最多為每 10 秒一次。這對於 GitHub API 的限制來說是可以接受的。

接下來的計畫是什麼?

我計畫開發以下功能

  • 篩選過的串流:一個串流有一些篩選過的串流,可以篩選串流中的 issue。它就像 SQL 的視圖。
  • 多個帳戶:你將能夠同時使用 github.com 和 GHE。
  • 改善效能:目前在 WebView 中載入 issue 的速度比一般的瀏覽器慢。

請在 Twitter 上追蹤@jasperappio 以獲取最新消息。

本週專案:WebTorrent

·閱讀時間 9 分鐘

本週我們採訪了 @feross@dcposch,談論 WebTorrent,這是一款由網路驅動的 torrent 客戶端,它將使用者連接在一起,形成一個分散式的、去中心化的瀏覽器對瀏覽器網路。


什麼是 WebTorrent?

WebTorrent 是第一個在瀏覽器中運作的 torrent 客戶端。它完全用 JavaScript 撰寫,並且可以使用 WebRTC 進行點對點傳輸。無需瀏覽器外掛程式、擴充功能或安裝。

透過使用開放網路標準,WebTorrent 將網站使用者連接在一起,形成一個分散式的、去中心化的瀏覽器對瀏覽器網路,以實現高效的檔案傳輸。

你可以在這裡看到 WebTorrent 的實際運作示範:webtorrent.io

webtorrent homepage

這有什麼酷的地方?

想像一個像 YouTube 的影片網站,但訪問者可以協助託管網站的內容。使用 WebTorrent 的網站,使用的人越多,速度就越快,也更具彈性。

瀏覽器對瀏覽器的通訊消除了中間人,讓人們可以按照自己的方式進行交流。不再有客戶端/伺服器 – 只是一個對等的網路,所有節點都是平等的。WebTorrent 是重新去中心化網路的第一步。

Electron 在其中扮演什麼角色?

大約一年前,我們決定開發 WebTorrent Desktop,這是一個以桌面應用程式形式執行的 WebTorrent 版本。

WebTorrent Desktop player window

我們開發 WebTorrent Desktop 有三個原因

  1. 我們想要一個乾淨、輕巧、無廣告、開源的 torrent 應用程式
  2. 我們想要一個具有良好串流支援的 torrent 應用程式
  3. 我們需要一個可以連接 BitTorrent 和 WebTorrent 網路的「混合客戶端」

如果我們已經可以在我的網頁瀏覽器中下載 torrent,為什麼還需要桌面應用程式?

首先,先簡單介紹一下 WebTorrent 的設計。

webtorrent desktop logo

在早期,BitTorrent 使用 TCP 作為其傳輸協定。後來,出現了 uTP,它承諾比 TCP 提供更好的效能和額外的優勢。每個主流的 torrent 客戶端最終都採用了 uTP,今天你可以透過任一協定使用 BitTorrent。WebRTC 協定是下一個邏輯步驟。它帶來了與網頁瀏覽器互通的希望 – 一個由所有桌面 BitTorrent 客戶端和數百萬網頁瀏覽器組成的大型 P2P 網路。

「網頁對等點」(在網頁瀏覽器中執行的 torrent 對等點)透過增加數百萬個新的對等點,並將 BitTorrent 擴展到數十個新的使用案例,使 BitTorrent 網路更強大。WebTorrent 盡可能地遵循 BitTorrent 規範,以便現有的 BitTorrent 客戶端可以輕鬆地添加對 WebTorrent 的支援。

Vuze 這樣的某些 torrent 應用程式已經支援網頁對等點,但我們不想等待其他應用程式添加支援。所以基本上,WebTorrent Desktop 是我們加速採用 WebTorrent 協定的方式。透過開發一個人們真正想要使用的超棒的 torrent 應用程式,我們增加了網路中可以與網頁對等點(即網站上的使用者)分享 torrent 的對等點數量。

除了人們已經知道可以做的事情之外,torrent 還有哪些有趣的使用案例?

WebTorrent 最令人興奮的用途之一是點對點輔助交付。像 維基百科Internet Archive 這樣的非營利專案可以透過讓訪問者貢獻來降低頻寬和託管成本。熱門內容可以透過瀏覽器對瀏覽器的方式快速且廉價地提供。很少訪問的內容可以從原始伺服器透過 HTTP 可靠地提供。

Internet Archive 實際上已經更新了他們的 torrent 檔案,因此它們可以很好地與 WebTorrent 搭配使用。因此,如果你想在你的網站上嵌入 Internet Archive 的內容,你可以透過一種方式來降低 Archive 的託管成本,讓他們可以投入更多的資金來實際歸檔網路!

還有令人興奮的商業使用案例,從 CDN 到透過 P2P 交付應用程式。

你最喜歡哪些使用 WebTorrent 的專案?

gaia app screenshot

用 WebTorrent 開發的最酷的東西,絕對是 Gaia 3D 星圖。它是一個流暢的銀河系 3D 互動模擬。資料直接從你的瀏覽器中的 torrent 載入。在我們的星系中飛行,並意識到我們人類與浩瀚宇宙相比是多麼的渺小,這令人讚嘆。

你可以閱讀 Torrenting The Galaxy,這是一篇部落格文章,作者 Charlie Hoey 解釋了他如何使用 WebGL 和 WebTorrent 建立星圖。

brave logo

我們也是 Brave 的忠實粉絲。Brave 是一個可以自動封鎖廣告和追蹤器的瀏覽器,使網路更快、更安全。Brave 最近添加了 torrent 支援,因此你可以無需使用單獨的應用程式即可檢視傳統的 torrent。該功能由 WebTorrent 提供支援。

因此,就像大多數瀏覽器可以呈現 PDF 檔案一樣,Brave 可以呈現磁力連結和 torrent 檔案。它們只是瀏覽器本身原生支援的另一種內容類型。

Brave 的共同創辦人之一實際上是 JavaScript 的創建者 Brendan Eich,我們用 JavaScript 編寫了 WebTorrent,所以我們認為 Brave 選擇整合 WebTorrent 非常酷。

你為什麼選擇在 Electron 上建立 WebTorrent Desktop?

WebTorrent Desktop main window

有一個迷因說 Electron 應用程式「臃腫」,因為它們在每個應用程式中都包含了整個 Chrome 內容模組。在某些情況下,這部分是正確的(Electron 應用程式安裝程式通常約為 40MB,而特定於作業系統的應用程式安裝程式通常約為 20MB)。

然而,就 WebTorrent Desktop 而言,我們在正常運作過程中幾乎使用了每個 Electron 功能,以及數十個 Chrome 功能。如果我們想要為每個平台從頭開始實作這些功能,那麼開發我們的應用程式可能需要花費數月或數年時間,或者我們只能發佈單一平台。

舉例來說,我們使用了 Electron 的 dock 整合(顯示下載進度)、選單列整合(在背景中執行)、協定處理程式註冊(開啟磁力連結)、省電模式阻止程式(防止影片播放期間進入睡眠)和 自動更新程式。至於 Chrome 功能,我們使用了大量功能:<video> 標籤(播放許多不同的影片格式)、<track> 標籤(支援隱藏式字幕)、拖放支援和 WebRTC(在原生應用程式中使用並非易事)。

更不用說:我們的 torrent 引擎是用 JavaScript 編寫的,並假設存在許多 Node API,尤其是用於 TCP 和 UDP Socket 支援的 require('net')require('dgram')

基本上,Electron 正是我們需要的東西,並且具有我們在創紀錄的時間內發布一個可靠、完善的應用程式所需的所有功能。

你最喜歡 Electron 的哪些地方?

WebTorrent 函式庫作為一個開源的副專案已經開發了兩年。我們在四週內開發了 WebTorrent Desktop。 Electron 是我們能夠如此快速地建立和發布我們的應用程式的主要原因。

就像 Node.js 讓使用 jQuery 的前端工程師也能輕鬆進行伺服器程式開發一樣,Electron 讓熟悉網頁或 Node.js 開發的任何人都能輕鬆進行原生應用程式開發。Electron 非常強大。

網站和桌面客戶端是否共用程式碼?

是的,webtorrent npm 套件可以在 Node.js、瀏覽器和 Electron 中運作。完全相同的程式碼可以在所有環境中執行 — 這就是 JavaScript 的美妙之處。它是今日通用的執行環境。Java Applets 曾承諾「一次編寫,隨處執行」的應用程式,但由於種種原因,這個願景從未真正實現。Electron 比任何其他平台都更接近這個理想。

在建構 WebTorrent 時,你面臨了哪些挑戰?

在應用程式的早期版本中,我們努力讓 UI 具有高效能。我們將 torrent 引擎放在同一個渲染程序中,該程序會繪製主應用程式視窗,不出所料,每當 torrent 引擎有密集的 CPU 活動時(例如驗證從對等節點接收到的 torrent 片段),就會導致速度變慢。

我們透過將 torrent 引擎移至第二個不可見的渲染程序來解決這個問題,我們透過 IPC 與該程序進行通訊。這樣,如果該程序短暫使用大量 CPU,UI 執行緒將不受影響。流暢的捲動和動畫令人非常滿意。

注意:我們必須將 torrent 引擎放在渲染程序中,而不是「主要」程序中,因為我們需要存取 WebRTC(僅在渲染器中可用)。

Electron 應該在哪些方面改進?

我們希望看到的是關於如何建構和發布生產就緒應用程式的更好文件,特別是關於程式碼簽署和自動更新等棘手主題。我們必須透過深入研究原始碼並在 Twitter 上詢問來了解最佳實務!

WebTorrent Desktop 完成了嗎?如果沒有,接下來會有哪些?

我們認為目前版本的 WebTorrent Desktop 非常出色,但總有進步的空間。我們目前正致力於改善潤飾、效能、字幕支援和視訊編解碼器支援。

如果您有興趣參與專案,請查看我們的 GitHub 頁面

是否有任何 Electron 開發提示可能對其他開發人員有用?

WebTorrent Desktop 的貢獻者之一 Feross 最近在 NodeConf Argentina 上發表了演講,「真實世界的 Electron:使用 JavaScript 建構跨平台桌面應用程式」,其中包含發布完善 Electron 應用程式的實用提示。如果您處於擁有基本工作應用程式的階段,並試圖將其提升到更高水準的完善度和專業度,則該演講特別有用。

在此觀看:

幻燈片在此:

另一位 WebTorrent 貢獻者 DC 編寫了一份您可以執行的事項清單,讓您的應用程式感覺更完善和原生。它附帶程式碼範例,涵蓋 macOS Dock 整合、拖放、桌面通知,並確保您的應用程式快速載入等事項。

本週專案:Voltra

·6 分鐘閱讀

本週,我們與 Aprile ElcichPaolo Fragomeni 會面,討論使用 Electron 的音樂播放器 Voltra。


什麼是 Voltra?

Voltra 是一款為想要擁有自己的音樂的人設計的音樂播放器。它也是一個商店,您可以在其中根據您已擁有的音樂來發現和購買新音樂。它是無廣告的,適用於桌面和行動裝置的跨平台。它也不會監視您。

voltra-artistview

Voltra 適用於哪些人?

任何聽音樂的人。

是什麼促使您建立 Voltra?

廣播一直以來都佔據著大量的聽眾。它正從廣播電波轉移到網際網路。現在您可以隨需租借音樂 — 這是一次廣播的復興!由於這一點,出現了許多新產品和服務,但串流廣播仍然讓其他人掌控您的音樂以及您體驗音樂的方式。

我們想要一款完全專注於您擁有的音樂的產品。讓您能輕鬆直接從藝術家或唱片公司發現和購買新音樂的產品。

是否有免費版本?

桌面播放器完全免費。銷售您的音樂也是免費的!我們不支援廣告。

由於應用程式是免費的,我們稍後可能會開放原始碼。目前我們沒有頻寬來管理這一點。我們對於功能以及我們想要採取的方向也有非常具體的想法。我們有一個活躍的測試版社群,我們會將他們的意見反饋銘記在心。

你們如何賺錢?

我們有付費功能!

我們的 Voltra 音訊檔案庫 是一項專為音樂設計的雲端備份服務。我們不壓縮或分享資料區塊。您的音樂收藏會為您進行實體備份。

對於藝術家和唱片公司,我們的 專業會員資格 提供工具,幫助他們接觸到更多相關受眾,例如分析和專業藝術家網頁。

Voltra 的不同之處在哪裡?

設計和可用性對我們來說非常重要。我們希望給予聽眾不受干擾的聆聽體驗!市面上有一些有趣的音樂播放器和商店。但是其中許多都比他們的創作者意識到的更先進且更難使用。我們希望讓盡可能多的人都可以使用 Voltra。

我們也不會從藝術家或唱片公司抽取分成。這是我們的關鍵差異點。這非常重要,因為它降低了藝術家將其音樂推向市場的門檻。

你們做出了哪些設計和技術決策?

在設計 Voltra 時,我們考慮了原生應用程式和網頁的 UI 慣例,我們也深入思考了可以移除哪些內容。我們有一個活躍的私人測試版群組,他們在過去幾個月中給予了我們重要的意見反饋。

我們發現專輯封面和攝影對人們來說非常重要。許多播放器只是檔案清單。擁有實體專輯的其中一個好處是專輯封面,我們想在 Voltra 桌面應用程式中強調這一點。

voltra-albumview

我們也確保不干擾人們的檔案。我們使用檔案監看,因此您可以將檔案放在任何想要的位置,我們不會為您重新命名或移動它們。我們有一個嵌入式資料庫來追蹤受監看目錄的狀態,以便我們可以追蹤新內容,即使程序未執行也是如此。

在建構 Voltra 時,你們面臨了哪些挑戰?

我們花費大量時間專注於效能。我們從框架開始,但轉向使用 Vanilla Javascript。根據我們的經驗,它們提供的通用抽象概念,其優勢大於它們引入的效能損失和儀式。

我們目前可以很好地處理非常大的收藏集。大型收藏集意味著可能會有數萬張圖片!能夠直接從渲染程序使用 Node.js 的檔案系統模組,使得根據 DOM 事件快速延遲載入和卸載大量圖片變得非常容易。

一般來說,setImmediaterequestIdleCallback 一直是在保持 UI 反應靈敏的同時執行大量處理的非常重要的工具。更具體來說,將 CPU 密集型任務分發到單獨的程序中,確實有助於保持使用者介面的反應靈敏。例如,我們將實際的音訊環境移至單獨的程序中,並透過 IPC 與之通訊,以避免忙碌的 UI 可能造成的干擾。

你們為什麼選擇在 Electron 上建構 Voltra?

瀏覽器的沙箱對於我們的應用程式來說太受限了。但我們也在開發一個網路播放器。因此,我們可以在兩個實作之間共享幾乎 100% 的程式碼,這是一個巨大的勝利。

我們實際上是從使用 Swift 建構原生應用程式開始的。我們發現的主要問題是我們在重新發明許多東西。網路擁有世界上最大的開源生態系統。因此我們很快就改用 Electron。

此外,最重要的是,使用 Electron 您只需開發一次,它應該能在所有主要平台上「正常運作™」。這不是保證的,但為每個平台進行原生程式碼編寫的成本絕對大於 Electron 引入的任何其他成本。

你最喜歡 Electron 的哪些地方?

GTD!:將 Node.js 的網路堆疊和 Chromium 的展示層封裝在一起是完成工作的秘訣。

能力:它只是網路堆疊,因此我們整個團隊實際上都參與了產品的建構。

社群:有一個組織完善的社群知道如何進行良好溝通!我們對在這種支援下進行開發感到非常棒。

Electron 可以在哪些方面改進?

我們希望看到 Electron 支援單一打包工具。打包工具對於 Electron 的重要性,如同套件管理器對於 Node 一樣。目前在使用者領域有多種打包工具,各自具有有趣的功能,但也各自存在錯誤。社群的共識將有助於引導貢獻者投入的精力。

接下來的計畫是什麼?

我們目前正在開發一款手機應用程式,並與藝術家和唱片公司合作,將他們的音樂加入 Voltra 商店。嘿!如果您是藝術家或唱片公司,立即註冊!我們計劃在達到 1000 萬首歌曲的目標時開放商店。

本週專案:WordPress Desktop

·閱讀時間 4 分鐘

本週我們與 Automattic 的人員進行了交流,討論了 WordPress Desktop,這是一個用於管理 WordPress 內容的開源桌面客戶端。


WordPress Apps

大家都知道 WordPress,但什麼是 WordPress Desktop?

WordPress.com 桌面應用程式提供無縫的跨平台體驗,讓您可以專注於內容和設計,而無需瀏覽器分頁來分散您的注意力 — 或是讓您的網站保持在旁邊但仍可存取。結合我們的瀏覽器支援和行動應用程式,您可以隨時隨地以任何方式建置您的網站,以幫助您完成工作。

為什麼要開發用於管理 WordPress 網站的桌面應用程式?難道不能全部基於 Web 嗎?

它實際上使用與您在瀏覽器中訪問 WordPress.com 時所獲得的完全相同的技術。但是,它全部都是在本機託管,因此載入時間最短。憑藉停靠在您的 Dock、通知等原生功能的優勢,您可以真正專注於您的 WordPress 網站和部落格。

為什麼您選擇在 Electron 上建置 WordPress Desktop?

在 2015 年底,我們以 Calypso 的形式重建了大部分的 WordPress.com,這是一個使用 React 的開源現代 JavaScript 應用程式。我們開始研究 Electron,並對 Calypso 進行了一些更改,使其能夠在本機執行。這是一個引人注目的體驗,我們認為進一步開發它會很有價值。

我們有幾個團隊在開發 Calypso。要使用傳統的桌面技術來製作一個與之匹配的完整多平台 GUI 客戶端,需要花費更多的工作。透過使用 Electron,一個由 2-4 人組成的小團隊能夠利用其他團隊的努力,在幾個月內建置桌面應用程式。

在建置 WordPress Desktop 時,您遇到哪些挑戰?

我們很快就讓應用程式的初始版本運行起來,但是調整它以使其作為桌面應用程式的最佳行為需要花費更多時間。該應用程式的一個重大挑戰是,您實際上是在自己的機器上運行 Calypso 的副本 - 它純粹是一個 API 驅動的 UI。其中涉及大量的橋接工作,並且變更被回饋到 Calypso 本身。

此外,我們花費了很多精力將應用程式打包用於不同的平台 - 我們提供 Windows、macOS 和 Linux 版本 - 並且存在足夠的差異使這變得棘手。

當時 Electron 相對較新,我們不斷遇到一些問題,這些問題很快就被修復了(有時甚至在同一天!)

Electron 應該在哪些方面改進?

Electron 已經提供了我們桌面應用程式所需的大部分功能,並且自我們開始使用以來,它進展迅速。也就是說,在桌面應用程式中有些被視為理所當然的領域,例如拼寫檢查和查找/取代,使用現有的 Electron 難以複製。

我們也希望看到一些較新的 Chrome 技術也能過濾到 Electron 中。我們特別熱衷於嘗試 WebVR。

你最喜歡 Electron 的哪些地方?

我們選擇 Electron 的主要原因,也是它最大的優勢,是它非常活躍且開放的社群。Automattic 一直秉持開源的理念。這是我們的核心原則之一,而 Electron 專案和社群也遵循許多非常開放和積極的核心信念。

WordPress Desktop 的下一步是什麼?

我們的模型的優點是桌面應用程式可以從任何新的 Calypso 功能中受益 - 並且不斷改進。我們希望可以在應用程式中添加其他功能,例如離線支援,這將真正將應用程式帶入原生領域,並改善系統通知。

Automattic 是否有任何團隊正在開發其他 Electron 應用程式?

是的,在我們對桌面應用程式的努力之後,Simplenote 團隊決定使用 Electron 為 Windows 和 Linux 建置桌面應用程式(已經存在一個原生 Mac 客戶端)。Simplenote Electron 應用程式也是開源的,並且可以在 Github 上取得。

我們還有一個即將推出的 Raspberry Pi 整合功能,它使用 Electron。

如果這些聽起來很有趣,我們很樂意收到您的來信

是否有任何 Electron 提示可能對其他開發人員有用?

交付簽名的桌面軟體對於我們來說相對較新,尤其是對於 Windows。我們為 程式碼簽署 Windows 應用程式撰寫了一篇文章,其中包含該流程以及我們為正確執行該流程而經歷的一些障礙。

本週專案:Dat

·閱讀時間 7 分鐘

本週的特色專案是 Dat,這是一個獲得補助的開源分散式資料集發佈工具。Dat 由一個地理分散的團隊建構和維護,其中許多人幫助撰寫了這篇文章。


A screenshot of the main view of dat-desktop, showing a few rows of shared
dats

首先,什麼是 Dat?

我們希望將點對點和分散式系統的最佳部分帶入資料分享。我們從科學資料分享開始,然後開始擴展到研究機構、政府、公共服務和開源團隊。

另一種思考方式是,它就像 Dropbox 或 BitTorrent Sync 一樣的同步和上傳應用程式,只是 Dat 是開源的。我們的目標是成為一個功能強大、開源、非營利的資料分享軟體,適用於大型、小型、中型、小批量和大型批量資料。

要使用 dat CLI 工具,您只需輸入

dat share path/to/my/folder

然後 dat 將建立一個連結,您可以使用該連結將該資料夾發送給其他人 - 沒有中央伺服器或第三方可以存取您的資料。與 BitTorrent 不同,也不可能嗅探誰在分享什麼(請參閱 Dat Paper 草稿以取得更多詳細資訊)。

現在我們知道什麼是 Dat。Dat Desktop 如何融入其中?

Dat Desktop 是一種讓無法或不想使用命令列的人員可以存取 Dat 的方法。您可以在您的機器上託管多個 dats,並透過您的網路提供資料服務。

您可以分享一些很棒的使用案例嗎?

DataRefuge + Svalbard 專案

我們正在開發一個代號為 Svalbard 專案的東西,它與 DataRefuge 有關,DataRefuge 是一個致力於備份可能消失的政府氣候資料的組織。Svalbard 以北極的斯瓦爾巴全球種子庫命名,該種子庫有一個大型的地下植物 DNA 備份庫。我們的版本是一個大型版本控制的公共科學資料集集合。一旦我們知道並可以信任元資料,我們就可以建置其他很棒的專案,例如分散式志願資料儲存網路

加州公民資料聯盟

CACivicData 是一個開源檔案庫,提供來自 CAL-ACCESS 的每日下載,CAL-ACCESS 是加州追蹤政治資金的資料庫。他們會進行每日發佈,這表示他們會在他們的 zip 檔案中託管大量重複資料。我們正在努力將他們的資料作為 Dat 儲存庫託管,這將減少參考特定版本或更新到較新版本所需的不便和頻寬。

Electron 更新

這個還不具體,但我們認為一個有趣的使用案例是將編譯好的 Electron 應用程式放入 Dat 儲存庫中,然後在 Electron 中使用 Dat 用戶端來提取已建置應用程式二進位檔案的最新增量,以節省下載時間,同時也減少伺服器的頻寬成本。

誰應該使用 Dat Desktop?

任何想透過點對點網路分享和更新資料的人。資料科學家、開放資料駭客、研究人員、開發人員。如果有人想到我們還沒想到的酷炫使用案例,我們非常樂意接受回饋。您可以隨時加入我們的 Gitter 聊天室,問我們任何問題!

Dat 和 Dat Desktop 的下一步是什麼?

使用者帳號和元數據發布。我們正在開發一個 Dat 註冊網路應用程式,將部署在 datproject.org 上,基本上會是一個「資料集的 NPM」,但有個重要的差異是,我們只會是一個元數據目錄,而資料可以存在網路上的任何地方(與 NPM 或 GitHub 不同,它們將所有資料集中託管,因為原始碼夠小,可以全部放在一個系統中)。由於許多資料集非常龐大,我們需要一個聯合註冊系統(類似於 BitTorrent 追蹤器的工作方式)。我們希望讓使用者能輕鬆地透過 Dat Desktop 從註冊系統中尋找或發佈資料集,讓資料分享流程更加順暢。

另一個功能是多寫入器/協作資料夾。我們有很大的計畫來實現協作工作流程,可能會有分支,類似於 git,但專為資料集協作而設計。但我們目前仍在努力提高整體穩定性並標準化我們的協定!

為什麼你們選擇在 Electron 上建構 Dat Desktop?

Dat 是使用 Node.js 建構的,所以它自然而然地適合我們的整合。除此之外,我們的使用者使用各種不同的機器,因為科學家、研究人員和政府官員可能被迫使用其機構的特定設定——這意味著我們需要能夠以 Windows 和 Linux 以及 Mac 為目標。Dat Desktop 可以讓我們輕鬆實現這一點。

在建構 Dat 和 Dat Desktop 的過程中,你們遇到哪些挑戰?

弄清楚人們想要什麼。我們從表格資料集開始,但我們意識到這是一個有點複雜的問題,而且大多數人都不使用資料庫。因此,在專案進行到一半時,我們從頭開始重新設計了一切,改為使用檔案系統,並且沒有回頭看。

我們也遇到了一些常見的 Electron 基礎架構問題,包括

  • 遙測 - 如何捕獲匿名使用統計資訊
  • 更新 - 設定自動更新有點零散和魔法
  • 發布 - XCode 簽名、在 Travis 上建構發布版本、進行 beta 版本,這些都是挑戰。

我們也在 Dat Desktop 的「前端」程式碼上使用了 Browserify 和一些很酷的 Browserify Transforms(這有點奇怪,因為即使我們有原生的 require,我們仍然會進行捆綁——但這是因為我們想要使用 Transforms)。為了更好地管理我們的 CSS,我們從 Sass 切換到使用 sheetify。它極大地幫助我們模組化了 CSS,並且更容易將 UI 遷移到具有共享依賴項的元件導向架構。例如,dat-colors 包含了我們所有的顏色,並在我們所有的專案之間共享。

我們一直以來都非常喜歡標準和最小化的抽象化。我們的整個介面都是使用常規 DOM 節點和一些輔助函式庫建構的。我們已經開始將其中一些元件遷移到 base-elements,這是一個低階可重複使用元件的函式庫。與我們的大部分技術一樣,我們會不斷迭代它直到我們做對為止,但作為一個團隊,我們覺得我們正朝著正確的方向前進。

Electron 應該在哪些方面改進?

我們認為最大的痛點是原生模組。必須使用 npm 為 Electron 重建模組會增加工作流程的複雜性。我們的團隊開發了一個名為 prebuild 的模組,它可以處理預先建置的二進位檔,它在 Node 中運作良好,但 Electron 工作流程在安裝後仍然需要一個自訂步驟,通常是 npm run rebuild。這很煩人。為了解決這個問題,我們最近切換到一種策略,將所有平台的所有編譯二進位版本捆綁到 npm tarball 中。這意味著 tarball 會變大(雖然可以使用 .so 檔案 - 共享函式庫進行最佳化),這種方法避免了執行安裝後腳本,也完全避免了 npm run rebuild 模式。這意味著 npm install 會在第一次就為 Electron 執行正確的操作。

你最喜歡 Electron 的哪些地方?

這些 API 看起來經過相當周全的考慮,它相對穩定,並且在跟上上游 Node 發布版本方面做得很好,我們沒有太多其他要求!

是否有任何 Electron 提示可能對其他開發人員有用?

如果您使用原生模組,請試試 prebuild

追蹤 Dat 開發進展的最佳方式是什麼?

在 Twitter 上關注 @dat_project,或訂閱我們的 電子郵件新聞通訊

本週專案:Ghost

·閱讀時間 5 分鐘

本週我們與 Felix Rieseberg 聊了聊,他是 Slack 的桌面工程師,也是 Ghost Desktop 的維護者,Ghost Desktop 是 Ghost 發布平台的 Electron 客戶端。


Ghost Desktop Screenshot

什麼是 Ghost?

Ghost 是一個完全開源、可駭客的平台,用於建構和運行現代線上出版物。我們為 Zappos 到 Sky News 等部落格、雜誌和記者提供支援。

它與其他發布平台有何不同?

Ghost 於 2013 年 4 月成立,此前進行了一場非常成功的 Kickstarter 活動,旨在創建一個專注於專業發布的新平台。我們的使命是為世界各地的獨立記者和作家創造最好的開源工具,並對線上媒體的未來產生真正的影響。它提供了更簡單、更專注的體驗:我們的編輯器完全是為了提供最佳的寫作體驗而設計的。

與經典的 WordPress 相比,它提供了更簡單、更簡化的體驗——它更容易設置和維護,開箱即用所有重要功能,並且速度明顯更快。與其他線上平台相比,Ghost 讓作家完全擁有對其內容的所有權和控制權,允許完全自訂,並使作者能夠圍繞他們的出版物建立業務。

Ghost 是一家營利公司嗎?

這對我們來說很重要:Ghost 是一個獨立的非營利組織。我們為現代新聞業和部落格建構發布工具,因為我們相信言論自由很重要。我們的軟體是在 免費開源許可證 下發布的,我們的商業模式是 完全透明的,而我們的法律結構意味著我們賺到的 100% 的資金都將重新投資於使 Ghost 變得更好。

什麼是 Ghost Desktop?

Ghost Desktop 允許作家一次管理多個部落格,並專注於他們的寫作。像常見的寫作快捷鍵這樣的簡單事情無法在瀏覽器中實現,但可以在我們的桌面應用程式中使用。它允許其他應用程式透過 深層連結 直接與部落格通信。

什麼是 Ghost for Journalism?

今年,我們非常興奮能夠將我們整個 10 人全職的 Ghost 團隊投入到幫助三個獨立出版物成長,並為他們的工作提供 45,000 美元的資源。我們稱之為 Ghost for Journalism

大約三年半以來,我們一直在將 Ghost 建構成網路上獨立發布商的下一個偉大平台,而我們現在已經達到一個非常有趣的轉折點。我們開始這段旅程是為了創建一個簡單、設計良好的部落格平台,幾乎任何人都可以使用。這始終是第一步。

從長遠來看,我們希望 Ghost 成為世界上最佳新聞業的絕佳平台,這意味著我們需要建立吸引這些人的功能。今年,我們正在做出一個非常明確的決定,只專注於此。

為什麼你們選擇在 Electron 上建構 Ghost Desktop?

Ghost 在後端和前端都使用 JavaScript 和 Node.js,因此能夠利用相同的技術和技能組合使我們的團隊能夠更快地行動、建構更多並最終提供更好的體驗。此外,能夠在 macOS、Windows 和 Linux 版本的應用程式之間共享 95% 以上的程式碼,使我們能夠專注於建構出色的核心用戶體驗,而無需為每個平台維護一個程式碼庫。

在建構 Ghost Desktop 的過程中,你們遇到哪些挑戰?

拼字檢查可能仍然是所提供的最困難的服務之一——我們可以輕鬆地利用眾多線上服務之一,但在保護用戶隱私和自主性的同時,以多種語言正確地拼字檢查文本並不是一件容易的事。

Electron 應該在哪些方面改進?

我們希望看到 Electron 將作業系統的原生拼字檢查功能帶到他們的應用程式中。我們夢想著一個 <input> 欄位接收與 NSTextView 相同的服務的世界,但我們也非常清楚這有多困難。

你最喜歡 Electron 的哪些地方?

JavaScript 以其龐大的生態系統而聞名,涉及無數的工具和框架——但它給我們帶來的便利性是難以言喻的。使用 Electron 建構應用程式只比建構網路應用程式稍微困難一點,這是一項了不起的成就。

Ghost 完成了嗎?如果沒有,下一步是什麼?

Ghost Desktop 也是一個正在進行的專案——我們離完成還很遠。我們已經討論了一段時間,要為我們的用戶帶來完整的離線模式,而且我們已經相當接近了。其他值得關注的工作領域是與其他文字編輯應用程式(如 Word 或 Atom)的擴展和整合,最終允許人們使用他們最喜歡的工具撰寫文章。總體而言,一旦我們發布了離線模式功能,我們正在尋求與作業系統更深入的整合。如果您對此感興趣,請 加入我們

你們最喜歡哪些 Electron 應用程式?

我非常喜歡 KapFelonyVisual Studio Code

👻

本週專案:Beaker Browser

·閱讀時間 4 分鐘

本週我們採訪了 Paul FrazeeBeaker Browser 的創作者。Beaker 是一款實驗性的點對點網頁瀏覽器,使用 Dat 協定從使用者的裝置託管網站。


什麼是 Beaker?你為何要創建它?

Beaker 是一款參與式瀏覽器。它是為獨立駭客打造的瀏覽器。

網路是閉源的。如果你想影響社群媒體的運作方式,你必須在 Facebook 或 Twitter 工作。搜尋引擎則是在 Google 工作。控制權掌握在公司手中,而不是使用者自己手中。

使用 Beaker,我們有了新的網路協定:分散式檔案傳輸,簡稱「Dat」。它可以免費按需建立網站,然後從裝置分享。無需伺服器。這就是我們的創新之處。

Beakers Protocols

當你在 Beaker 中瀏覽 Dat 網站時,你會下載這些檔案。該網站永遠屬於你。你可以儲存、複製、修改,並免費分享你的新版本。這一切都是開源的。

所以,這就是重點:我們正在為開源網站製作瀏覽器。我們希望它成為社群駭客的工具包。

哪些人應該使用 Beaker?

駭客。模組改造者。創意人士。喜歡修補的人。

我該如何創建一個使用 Dat 的新專案?

我們有一個 名為 bkr 的命令列工具,有點像 git + npm。以下是建立網站的方法

$ cd ~/my-site
$ bkr init
$ echo "Hello, world!" > index.html
$ bkr publish

以下是複製網站的方法

$ bkr fork dat://0ff7d4c7644d0aa19914247dc5dbf502d6a02ea89a5145e7b178d57db00504cd/ ~/my-fork
$ cd ~/my-fork
$ echo "My fork has no regard for the previous index.html!" > index.html
$ bkr publish

這些網站隨後將從你的瀏覽器中託管。它有點像 BitTorrent;你在 P2P 網格中分享網站。

如果你想要 GUI,我們在瀏覽器中內建了一些基本工具,但我們正在將這些工具推向使用者空間。這一切都將成為可修改的使用者應用程式。

你為什麼選擇在 Electron 上建構 Beaker?

對於這個專案來說,這顯而易見。如果我自己複製 Chrome,我現在就會在寫 C++!沒人想這樣做。我了解 Web 技術堆疊,並且可以快速使用它。這是不費吹灰之力的決定。

事實是,我不確定沒有 Electron 我是否可以做到這一切。它是一個很棒的軟體。

你在建構 Beaker 時面臨哪些挑戰?

其中一半是在研究這些工具,並找出我可以做到多少。

製作瀏覽器本身非常容易。Electron 實際上是製作瀏覽器的工具包。…除了瀏覽器分頁;我花了好久才把它弄對。我最後還是決定學習如何使用 SVG。它看起來好多了,但我花了 3 到 4 次的迭代才把它弄對。

Electron 應該在哪些方面改進?

如果我可以將開發人員工具停靠在網頁檢視內,那就太好了。

Beaker 的下一步是什麼?

Dat 網站的安全 DNS 名稱。一個可社會設定的 URL 方案,稱為「應用程式方案」。更多 Dat API。

對於可能有興趣為該專案做出貢獻的人來說,Beaker 在哪些領域需要幫助?

我們有很多未解決的問題。別害怕 ping 我。freenode 上的 #beakerbrowser。我們保留一個貢獻者頁面,我們會將你新增到其中。如果你到奧斯丁拜訪,我會請你喝啤酒。

是否有任何 Electron 提示可能對其他開發人員有用?

  1. 使用現有的建置工具。相信我,你不會想和你自己的解決方案搏鬥。使用 electron-builder。使用樣板儲存庫。
  2. 如果你需要在 Electron 儲存庫中開啟一個問題,請多花點心思讓它更容易重現。你會更快得到回覆,團隊也會感謝你。更好的是,嘗試自己修復它。查看內部結構實際上相當有趣。
  3. 至少閱讀一次所有指南和進階文件。
  4. 不要建構瀏覽器,這是一個飽和的市場。

本週專案:Kap

·閱讀時間 7 分鐘

Electron 社群正在快速成長,人們正以驚人的速度創建強大的新應用程式和工具。為了慶祝這種創造性的動力,並讓社群了解一些新的專案,我們決定開始一個每週部落格系列,介紹值得注意的與 Electron 相關的專案。


這篇文章是該系列的第一篇,介紹了 Kap,這是一個由 Wulkano(一個分散式自由設計師和開發人員團隊)建構的開源螢幕錄製應用程式。

Kap Screencast

什麼是 Kap?

Kap 是一個開源螢幕錄製工具,主要為設計師和開發人員設計,以便輕鬆捕捉他們的作品。人們用它來分享動畫原型、記錄錯誤、創建搞笑的 GIF 以及介於兩者之間的一切。

我們看到所有年齡層和背景的人們在教育環境、螢幕錄影、教學中使用它... 不勝枚舉。甚至還有人用它來創建生產資產!我們對於我們這個小小的副專案如此受歡迎感到非常驚訝。

你為何要建構它?

這是一個非常好的問題,並非市面上缺乏螢幕錄製工具!我們覺得替代方案要么太複雜、太貴,要么太有限。沒有任何東西感覺剛剛好可以滿足我們的日常需求。我們也認為,當我們用來工作工具是開源的時候,那就太棒了,這樣每個人都可以幫助塑造它們。建構 Kap 的最終重點其實是我們沒有做什麼。這一切都體現在細節中,這些細小的改進累積成我們想要使用的工具的輪廓。

然而,也許最重要的是,Kap 成為我們放下煩惱,單純為了自己和像我們這樣的人們享受建構東西樂趣的地方。創造一個可以讓你盡情發洩、嘗試新事物並享受你的工藝的環境非常重要。沒有要求、沒有壓力、沒有期望。設計師和開發人員應該進行副專案嗎?答案是,應該。他們應該這樣做。

你為什麼選擇在 Electron 上建構 Kap?

原因有很多

  • 網路技術
  • 大多數團隊成員都是網頁開發人員
  • 我們投資於 JavaScript
  • 它為更多人打開了貢獻的大門
  • Electron 本身是開源的
  • node_modules 的強大功能和易於維護的模組化
  • 跨平台可能性

我們認為應用程式的未來在瀏覽器中,但我們還沒有完全到達那裡。Electron 是邁向未來的重要一步。它不僅使應用程式本身更易於存取,也使建構它們的程式碼更易於存取。一個有趣的想法是想像一個作業系統是瀏覽器,而分頁本質上是 Electron 應用程式的未來。

此外,作為主要的網頁開發人員,我們非常喜歡 JavaScript 的同構特性,你可以同時在客戶端、伺服器和現在的桌面執行 JS。使用網路技術(HTML、CSS 和 JS),許多事情比原生更簡單:更快的原型設計、更少的程式碼、flexbox > 自動配置(macOS/iOS)。

你在建構 Kap 時面臨哪些挑戰?

使用 Electron 可用的資源錄製螢幕是最大的挑戰。它們的效能根本不足以滿足我們的要求,而且在我們看來會導致專案失敗。雖然這不是 Electron 本身的錯誤,但在使用網路技術建構桌面應用程式和原生開發之間仍然存在差距。

我們花費了大量時間試圖解決 getUserMedia API 效能不佳的問題,這是一個源自 Chromium 的問題。我們在開始製作 Kap 時的主要目標之一是使用網路技術建構整個應用程式。在盡一切可能使其正常運作(Retina 螢幕上的最低要求是 30 FPS)後,我們最終不得不尋找其他解決方案。

我在儲存庫中看到了一些 Swift 程式碼。那是關於什麼的?

由於被迫尋找 getUserMedia 的替代方案,我們開始嘗試使用 ffmpeg。除了是音訊和視訊轉換的最佳工具之一外,它還具備在幾乎任何作業系統中錄製螢幕的功能,而且我們能夠錄製出清晰的影片,滿足 Retina 螢幕上至少 30 FPS 的最低要求。問題是?效能表現是 "😩",CPU 使用率簡直失控。因此,我們回到原點,討論了我們的選項,並意識到我們必須做出妥協。這促成了 Aperture 的誕生,這是一個我們自己用 Swift 編寫的 macOS 螢幕錄影函式庫。

Electron 應該在哪些方面改進?

我們都知道 Electron 應用程式可能會很耗用 RAM,但再次強調,這實際上是 Chromium 的問題。這是它運作方式的一部分,而且實際上取決於您正在執行的內容,例如 Kap 和 Hyper 通常使用不到 100MB 的記憶體。

我們認為最大的改進領域之一是有效載荷,特別是 Electron 如何分發 Chromium。一個想法是擁有一個共享的 Electron 核心,並讓應用程式安裝程式檢查系統上是否已存在。

建立跨平台的 Electron 應用程式可以有更好的體驗。目前,平台之間存在太多不一致、平台特定的 API 以及缺少的功能,導致您的程式碼庫中充斥著 if-else 語句。例如,vibrancy 僅在 macOS 上受支援,自動更新程式在 macOS 和 Windows 上的運作方式不同,甚至在 Linux 上不受支援。透明度在 Linux 上是碰運氣,通常是沒辦法實現。

呼叫原生系統 API 也應該更容易。Electron 帶有一組非常好的 API,但有時您需要它沒有提供的功能。建立原生 Node.js 附加元件是一個選項,但使用起來很痛苦。理想情況下,Electron 應該附帶一個良好的 FFI API,例如 fastcall。這將使我們能夠用 JavaScript 編寫 Swift 部分。

你最喜歡 Electron 的哪些地方?

我們最喜歡的一點是,任何具備網頁開發知識的人都可以建構並貢獻跨平台原生體驗。更不用說它開發的輕鬆和樂趣、出色的文件和蓬勃發展的生態系統。

從前端的角度來看,建構 Kap 的感覺與使用瀏覽器 API 建構一個簡單的網站沒有什麼不同。Electron 在使應用程式開發與網頁開發相似(基本上相同)方面做得非常出色。它非常簡單,以至於我們不需要框架或類似的東西來幫助我們,只需要乾淨和模組化的 JS 和 CSS。

我們也是建構它的團隊、他們的奉獻和支持,以及他們維護的活躍和友好的社群的忠實粉絲。給你們所有人一個擁抱!

Kap 的下一步是什麼?

我們的下一步是審查該應用程式,為我們的 2.0.0 里程碑做準備,其中包括 React 重寫以及對外掛程式的支援,允許開發人員擴展 Kap 的功能!我們邀請大家關注該專案並在我們的 GitHub 儲存庫上貢獻。我們正在傾聽並希望盡可能多地收到您的回饋,請告訴我們如何才能讓 Kap 成為對您來說最好的工具!

什麼是 Wulkano?

Wulkano 是一個設計工作室和數位團體,一個由遠端技術人員組成的團隊,他們熱愛一起為客戶項目和我們自己的專案工作。我們是一個來自不同地點和背景的、分散但緊密聯繫的群體,在我們的虛擬辦公室(碰巧是基於 Electron 的 Slack!)中分享知識、想法、經驗,但最重要的是愚蠢的 GIF 和迷因。

是否有任何 Electron 提示可能對其他開發人員有用?

利用並參與這個很棒的 社群,查看 Awesome Electron,看看 範例,並利用很棒的 文件

Electron 簡單範例

·2 分鐘閱讀

我們最近在 GitHub 總部為 Hackbright Academy 的成員舉辦了一場 Electron 黑客松,這是一所位於舊金山的女性程式設計學校。為了幫助與會者在他們的專案中搶先一步,我們自己的 Kevin Sawicki 建立了一些 Electron 應用程式範例。


如果您是 Electron 開發新手或尚未嘗試過,這些應用程式範例是一個很好的起點。它們很小、易於閱讀,並且程式碼中加入了大量註解,以解釋一切是如何運作的。

若要開始使用,請複製此儲存庫

git clone https://github.com/electron/simple-samples

若要執行以下任何應用程式,請變更到應用程式的目錄,安裝相依性,然後啟動

cd activity-monitor
npm install
npm start

活動監視器

顯示 CPU 系統、使用者和閒置活動時間的甜甜圈圖表。

Screenshot

雜湊

顯示使用不同演算法輸入文字的雜湊值。

screenshot

鏡子

以最大化的尺寸播放電腦攝影機的視訊,就像照鏡子一樣。包括使用 CSS 動畫的可選彩虹濾鏡效果。

價格

使用 Yahoo Finance API 顯示石油、黃金和白銀的當前價格。

screenshot

URL

在視窗中載入命令列上傳遞的 URL。

其他資源

我們希望這些應用程式能幫助您開始使用 Electron。以下是一些其他資源,供您了解更多資訊

Electron Userland

·3 分鐘閱讀

我們在 Electron 網站上新增了一個新的 userland 區塊,以幫助使用者發現構成我們蓬勃發展的開源生態系統的人員、套件和應用程式。


github-contributors

Userland 的起源

Userland 是軟體社群中的人們聚集在一起分享工具和想法的地方。這個詞起源於 Unix 社群,它指的是任何在核心之外執行的程式,但今天它的意義更加廣泛。當今天 JavaScript 社群中的人們提到 userland 時,他們通常指的是 npm 套件登錄。這是大多數實驗和創新發生的場所,而 Node 和 JavaScript 語言(就像 Unix 核心一樣)保留了一組相對較小且穩定的核心功能。

Node 和 Electron

與 Node 一樣,Electron 也有一組小的核心 API。它們提供了開發多平台桌面應用程式所需的基本功能。這種設計理念使 Electron 保持靈活的工具,而不會過度規定其應如何使用。

Userland 是「核心」的對應物,它允許使用者建立和分享擴展 Electron 功能的工具。

收集資料

為了更好地了解我們生態系統中的趨勢,我們分析了 15,000 個依賴 electronelectron-prebuilt 的公共 GitHub 儲存庫的中繼資料

我們使用 GitHub APIlibraries.io API 和 npm 登錄檔來收集有關相依性、開發相依性、依賴者、套件作者、儲存庫貢獻者、下載次數、fork 次數、star 次數等資訊。

然後,我們使用這些資料來產生以下報告

篩選結果

像是應用程式相依性星號標記的應用程式這類報表,會列出套件、應用程式和儲存庫,並且有一個文字輸入欄位可以用來篩選結果。

當您在這個輸入欄位中輸入時,頁面的 URL 會動態更新。這讓您可以複製代表特定使用者資料切片的 URL,然後與其他人分享。

babel

更多內容即將推出

第一組報表僅是個開始。我們將持續收集關於社群如何建構 Electron 的資料,並將在網站上新增報表。

所有用於收集和顯示此資料的工具都是開源的

如果您對如何改進這些報表有任何想法,請在網站儲存庫或上述任何儲存庫中提出 issue讓我們知道。

感謝 Electron 社群的各位,使使用者領域能有今日的成就!