Electron (software framework): Difference between revisions

Content deleted Content added
History: Fixed a formatting issue which was creating a column that shouldn't be there.
ref req; minor clarif
Line 22:
'''Electron''' (formerly known as '''Atom Shell'''<ref name=":0">{{cite web|last1=Sawicki|first1=Kevin|date=23 April 2015|title=Atom Shell is now Electron|url=https://www.electronjs.org/blog/electron|url-status=live|access-date=6 January 2022|work=Electron|archive-url=https://web.archive.org/web/20171109205411/http://electronjs.org/blog/electron |archive-date=9 November 2017 }}</ref>) is a [[Free and open-source software|free and open-source]] [[software framework]] developed and maintained by [[OpenJS Foundation]].<ref>{{cite web |url=https://www.electronjs.org/ |title=Build cross-platform desktop apps with JavaScript, HTML, and CSS &#124; Electron |access-date=February 1, 2023 |archive-date=9 May 2022 |archive-url=https://web.archive.org/web/20220509124521/https://www.electronjs.org/ |url-status=live }}</ref> The framework is designed to create desktop applications using [[Web development|web technologies]] (mainly [[HTML]], [[CSS]] and [[JavaScript]], although other technologies such as front-end frameworks and [[WebAssembly]] are possible) that are rendered using a version of the [[Chromium (web browser)|Chromium browser engine]] and a back end using the [[Node.js]] runtime environment.<ref>{{Cite web|url=https://electronjs.org/blog/electron-internals-using-node-as-a-library|title=Electron Internals: Using Node as a Library|website=electronjs.org|date=8 August 2016|access-date=3 July 2020|archive-date=9 November 2017|archive-url=https://web.archive.org/web/20171109205326/https://electronjs.org/blog/electron-internals-using-node-as-a-library|url-status=live}}</ref> It also uses various [[API]]s to enable functionality such as native integration with Node.js services and an [[inter-process communication]] module.
 
Electron was originally built for [[Atom (text editor)|Atom]]<ref name=":0" /> and is the main GUI framework behind several other open-source projects including [[GitHub Desktop]], [[Light Table (software)|Light Table]],<ref name="LT1">{{cite web|last1=Horner|first1=Gabriel|title=Light Table 0.8.0|url=http://lighttable.com/2015/12/10/light-table-0-8-0/|date=10 December 2015|access-date=3 July 2020|publisher=lighttable.com|archive-date=13 December 2015|archive-url=https://web.archive.org/web/20151213173414/http://lighttable.com/2015/12/10/light-table-0-8-0/|url-status=live}}</ref> [[Visual Studio Code]], [[WordPress]] Desktop,<ref>{{cite web|url=https://github.com/Automattic/wp-desktop|title=GitHub Repository|website=[[GitHub]]|access-date=16 June 2019|archive-date=19 February 2016|archive-url=https://web.archive.org/web/20160219194955/https://github.com/Automattic/wp-desktop|url-status=live}}</ref> and [[Eclipse Theia]].<ref name="theia">{{Cite web|title=Theia - Cloud and Desktop IDE Platform|url=https://theia-ide.org/|access-date=2021-12-31|website=theia-ide.org|archive-date=20 April 2018|archive-url=https://web.archive.org/web/20180420143515/https://theia-ide.org/|url-status=live}}</ref>
 
== Architecture ==
Electron applications include a "main" process and several "renderer" processes. The main process runs the logic for the application (e. g., menus, shell commands, lifecycle events), and can then launch multiple renderer processes by instantiating an instance of the {{code|BrowserWindow|javascript|style=font-weight: bold; color: green;}} class, which loads a window that appears on the screen by rendering [[HTML]] and [[CSS]].{{fact}}
 
Both the main and renderer processes can run with [[Node.js]] integration if the {{code|nodeIntegration}} field in the main process is set to {{code|true|javascript}}.{{fact}}
 
Most of Electron's APIs are written in [[C++]] or [[Objective-C]] and are exposed directly to the application code through [[JavaScript]] bindings.<ref>{{Cite web|url=https://electronjs.org/blog/from-native-to-js|title=From native to JavaScript in Electron {{!}} Electron Blog|website=electronjs.org|date=19 March 2019|access-date=2019-04-26|archive-date=26 April 2019|archive-url=https://web.archive.org/web/20190426032159/https://electronjs.org/blog/from-native-to-js|url-status=live}}</ref>
Line 111:
{{Main|List of software using Electron}}
 
Desktop applications built with Electron include [[Atom (text editor)|Atom]],<ref name="electron-blog">{{cite web |last1=Sawicki |first1=Kevin |date=23 April 2015 |title=Atom Shell is now Electron |url=https://electronjs.org/blog/2015/04/23/electron |url-status=dead |archive-url=https://web.archive.org/web/20191016124310/https://electronjs.org/blog/electron |archive-date=16 October 2019 |access-date=15 July 2017 |work=Electron}}</ref> [[Etcher (software)|balenaEtcher]],<ref>{{cite web |title=Etcher on GitHub |url=https://github.com/balena-io/etcher |url-status=live |archive-url=https://web.archive.org/web/20181116012922/https://github.com/balena-io/etcher |archive-date=16 November 2018 |access-date=7 July 2020 |website=[[GitHub]]}}</ref> [[Eclipse Theia]],<ref name="theia" /> [[Microsoft Teams]] before 2.0,<ref name="ms-teams">{{Cite web |last=msdmaguire |title=How Microsoft Teams uses memory - Microsoft Teams |url=https://docs.microsoft.com/en-us/microsoftteams/teams-memory-usage-perf |url-status=live |archive-url=https://web.archive.org/web/20201208013106/https://docs.microsoft.com/en-us/microsoftteams/teams-memory-usage-perf |archive-date=8 December 2020 |access-date=2021-11-12 |website=docs.microsoft.com |language=en-us}}</ref><ref>{{cite web |last1=Redmond |first1=Tony |title=Teams 2.0 Moves Away from Electron to Embrace Edge WebView2 |url=https://office365itpros.com/2021/06/25/teams-2-webview2-replaces-electron/ |website=Office 365 for IT Pros |access-date=2 August 2024}}</ref> [[Slack (software)|Slack]],<ref name="slack">{{cite news |date=25 October 2016 |title=Building hybrid applications with Electron |url=https://slack.engineering/building-hybrid-applications-with-electron-dc67686de5fb |url-status=live |archive-url=https://web.archive.org/web/20191016124311/https://slack.engineering/building-hybrid-applications-with-electron-dc67686de5fb?gi=b2a5127226ea |archive-date=16 October 2019 |access-date=12 August 2017 |work=Several People Are Coding}}</ref> and [[Visual Studio Code]].<ref name="ars-electron">{{cite web |last1=Bright |first1=Peter |date=29 April 2015 |title=Microsoft's new Code editor is built on Google's Chromium |url=https://arstechnica.com/information-technology/2015/04/microsofts-new-code-editor-is-built-on-googles-chromium/ |url-status=live |archive-url=https://web.archive.org/web/20150507020146/https://arstechnica.com/information-technology/2015/04/microsofts-new-code-editor-is-built-on-googles-chromium/ |archive-date=7 May 2015 |access-date=18 November 2015 |work=[[Ars Technica]]}}</ref><ref name="gh-source">{{cite web |date=29 March 2022 |title=Open Source project |url=https://github.com/Microsoft/vscode |url-status=live |archive-url=https://web.archive.org/web/20151123164810/https://github.com/Microsoft/vscode |archive-date=23 November 2015 |access-date=20 May 2018 |website=[[GitHub]]}}</ref> The [[Brave Browserbrowser]] was based on Electron before it was rewritten to use Chromium directly.<ref>{{cite web |last=Singh |first=Jagmeet |date=2017-01-03 |title=People are now even doing machine learning in JavaScript |url=https://www.opensourceforu.com/2017/01/javascript-creator-brendan-eich-interview/ |url-status=live |archive-url=https://web.archive.org/web/20170107122039/https://www.opensourceforu.com/2017/01/javascript-creator-brendan-eich-interview/ |archive-date=7 January 2017 |accessdate=2022-08-26 |publisher=Open Source For U}}</ref>
 
== Reception ==
The most common criticism of Electron is that it necessitates [[software bloat]] when used for simple programs.<ref>{{cite web |last=Proven |first=Liam |date=2021-11-19 |title=Some FOSS gems: Franz, RamBox, Pidgin and more |url=https://www.theregister.com/2021/11/19/friday_foss_fest/ |url-status=live |archive-url=https://web.archive.org/web/20211119235239/https://www.theregister.com/2021/11/19/friday_foss_fest/ |archive-date=19 November 2021 |accessdate=2022-08-26 |publisher=The Register}}</ref> As a result, [[Michael Larabel]] has referred to the framework as "notorious among most Linux desktop users for being resource heavy, not integrating well with most desktops, and generally being despised."<ref>{{cite web |last=Larabel |first=Michael |date=2019-02-09 |title=Electron Apps Are Bad, So Now You Can Create Desktop Apps With HTML5 + Golang |url=https://www.phoronix.com/news/HTML5-Golang-Desktop-Apps |url-status=live |archive-url=https://web.archive.org/web/20220826131838/https://www.phoronix.com/news/HTML5-Golang-Desktop-Apps |archive-date=26 August 2022 |accessdate=2022-08-26 |publisher=Phoronix}}</ref> Meanwhile, Joey Sneddon states that this tradeoff is sensible as Electron greatly lowers the cost of developing and maintaining cross-platform software.<ref>{{cite web |last=Sneddon |first=Joey |date=2017-07-23 |title=Seriously folks, Electron apps aren't that bad |url=https://www.omgubuntu.co.uk/2017/07/why-electron-apps-arent-bad-2 |url-status=live |archive-url=https://web.archive.org/web/20180516103739/https://www.omgubuntu.co.uk/2017/07/why-electron-apps-arent-bad-2 |archive-date=16 May 2018 |accessdate=2022-08-26 |publisher=OMG Ubuntu}}</ref>
 
Researchers have shown that Electron's large feature set can be hijacked by bad actors with write access to the source JavaScript files. This requires root access on *nix systems and isn'tis not considered to be a vulnerability by the Electron developers.<ref>{{cite web |last=Gallagher |first=Sean |date=2019-08-07 |title=Skype, Slack, other Electron based apps can be easily backdoored |url=https://arstechnica.com/information-technology/2019/08/skype-slack-other-electron-based-apps-can-be-easily-backdoored/ |url-status=live |archive-url=https://web.archive.org/web/20190807173425/https://arstechnica.com/information-technology/2019/08/skype-slack-other-electron-based-apps-can-be-easily-backdoored/ |archive-date=7 August 2019 |accessdate=2022-08-26 |publisher=Ars Technica}}</ref> Those who are concerned that Electron is not always based on the newest version of Chromium have recommended [[progressive web application]]s as an alternative.<ref>{{cite web |last=Hoffman |first=Chris |date=2019-08-15 |title=That native app is probably just an old web browser |url=https://www.howtogeek.com/436841/that-native-app-is-probably-just-an-old-web-browser/ |url-status=live |archive-url=https://web.archive.org/web/20190815143207/https://www.howtogeek.com/436841/that-native-app-is-probably-just-an-old-web-browser/ |archive-date=15 August 2019 |accessdate=2022-08-26 |publisher=How To Geek}}</ref>
 
== See also ==
Line 135:
 
== References ==
{{Reflist|1}}
 
== External links ==