Skip to content

Commit b88a1a9

Browse files
committed
docs: add Electron
1 parent c1641d8 commit b88a1a9

File tree

4 files changed

+131
-175
lines changed

4 files changed

+131
-175
lines changed

data/technologies/electron.json

Lines changed: 8 additions & 175 deletions
Original file line numberDiff line numberDiff line change
@@ -9,185 +9,18 @@
99
"iOS": ""
1010
},
1111
"languages": {
12-
"C++": "",
12+
"C++": "",
1313
"C#": "",
1414
"Go": "",
1515
"Java": "",
16-
"Node.js": "",
16+
"Node.js": "",
1717
"Rust": ""
1818
},
19-
"releases": [
20-
{
21-
"version": "v12.0.9",
22-
"date": "2021-05-19T20:53:13Z"
23-
},
24-
{
25-
"version": "v12.0.8",
26-
"date": "2021-05-17T18:05:22Z"
27-
},
28-
{
29-
"version": "v12.0.7",
30-
"date": "2021-05-07T09:23:38Z"
31-
},
32-
{
33-
"version": "v12.0.6",
34-
"date": "2021-04-30T18:58:01Z"
35-
},
36-
{
37-
"version": "v12.0.5",
38-
"date": "2021-04-20T23:32:57Z"
39-
},
40-
{
41-
"version": "v12.0.4",
42-
"date": "2021-04-13T20:41:16Z"
43-
},
44-
{
45-
"version": "v12.0.3",
46-
"date": "2021-04-13T14:41:23Z"
47-
},
48-
{
49-
"version": "v12.0.2",
50-
"date": "2021-03-23T19:20:57Z"
51-
},
52-
{
53-
"version": "v12.0.1",
54-
"date": "2021-03-10T21:11:39Z"
55-
},
56-
{
57-
"version": "v12.0.0",
58-
"date": "2021-03-02T00:47:36Z"
59-
},
60-
{
61-
"version": "v11.4.7",
62-
"date": "2021-05-17T18:06:09Z"
63-
},
64-
{
65-
"version": "v11.4.6",
66-
"date": "2021-05-07T21:55:59Z"
67-
},
68-
{
69-
"version": "v11.4.5",
70-
"date": "2021-05-04T21:19:15Z"
71-
},
72-
{
73-
"version": "v11.4.4",
74-
"date": "2021-04-27T14:59:26Z"
75-
},
76-
{
77-
"version": "v11.4.3",
78-
"date": "2021-04-13T20:39:06Z"
79-
},
80-
{
81-
"version": "v11.4.2",
82-
"date": "2021-04-02T17:03:23Z"
83-
},
84-
{
85-
"version": "v11.4.1",
86-
"date": "2021-03-23T15:11:02Z"
87-
},
88-
{
89-
"version": "v11.4.0",
90-
"date": "2021-03-15T17:27:00Z"
91-
},
92-
{
93-
"version": "v11.3.0",
94-
"date": "2021-02-19T19:40:56Z"
95-
},
96-
{
97-
"version": "v11.2.3",
98-
"date": "2021-02-05T18:09:34Z"
99-
},
100-
{
101-
"version": "v11.2.2",
102-
"date": "2021-02-02T17:39:20Z"
103-
},
104-
{
105-
"version": "v11.2.1",
106-
"date": "2021-01-22T23:55:58Z"
107-
},
108-
{
109-
"version": "v11.2.0",
110-
"date": "2021-01-11T22:55:25Z"
111-
},
112-
{
113-
"version": "v11.1.1",
114-
"date": "2020-12-21T17:33:50Z"
115-
},
116-
{
117-
"version": "v11.1.0",
118-
"date": "2020-12-11T21:04:18Z"
119-
},
120-
{
121-
"version": "v11.0.5",
122-
"date": "2020-12-10T17:47:27Z"
123-
},
124-
{
125-
"version": "v11.0.4",
126-
"date": "2020-12-07T18:07:14Z"
127-
},
128-
{
129-
"version": "v11.0.3",
130-
"date": "2020-11-24T01:01:35Z"
131-
},
132-
{
133-
"version": "v11.0.2",
134-
"date": "2020-11-19T18:19:36Z"
135-
},
136-
{
137-
"version": "v10.4.6",
138-
"date": "2021-05-18T21:04:42Z"
139-
},
140-
{
141-
"version": "v10.4.5",
142-
"date": "2021-05-04T18:47:55Z"
143-
},
144-
{
145-
"version": "v10.4.4",
146-
"date": "2021-04-27T15:00:37Z"
147-
},
148-
{
149-
"version": "v10.4.3",
150-
"date": "2021-04-13T20:37:15Z"
151-
},
152-
{
153-
"version": "v10.4.2",
154-
"date": "2021-03-23T15:10:21Z"
155-
},
156-
{
157-
"version": "v10.4.1",
158-
"date": "2021-03-15T17:29:03Z"
159-
},
160-
{
161-
"version": "v10.4.0",
162-
"date": "2021-02-19T19:57:03Z"
163-
},
164-
{
165-
"version": "v10.3.2",
166-
"date": "2021-02-05T18:08:50Z"
167-
},
168-
{
169-
"version": "v10.3.1",
170-
"date": "2021-01-27T19:18:54Z"
171-
},
172-
{
173-
"version": "v10.3.0",
174-
"date": "2021-01-14T16:50:43Z"
175-
},
176-
{
177-
"version": "v10.2.0",
178-
"date": "2020-12-11T21:04:09Z"
179-
},
180-
{
181-
"version": "v10.1.7",
182-
"date": "2020-12-07T22:30:59Z"
183-
},
184-
{
185-
"version": "v10.1.6",
186-
"date": "2020-11-18T13:18:12Z"
187-
}
188-
]
189-
,
19+
"releases": [{
20+
"version": "v12.0.9",
21+
"date": "2021-05-19T20:53:13Z"
22+
}],
19023
"url": "https://www.electronjs.org",
191-
"community": "https://",
192-
"documentation": "https://beta.electronjs.org"
24+
"community": "https://discord.com/invite/electron",
25+
"documentation": "https://www.electronjs.org/docs"
19326
}

