Electron (framework)
# Electron (framework)

Electron (precedentemente noto come Atom Shell) è un framework open source gestito e ospitato da GitHub. Electron consente lo sviluppo della GUI di applicazioni desktop utilizzando tecnologie Web: combina il motore di rendering Chromium e il runtime Node.js. Electron è il principale framework per la GUI dietro alcuni importanti progetti open source tra cui Atom, GitHub Desktop, Light Table, Visual Studio Code e WordPress Desktop.

## Architettura

Le applicazioni Electron sono composte da più processi: il processo "browser" e diversi processi "renderer". Il processo browser esegue la logica dell'applicazione e può quindi avviare più processi di rendering, restituendo le finestre che appaiono sullo schermo di un utente processando HTML e CSS.

Entrambi i processi browser e renderer possono essere eseguiti con l'integrazione di Node.js se abilitati.

La maggior parte delle API di Electron sono scritte in C++ o Objective-C e quindi esposte direttamente al codice dell'applicazione tramite i collegamenti JS.

## Sicurezza

Poiché le applicazioni Electron sono applicazioni web eseguite nel motore Chromium, potrebbero essere vulnerabili ad attacchi relativi al Web come attacchi di scripting cross-site, attraverso gli stessi vettori di attacco di un browser (ad es. Chromium) o altri componenti interni (Node.js) se si utilizzano determinate versioni di Electron. Esempi di tali vulnerabilità sono stati risolti nelle versioni di Electron 1.7.13, 1.8.4 e 2.0.0-beta.5.

## Criticità

Electron non supporta i sistemi operativi mobili come Android e iOS.

Electron è stato criticato poiché le applicazioni programmate con questo framework (come Atom e Visual Studio Code) consumano molta più RAM rispetto ad altre applicazioni simili (Emacs, Nano, Vim, Sublime Text). Le applicazioni in Electron vengono fornite con un pre-bundle di Chromium, quindi strumenti in origine molto semplici (es. terminali, appunti) con Electron vengono appesantiti. Altre critiche sono focalizzate sul fatto che le applicazioni Electron non sono native, il che significa mancanza di integrazione.

## Software che utilizzano Electron

Numerose applicazioni desktop sono realizzate con Electron, tra cui:

* Atom
* Basecamp 3
* Bitwarden
* CrashPlan
* Cryptocat
* Discord
* Etcher
* GitHub Desktop
* Keybase
* Light Table
* Microsoft Teams
* MongoDB Compass
* Shift
* Signal
* Skype
* Slack
* Symphony Chat
* Twitch.tv
* Visual Studio Code
* WebTorrent
* WhatsApp
* Wire
* Yammer

## Derivazioni

### Electron.NET

Il 27 ottobre 2017, la comunità ha rilasciato un clone chiamato Electron.NET per il framework .NET Core. Questo è un progetto open source che consente l'accesso alle API Electron native passando per il linguaggio di programmazione C#. Lo sviluppo .NET fa riferimento a proprio ecosistema, anziché utilizzare JavaScript.

