跳到主要内容

26 篇带有“社区”标签的文章

Electron 中的社区倡议

查看所有标签

Google 编程之夏 2025

·5 分钟阅读

Electron 再次被接受为 Google 编程之夏 (GSoC) 2025 的指导组织!Google 编程之夏是一个全球性的项目,专注于将新的贡献者引入开源软件开发。

有关该计划的更多详细信息,请访问 Google 的 编程之夏主页

关于我们

Electron 是一个 JavaScript 框架,用于使用 Web 技术构建跨平台桌面应用程序。核心 Electron 框架是一个使用 ChromiumNode.js 构建的编译后的二进制可执行文件,主要用 C++ 编写。

在 Electron 核心仓库之外,我们还维护着几个项目来支持 Electron 生态系统,包括

作为 GSoC 贡献者,您将有机会与 Electron 的一些核心贡献者在 github.com/electron 伞下的众多项目之一上进行协作。

申请之前

如果您对 Electron 非常不熟悉,我们建议您首先阅读文档,并尝试 Electron Fiddle 中的一些示例。

要了解有关分发 Electron 应用程序的更多信息,请尝试使用 Electron Forge 创建一个示例应用程序

npm init electron-app@latest my-app

在熟悉了一些代码之后,请加入 Electron Discord 服务器上的对话。

提示

如果这是您第一次参加 Google 编程之夏,或者您是开源新手,我们建议您在与社区互动之前,先阅读 Google 的 贡献者指南

项目贡献

我们鼓励您查看与您感兴趣的项目想法相关的任何仓库。进行研究的一种方法是通过报告错误、分类现有问题或提交拉取请求来做出贡献。这样做是获得我们代码库实践经验的有效方法,但这对于提案提交并非强制性的。一个精心撰写的提案应该能够证明您对代码的理解,而无需参考过去的贡献。

如果您希望在提交提案之前为 Electron 做出贡献,以下是一些技巧

  1. 提交贡献时,请提供描述性的问题或 PR 描述。无论代码本身如何,在贡献的写作部分付出努力都表明您可以在协作环境中成为有效的沟通者。
  2. PR 始终欢迎针对未解决的问题。您无需在问题上发表评论,询问维护者是否可以将您分配给它。请注意,如果您需要改进解决方案的想法,我们仍然鼓励您在问题上讨论潜在的解决方案,但严格询问您是否可以处理某些事情的评论是多余的,并且会给问题跟踪器增加噪音。
  3. 低效的项目贡献(例如,无效的问题报告、仓库 README 中的琐碎措辞更改或前端代码的细微风格更改)将对您的最终提案产生负面影响,因为它们占用了维护者有限的时间,并且没有为 Electron 项目提供任何净收益。
  4. 虽然 AI 编码助手可能是调试和理解新概念的有效工具,但我们强烈不鼓励直接从 AI 生成的输出中复制/粘贴的贡献。这些贡献通常质量低下,维护者清理 LLM 生成的代码通常比我们直接拒绝 PR 更费力。

撰写提案

有兴趣与 Electron 合作吗?首先,查看我们准备的 七个项目构想草案。所有列出的想法都接受提案。

如果您有列表中没有的独特想法,我们也乐于考虑,但请确保您的提案详细且彻底概述。如有疑问,我们建议坚持我们列出的想法。

您的申请应包括

  • 一份详细的提案,概述您计划在夏季实现的目标。
  • 您作为开发人员的背景。如果您有简历,请附上一份副本。否则,请告诉我们您过去的技能经验。
    • 在某些领域缺乏经验不会使您失去资格,但这将有助于我们的导师制定计划,以最好地支持您并确保您的夏季项目取得成功。

此处提供了关于作为 Electron 应用程序一部分提交内容的详细指南直接向 Google 编程之夏门户网站提交提案。发送给 Electron 团队的电子邮件提案将不被视为最终提交。

有关提案的更多指导,我们建议您遵循 此处的 Google 编程之夏官方提案写作建议

申请将于 2025 年 3 月 24 日 开放,并于 2025 年 4 月 8 日 关闭。

过往项目提案

📚 对于 GSoC 2024,@piotrpdev 致力于将 API 历史记录添加到 Electron 核心文档中。要了解 Piotr 在 Electron 度过夏天的工作内容,请阅读 2024 年 GSoC 项目存档中的报告。