docs/browser-engine/electron.md

Lines changed: 117 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,117 @@
1+
---
2+
title: Electron
3+
---
4+
5+
# Electron
6+
7+
Electron is a popular framework to build cross-platform desktop applications using web
8+
technologies. Some of the most popular applications using it are [Visual Studio Code], [Slack],
9+
[Discord], [InVision], [Figma], or [WhatsApp].
10+
11+
While it was originally created by GitHub in 2013, it is an [OpenJS Foundation][electron-foundation]
12+
project since 2019. It has an [Open Governance] where engineers from different companies and
13+
products (like VS Code, Slack, Teams, RingCentral) and volunteers collaborate in different [Working
14+
Groups].
15+
16+
Electron applications use Chromium as the shell to render the User Interface. Developers
17+
use HTML, CSS and JavaScript to build their apps, which means they can use the libraries and tools
18+
available to the web community such as React, webpack, Babel, etc. One of the main differences with
19+
other technologies under the _[browser-engine]_ category, is that JavaScript is used to access the
20+
Operating System features as well. This is because Electron applications come with [Node.js]
21+
support. At a high-level, [Electron adds the Node.js layer to Chromium's JavaScript engine
22+
V8][electron-node]. This means that developers can leverate all its ecosystem and also write C/C++
23+
code to access features not available out of the box or via other modules.
24+
25+
## Release cadence, version support and update model
26+
27+
Electron has three important branches of development: nightly, beta, and stable. The nightly branch
28+
is synced to Chromium's development branch and merged daily or weekly. Nightly Electron is
29+
equivalent to Chrome Canary. The beta and **stable branches of Electron are fixed to their
30+
major-versions of Chromium and release every 12 weeks**. New Electron stable versions typically
31+
release the same day as the equivalent stable Chrome release. Additionally, the team releases weekly
32+
updates (minor and/or patch) for the latest 3 stable versions, bringing the total lifetime of a
33+
stable version to 36 weeks (or about 9 months).
34+
35+
<!-- Insert diagram here -->
36+
37+
:::caution
38+
[Chrome has announced][chrome release cycle] that starting in Chrome 94 (Q3 2021) they will switch
39+
to a 4 week release cadence. Electron will continue releasing every other one and supporting the
40+
latest 3 major versions. This means that the length of support will change from ~9 months to ~6
41+
months.
42+
:::
43+
44+
Electron applications are self-contained: Chromiun abd Node.js are bundled in the application. This
45+
has the advantage for the users to not have to install any pre-requisites, and for developers to
46+
know exactly what dependencies are being run. On the other side, it also means that updating the
47+
Electron version is a developer responsibility (developer driven).
48+
49+
## Governance
50+
51+
Electron is an OpenJS Foundation project with an established Open Governance model. It has several
52+
autonomous [Working Groups] (WG) for different areas (API, releases, security). In the words of the
53+
project:
54+
55+
> A working group is a group of maintainers that is formed to take responsibility for certain
56+
aspects of the Electron project. Normally these groups will meet regularly but in some cases will
57+
only meet as required to fulfill their responsibilities.
58+
59+
While the requirements might change from one WG to another, anyone can eventually become a
60+
maintainer, join, and get their feature added. Electron is created to serve its community, and not
61+
the needs of a particular company or product.
62+
63+
## Summary
64+
65+
| Characteristic | |
66+
| :------------- | :----: |
67+
| Website | [{{technologies.electron.url}}]({{technologies.electron.url}}) |
68+
| Platforms | Desktop |
69+
| Type | [browser-engine] |
70+
| Software type | OSS |
71+
| License | [MIT] |
72+
| Copyright | [OpenJS Foundation][electron-foundation] |
73+
| Documentation | [{{technologies.electron.documentation}}]({{technologies.electron.documentation}}) |
74+
| Community | [{{technologies.electron.community}}]({{technologies.electron.community}}) |
75+
| Latest version | {{technologies.electron.releases.0.version}} |
76+
| Release cadence | Major versions: [12 weeks][release timeline] <br/> Minor/patch: ~weekly |
77+
| Release support | [9 months][release timeline] |
78+
| Update model | Developer driven |
79+
| Governance model | [Open Governance] |
80+
81+
**Platform support:**
82+
83+
{{ table technologies.electron.platforms.{} }}
84+
85+
:::note
86+
While a mobile Electron could be possible, the [Apple Store policy 2.5.6] will prevent it from being
87+
distributed on iOS devices.
88+
:::
89+
90+
**Language support:**
91+
92+
{{ table technologies.electron.languages.{} }}
93+
94+
:::note
95+
While this list is for the "out of the box" languages, there are ways to use others. An example
96+
would be Rust, which can be run via [Neon].
97+
:::
98+
99+
<!-- Ref links -->
100+
101+
[Apple Store policy 2.5.6]: https://developer.apple.com/app-store/review/guidelines/
102+
[browser-engine]: ./browser-engine.md
103+
[chrome release cycle]: https://blog.chromium.org/2021/03/speeding-up-release-cycle.html
104+
[Discord]: https://discord.com/
105+
[electron-foundation]: https://openjsf.org/blog/2019/12/11/electron-joins-the-openjs-foundation/
106+
[electron-node]: https://www.electronjs.org/blog/electron-internals-using-node-as-a-library
107+
[Figma]: https://www.figma.com/
108+
[InVision]: https://www.invisionapp.com/
109+
[MIT]: https://github.com/electron/electron/blob/main/LICENSE
110+
[Neon]: https://github.com/neon-bindings/neon
111+
[Node.js]: https://nodejs.org
112+
[Open Governance]: https://github.com/electron/governance
113+
[release timeline]: https://www.electronjs.org/docs/tutorial/electron-timelines
114+
[Slack]: https://slack.com/
115+
[Visual Studio Code]: https://code.visualstudio.com/
116+
[WhatsApp]: https://www.whatsapp.com/
117+
[Working Groups]: https://github.com/electron/governance#working-groups

sidebars.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ module.exports = {
1313
label: 'Browser engine',
1414
items: [
1515
'browser-engine/overview',
16+
'browser-engine/electron',
1617
],
1718
},
1819
],

src/css/custom.css

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@
1515
--ifm-color-primary-lighter: #02bae3;
1616
--ifm-color-primary-lightest: #00cfff;
1717
--ifm-code-font-size: 95%;
18+
/* overrides for a11y */
19+
--ifm-alert-color: #363636;
1820
}
1921

2022
.docusaurus-highlight-code-line {
@@ -23,3 +25,6 @@
2325
margin: 0 calc(-1 * var(--ifm-pre-padding));
2426
padding: 0 var(--ifm-pre-padding);
2527
}
28+
29+
30+

0 commit comments

Comments
 (0)