🔐 对于 GSoC 2022,@aryanshridhar 致力于在 Electron Fiddle 中启用上下文隔离。如果您想了解 Aryan 在 Electron 度过夏天的工作内容,您可以阅读 2022 年 GSoC 项目存档中的报告。

有问题吗?

如果您有我们在此博客文章中未解决的问题,或者对您的提案草案有疑问,请发送电子邮件至 summer-of-code@electronjs.org 或查看 GSoC 常见问题解答。在发送电子邮件之前,请阅读 我们的贡献者指南

资源

将我们的生态系统迁移到 Node 22

·2 分钟阅读

在 2025 年初,Electron 的 npm 生态系统仓库(在 @electron/@electron-forge/ 命名空间下)将迁移到 Node.js 22 作为最低支持版本。


这意味着什么?

过去,Electron 的 npm 生态系统(Forge、Packager 等)中的软件包尽可能长时间地支持 Node 版本,即使在版本达到其生命周期结束 (EOL) 日期之后也是如此。这样做是为了确保我们不会碎片化生态系统——我们理解许多项目依赖于旧版本的 Node,并且除非有迫切的升级理由,否则我们不想冒着让这些项目陷入困境的风险。

随着时间的推移,由于以下几个原因,使用 Node.js 14 作为我们的最低版本变得越来越困难

  • 缺少官方 Node.js 14 macOS ARM64 构建版本,这需要我们维护 CI 基础设施变通方法,以提供完整的测试覆盖率。
  • 上游软件包依赖项的 engines 要求已经向前发展,使得通过依赖项升级来解决供应链安全问题变得越来越困难。

此外,较新版本的 Node.js 包含许多我们想要利用的改进,例如运行时原生通用实用程序(例如 fs.globutil.parseArgs)和全新的电池包含模块(例如 node:test, node:sqlite)。

为何现在升级?

在 2024 年 7 月,Electron 的生态系统工作组决定将所有软件包升级到最早的 Node 版本,在该版本中将支持同步 ESM 图的 require()(请参阅 nodejs/node#51977nodejs/node#53500),并在该版本达到其 LTS 日期之后的未来某个时间点进行升级。

我们已决定将更新时间设置为 2025 年 1 月/2 月。在此升级发生后,Node 22 将成为现有生态系统软件包中支持的最低版本。

我需要采取什么行动?

我们将努力尽可能保持兼容性。但是,为确保最佳支持,我们鼓励您将应用程序升级到 Node 22 或更高版本。

请注意,项目中运行的 Node 版本与嵌入到当前 Electron 版本中的 Node 版本无关。

下一步是什么

如果您有任何问题或疑虑,请随时写信给我们:info@electronjs.org。您还可以在我们的官方 Electron Discord 中找到社区支持。

从 BrowserView 迁移到 WebContentsView

·3 分钟阅读

BrowserViewElectron 30 以来已被弃用,并由 WebContentView 取代。值得庆幸的是,迁移相当轻松。


Electron 正在从 BrowserView 迁移到 WebContentsView,以与 Chromium 的 UI 框架 Views API 对齐。WebContentsView 提供了一个可重用的视图,直接与 Chromium 的渲染管道相关联,简化了未来的升级,并为开发人员集成非 Web UI 元素到他们的 Electron 应用程序中开辟了可能性。通过采用 WebContentsView,应用程序不仅为即将到来的更新做好了准备,而且从长远来看,还可以从降低代码复杂性和减少潜在错误中获益。

熟悉 BrowserWindows 和 BrowserViews 的开发人员应注意,BrowserWindowWebContentsView 分别是从 BaseWindowView 基类继承的子类。要充分理解可用的实例变量和方法,请务必查阅这些基类的文档。

迁移步骤

1. 升级 Electron 至 30.0.0 或更高版本

警告

Electron 版本可能包含影响您的应用程序的重大更改。在继续进行此迁移的其余部分之前,最好首先在您的应用程序上测试并应用 Electron 升级。每个 Electron 主要版本的重大更改列表可以在 此处 以及 Electron 博客上每个主要版本的发行说明中找到。

2. 熟悉您的应用程序中使用 BrowserView 的位置

一种方法是在您的代码库中搜索 new BrowserView(。这应该让您了解您的应用程序如何使用 BrowserView 以及有多少调用站点需要迁移。

提示

在大多数情况下,您的应用程序实例化新 BrowserView 的每个实例都可以与其他实例隔离迁移。

3. 迁移 BrowserView 的每个用法

  1. 迁移实例化。这应该相当简单,因为 WebContentsViewBrowserView 的 构造函数本质上具有相同的形状。两者都通过 webPreferences 参数接受 WebPreferences

    - this.tabBar = new BrowserView({
    + this.tabBar = new WebContentsView({
    提示

    默认情况下,WebContentsView 以白色背景实例化,而 BrowserView 以透明背景实例化。要在 WebContentsView 中获得透明背景,请将其背景颜色设置为 RGBA 十六进制值,并将 alpha(不透明度)通道设置为 00

    + this.webContentsView.setBackgroundColor("#00000000");
  2. 迁移 BrowserView 被添加到其父窗口的位置。

    - this.browserWindow.addBrowserView(this.tabBar)
    + this.browserWindow.contentView.addChildView(this.tabBar);
  3. 迁移父窗口上的 BrowserView 实例方法调用。

    旧方法新方法说明
    win.setBrowserViewwin.contentView.removeChildView + win.contentView.addChildView
    win.getBrowserViewwin.contentView.children
    win.removeBrowserViewwin.contentView.removeChildView
    win.setTopBrowserViewwin.contentView.addChildView在现有视图上调用 addChildView 会将其重新排序到顶部。
    win.getBrowserViewswin.contentView.children
  4. setAutoResize 实例方法迁移到调整大小监听器。

    - this.browserView.setAutoResize({
    - vertical: true,
    - })

    + this.browserWindow.on('resize', () => {
    + if (!this.browserWindow || !this.webContentsView) {
    + return;
    + }
    + const bounds = this.browserWindow.getBounds();
    + this.webContentsView.setBounds({
    + x: 0,
    + y: 0,
    + width: bounds.width,
    + height: bounds.height,
    + });
    + });
    提示

    所有现有的 browserView.webContents 用法和实例方法 browserView.setBoundsbrowserView.getBoundsbrowserView.setBackgroundColor 都不需要迁移,并且应该可以与 WebContentsView 实例开箱即用!

4. 测试并提交您的更改

遇到问题?查看 Electron 的问题跟踪器上的 WebContentsView 标签,看看您遇到的问题是否已被报告。如果您在那里没有看到您的问题,请随时添加新的错误报告。包含测试用例 gist 将有助于我们更好地分类您的问题!

恭喜,您已迁移到 WebContentsView!🎉

API 历史记录介绍 (GSoC 2024)

·7 分钟阅读

Electron API 的历史变更现在将在文档中详细说明。


大家好 👋,我是 Peter,2024 年 Google 编程之夏 (GSoC) Electron 项目的贡献者。

在 GSoC 项目的过程中,我为 Electron 文档及其函数、类等实现了 API 历史记录功能,其方式与 Node.js 文档类似:通过允许在 API 文档 Markdown 文件中使用简单但功能强大的 YAML 模式,并在 Electron 文档网站上很好地显示它。

Google 编程之夏 2024

·4 分钟阅读

我们很高兴地宣布,Electron 已被接受为第 20 届 Google 编程之夏 (GSoC) 2024 的指导组织!Google 编程之夏是一个全球性的项目,专注于将新的贡献者引入开源软件开发。

有关更多项目详情,请查看 Google 的 编程之夏主页

关于我们

Electron 是一个 JavaScript 框架,用于使用 Web 技术构建跨平台桌面应用程序。核心 Electron 框架是一个使用 ChromiumNode.js 构建的编译后的二进制可执行文件,主要用 C++ 编写。

在 Electron 核心之外,我们还致力于各种项目,以帮助维持 Electron 组织,例如

作为编程之夏贡献者,您将与 Electron 的一些核心贡献者在 github.com/electron 伞下的众多项目之一上进行协作。

申请之前

如果您对 Electron 非常不熟悉,我们建议您首先阅读文档,并尝试 Electron Fiddle 中的示例。

要了解有关 Electron 应用程序分发的更多信息,您还可以通过创建一个示例应用程序来试用 Electron Forge

npm init electron-app@latest my-app

在熟悉了一些代码之后,请加入 Electron Discord 服务器上的对话。

提示

如果这是您第一次参加 Google 编程之夏,或者您是开源新手,我们建议您首先阅读 Google 的 贡献者指南,然后再与社区互动。

起草您的提案

有兴趣与 Electron 合作吗?首先,查看我们准备的 七个项目构想草案。所有列出的想法目前都接受提案。

有您希望我们考虑的其他想法吗?我们也乐于接受不在拟议项目列表中的新想法,但请确保您的方法已彻底概述和详细说明。如有疑问,我们建议坚持我们列出的想法。

您的申请应包括

  • 您的提案:一份书面文件,详细描述您计划在夏季完成的工作。
  • 您作为开发人员的背景。如果您有简历,请附上一份副本。否则,请告诉我们您过去的技能经验。
    • 在某些领域缺乏经验不会使您失去资格,但这将有助于我们的导师制定计划,以最好地支持您并确保您的夏季项目取得成功。

此处提供了关于作为 Electron 应用程序一部分提交内容的详细指南。 直接向 Google 编程之夏门户网站提交提案。请注意,通过电子邮件发送给 Electron 团队而不是通过申请门户网站提交的提案将不被视为最终提交。

如果您想获得有关提案的更多指导,或者不确定要包含哪些内容,我们还建议您遵循 此处的 Google 编程之夏官方提案写作建议

申请将于 2024 年 3 月 18 日 开放,并于 2024 年 4 月 2 日 关闭。

提示

我们的 2022 年 Google 编程之夏实习生 @aryanshridhar 做得非常出色!如果您想了解 Aryan 在 Electron 度过夏天的工作内容,您可以阅读 2022 年 GSoC 项目存档中的报告。

有问题吗?

如果您有我们在此博客文章中未解决的问题,或者对您的提案草案有疑问,请发送电子邮件至 summer-of-code@electronjs.org 或查看 GSoC 常见问题解答

资源

electron/rfcs 介绍

·3 分钟阅读

Electron 的 API 工作组 正在采用开放的征求意见稿 (RFC) 流程,以帮助引导 Electron 核心的更大变更。

为何采用 RFC?

简而言之,我们希望简化 Electron 核心重大变更的流程。

目前,新的代码更改主要通过 GitHub 上的问题和拉取请求进行讨论。对于 Electron 的大多数更改,这是一个很好的系统。许多错误修复、文档更改,甚至新功能都足够简单,可以通过标准的 GitHub 流程异步审查和合并。

对于更重要的更改——例如,大型 API 表面或影响大多数 Electron 应用程序的重大更改——在编写大部分代码之前,在构思阶段进行审查是有意义的。

此过程旨在向公众开放,这也将使更广泛的开源社区更容易在潜在更改在 Electron 中落实之前提供反馈。

它是如何运作的?

整个 RFC 流程都在 GitHub 上的 electron/rfcs 仓库中进行。仓库的 README 中详细描述了这些步骤。

简而言之,一旦向 electron/rfcs 仓库发起 PR,RFC 就被提议(Proposed)。一个被提议的 RFC 会变成

  • 活跃(Active),当 PR 被合并到仓库的 main 分支时,这意味着 Electron 维护者赞同在 electron/electron 中实现该 RFC,或者
  • 如果 PR 最终被拒绝,则变为拒绝(Declined)
提示

为了使 RFC 变为活跃(Active),PR 必须至少获得 2 名 API 工作组成员的批准。在合并之前,RFC 应该进行同步演示,并获得至少三分之二 WG 成员的法定人数一致接受。如果达成共识,将触发为期一个月的最终评论期,之后 PR 将被合并。

如果实现已合并到 electron/electron 中,则活跃(Active)的 RFC 将变为完成(Completed)

谁可以参与?

Electron 社区中的任何人都可以提交 RFC 或在 electron/rfcs 仓库中留下反馈!

我们希望使这个过程成为双向对话,并鼓励社区参与,以获得可能在未来使用这些 API 的 Electron 应用的各种意见。如果您有兴趣对当前提议的 RFC 留下反馈,Electron 维护者已经创建了一些

鸣谢

Electron 的 RFC 流程是以许多已建立的开源 RFC 流程为蓝本的。许多想法和大部分文案的灵感来自

Electron 十周年 🎉

·10 分钟阅读

首次提交到 electron/electron 仓库是在 2013 年 3 月 13 日1

Initial commit on electron/electron by @aroben

10 年和来自 1192 位独特贡献者的 27,147 次提交之后,Electron 已成为当今最流行的桌面应用程序构建框架之一。这个里程碑是庆祝和反思我们迄今为止的旅程,并分享我们一路走来所学到的经验的绝佳机会。

如果没有每位投入时间和精力为项目做出贡献的人,我们今天就不会在这里。尽管源代码提交始终是最可见的贡献,但我们还必须承认那些报告错误、维护 userland 模块、提供文档和翻译以及参与网络空间中 Electron 社区的人们的努力。每一项贡献对我们维护者来说都非常宝贵。

在我们继续阅读博客文章的其余部分之前:感谢您。❤️

我们是如何走到今天的?

Atom Shell 最初是作为 GitHub Atom 编辑器 的骨干构建的,该编辑器于 2014 年 4 月发布公开测试版。它从头开始构建,作为当时可用的基于 Web 的桌面框架(node-webkit 和 Chromium Embedded Framework)的替代方案。它有一个杀手级功能:嵌入 Node.js 和 Chromium,为 Web 技术提供强大的桌面运行时。

在一年之内,Atom Shell 的功能和受欢迎程度开始大幅增长。大型公司、初创公司和个人开发者都开始使用它构建应用程序(一些早期的采用者包括 SlackGitKrakenWebTorrent),并且该项目被恰如其分地更名为 Electron

从那时起,Electron 一路高歌猛进,从未停止。以下是我们每周下载量的历史记录,由 npmtrends.com 提供

Electron weekly downloads graph over time

Electron v1 于 2016 年发布,承诺提高 API 稳定性和改进文档及工具。Electron v2 于 2018 年发布,并引入了语义版本控制,使 Electron 开发者更容易跟踪发布周期。

到 Electron v6,我们转向了定期的 12 周主要版本发布节奏,以匹配 Chromium 的节奏。这个决定改变了项目的理念,将“拥有最新的 Chromium 版本”从锦上添花提升到优先事项。这减少了升级之间的技术债务量,使我们更容易保持 Electron 的更新和安全。

从那时起,我们就像一台运转良好的机器,在每个 Chromium 稳定版发布的同一天发布新的 Electron 版本。当 Chromium 在 2021 年将其发布时间表加快到 4 周时,我们能够耸耸肩,并将我们的发布节奏相应地提高到 8 周。

我们现在正处于 Electron v23(并且还在继续计数),并且仍然致力于构建用于构建跨平台桌面应用程序的最佳运行时。即使近年来 JavaScript 开发者工具蓬勃发展,Electron 仍然是桌面应用程序框架领域中稳定、经过实战考验的中流砥柱。Electron 应用程序如今随处可见:您可以使用 Visual Studio Code 进行编程,使用 Figma 进行设计,使用 Slack 进行通信,并使用 Notion 记笔记(以及许多其他用例)。我们为这项成就感到无比自豪,并感谢每一位使之成为可能的人。

我们一路走来学到了什么?

通往十年里程碑的道路漫长而曲折。以下是一些帮助我们运营可持续的大型开源项目的关键要素。

通过治理模型扩展分布式决策

我们必须克服的一个挑战是,一旦 Electron 首次爆发式流行,如何处理项目的长期方向。我们如何处理成为一个由分布在不同公司、国家和时区的几十名工程师组成的团队?

在早期,Electron 的维护者团队依赖于非正式的协调,这对于较小的项目来说快速而轻便,但无法扩展到更广泛的协作。在 2019 年,我们转向了治理模型,其中不同的工作组拥有正式的责任领域。这对于简化流程并将项目所有权的一部分分配给特定的维护者至关重要。如今,每个工作组 (WG) 负责什么?

  • 发布 Electron 版本(发布 WG)
  • 升级 Chromium 和 Node.js(升级 WG)
  • 监督公共 API 设计(API WG)
  • 保持 Electron 安全(安全 WG)
  • 运行网站、文档和工具(生态系统 WG)
  • 社区和企业外联(外联 WG)
  • 社区管理(社区与安全 WG)
  • 维护我们的构建基础设施、维护者工具和云服务(基础设施 WG)

大约在我们转向治理模型的同时,我们还将 Electron 的所有权从 GitHub 转移到了 OpenJS 基金会。尽管最初的核心团队今天仍在 Microsoft 工作,但他们只是构成 Electron 治理的更大的协作者群体的一部分。2

虽然这个模型并不完美,但它在经历了全球疫情和持续的宏观经济逆风后,仍然非常适合我们。展望未来,我们计划改进治理章程,以指导我们度过 Electron 的第二个十年。

提示

如果您想了解更多信息,请查看 electron/governance 仓库!

社区

开源的社区部分是困难的,特别是当您的外联团队是一打穿着写着“社区经理”风衣的工程师时。也就是说,作为一个大型开源项目意味着我们有很多用户,利用他们的能量为 Electron 构建用户态生态系统是维持项目健康的关键部分。

为了发展我们的社区影响力,我们一直在做什么?

构建虚拟社区

  • 2020 年,我们启动了社区 Discord 服务器。我们之前在 Atom 的论坛中有一个版块,但决定使用更非正式的消息平台,为维护者和 Electron 开发者之间的讨论以及一般的调试帮助提供空间。
  • 2021 年,在 @BlackHole1 的帮助下,我们成立了 Electron China 用户组。这个小组对于 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 的最低要求!

提示

如果您是开源贡献者,您也可以尝试 Not Goma 的只读缓存,该缓存默认与 Electron Build Tools 一起提供。

持续多因素身份验证

持续多因素身份验证 (CFA) 是围绕 npm 的双因素身份验证 (2FA) 系统的一层自动化,我们将其与 semantic-release 结合使用,以管理我们各种 @electron/ npm 包的安全和自动化发布。

虽然 semantic-release 已经自动化了 npm 包发布过程,但它需要关闭双因素身份验证或传入绕过此限制的密钥令牌。

我们构建 CFA 是为了为任意 CI 作业提供 npm 2FA 的基于时间的一次性密码 (TOTP),使我们能够在保持双因素身份验证的额外安全性的同时,利用 semantic-release 的自动化。

我们将 CFA 与 Slack 集成前端一起使用,允许维护者从他们拥有 Slack 的任何设备上验证软件包发布,只要他们手边有 TOTP 生成器即可。

提示

如果您想在自己的项目中试用 CFA,请查看 GitHub 仓库文档!如果您使用 CircleCI 作为您的 CI 提供商,我们还有一个方便的 orb,可以快速搭建一个带有 CFA 的项目。

Sheriff

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 的最新和最强大的功能保持同步,同时为企业级应用程序保持稳定性和安全性。

我们通常会在即将推出的计划变得具体时宣布相关消息。如果您想及时了解未来的版本、功能和一般项目更新,您可以阅读我们的博客并关注我们的社交媒体资料(TwitterMastodon)!

脚注

  1. 这实际上是 electron-archive/brightray 项目 的首次提交,该项目于 2017 年被 Electron 吸收,并合并了其 git 历史记录。但这又有什么关系呢?今天是我们的生日,所以我们可以制定规则!

  2. 与普遍看法相反,Electron 不再由 GitHub 或 Microsoft 拥有,而是如今 OpenJS 基金会 的一部分。

Google 编程之夏 2022

·2 分钟阅读

Electron 团队很高兴地宣布,今年我们将首次参加 Google Summer of Code!


什么是 Google Summer of Code?

Google Summer of Code (GSoC) 是一项年度指导计划,旨在将开源软件项目与潜在的贡献者联系起来。以前仅对学生开放,现在任何 18 岁及以上的人都可以注册 GSoC。

有关更多信息,请查看 Summer of Code 首页

如何注册?

您有兴趣与 Electron 合作吗?如果您是新的或初级开源贡献者,我们欢迎您申请!

为了被选为 Google Summer of Code 的 Electron 贡献者,您需要提交申请。申请将于 2022 年 4 月 4 日开放,并于 2022 年 4 月 19 日关闭。您可以在此处关注 Google: Summer of Code 申请指南的更新

想申请吗?首先,查看我们准备的 五个项目构想草案。列出的所有构想目前都接受提案。我们也欢迎接受未在拟议项目列表中的新构想。

您的申请应包括

  • 您的提案,是一份书面文件,详细描述了您计划在夏季期间实现的目标。
  • 您的开发者背景。如果您有简历,请附上一份副本,否则请告诉我们您的过往经验,重点是相关的技术经验。

此处提供了作为 Electron 应用程序一部分提交内容的详细指南。

您还可以通读 官方 GSoC 学生/贡献者指南,以获取有关准备提案的重要提示。

如果您想讨论项目提案或有疑问,请加入我们的 #gsoc-general Discord 频道

参考资料

社区 Discord 服务器和 Hacktoberfest

·3 分钟阅读

加入我们,参加社区联谊和为期一个月的开源庆祝活动。


Hacktoberfest and Discord banner

Electron 社区 Discord 启动

Electron 的 外联工作组 很高兴地宣布启动我们的官方社区 Discord 服务器!

为什么需要新的 Discord 服务器?

在早期作为 Atom 文本编辑器 的骨干时,关于 Electron 框架的社区讨论发生在 Atom 的 Slack 工作区中的单个频道中。随着时间的推移,这两个项目越来越脱钩,Atom 工作区与 Electron 项目的相关性降低,维护者参与 Slack 频道的程度也以同样的方式下降。

到目前为止,我们仍然将更广泛的社区重定向到 Atom Slack 工作区,即使我们收到了许多来自人们的报告,他们难以收到邀请,而且我们很少有核心维护者经常访问该频道。

我们正在建立这个全新的服务器,作为社区的中心讨论枢纽,您可以在其中获取有关 Electron 所有事物的最新消息。

加入我们!

到目前为止,服务器的成员包括一些一直在共同努力设置它的维护者,但我们非常高兴与大家聊天!来这里寻求帮助,及时了解 Electron 版本,或只是与其他开发者一起闲逛。我们为您准备了一个方便的 邀请,它将使您能够访问服务器!

Hacktoberfest 2020

作为一个大型且长期运行的开源项目,如果没有社区的所有贡献,从代码提交到错误报告再到文档更改等等,Electron 就不会如此成功。这就是为什么我们相信参与 Hacktoberfest 以引导更广泛的各种技能水平的开发者社区加入该项目的重要性。

杂项

今年,我们没有更广泛的项目让大家参与,但我们希望专注于在 Electron JavaScript 生态系统中贡献的机会。

在我们的各个仓库中查找标记为 hacktoberfest 的问题,包括主要的 electron/electron 仓库、electron/electronjs.org 网站、electron/fiddleelectron-userland/electron-forge

附注:如果您感到特别有冒险精神,如果您正在寻找更大的挑战,我们还有积压的问题标记为 help wanted 标签。

遇到困难?来和我们聊天!

此外,我们的 Discord 服务器盛大开幕也绝非巧合地与年度最大的开源软件庆祝活动同时进行。查看 #hacktoberfest 频道以寻求有关您的 Hacktoberfest PR 的帮助。如果您错过了,这是邀请链接

Google Season of Docs

·2 分钟阅读

Electron 很荣幸能参加第二届 Google Season of Docs 计划,该计划将开源组织的导师与技术文档编写人员配对,以改进项目文档。


什么是 Season of Docs?

Season of Docs logo

Season of Docs 是一项促进技术文档编写人员和开源社区之间协作的计划,对双方都有利。开源维护者利用文档编写人员的技术文档编写专业知识来改进其文档的结构和内容,而技术文档编写人员则在导师的指导下被引入开源社区。在 Google 的 Season of Docs 网站上了解更多信息。

对于我们首次参加该计划,我们将指导一位技术文档编写人员,他将与 Electron 的 生态系统工作组 合作,重塑我们文档的很大一部分。您可以在 此处 了解有关整个项目时间表的更多信息。

如何注册?

您是否有兴趣作为技术文档编写人员与我们合作?首先,熟悉 Google 的 技术文档编写人员指南,并查看我们准备的两个 项目构想草案

为了被选为 Electron 的 Season of Docs 技术文档编写人员,候选人需要在 6 月 8 日至 7 月 9 日运行的技术文档编写人员申请阶段期间在 Google Season of Docs 网站上申请。

你的申请应包含一份提案,这是一份书面文件,详细描述了你计划在 3 个月内在 Electron 文档上完成的工作。这份提案可以基于我们的项目构想文档中提到的起点之一进行展开,也可以是全新的内容。不知道从哪里开始?你可以查看去年的已接受提案列表以获取灵感。

除了提案之外,我们还会关注你作为技术文档撰写者的背景。请附上一份简历,重点突出相关的写作经验,以及技术写作样本(这些样本可以是现有的文档、教程、博客文章等)。

如果你想讨论项目提案,请发送邮件至 season-of-docs@electronjs.org,我们可以从那里开始交流!

参考