I'm probably a _bit_ biased in favor of Electron, but I feel like I can give a pretty reasonable rundown of the pros and cons.
Pros:
- Chromium is a mature, open-source project which shows no signs of going anywhere anytime soon.
- Electron allows web developers to use well-understood tools (Chromium/v8, Node/v8) to build web applications with additional, non-Web capabilities in a predictable runtime environment.
- Browsers are the most consistent (and consistently available) GUI environment across platforms.
- Some of the bigger value-add capabilities (filesystem/device access, windowing, native menus) don't necessarily benefit from native code- the Electron and Node APIs are good enough.
- Electron is well-documented, free as in beer, and there are a ton of examples and demo apps.
Cons:
- Memory usage, obviously. Chrome's biggest selling point was its ability to share resources among tabs (cutting down on memory requirements) which goes straight out the window when each app needs its own instance of Chromium.
- Disk usage, obviously. Each Electron package includes the entire modified-Chromium binary it was built with.
- Many Electron apps fail to take advantage of the main/renderer process split, because of the easy access to Electron APIs inside renderer processes.
- Packaging/building/signing/auto-updating still have a very poor developer experience, and are not consistent across platforms.
- It's too easy to open up security holes by opening remote resources in a renderer process with Node integration on. (Personally, if there's one thing I'd change about Electron, this is it.)
To tell the truth, I see Electron as a stepping stone for the Javascript community. It proves that there's great interest in doing cross-platform native app development under Javascript. Personally, I'm hoping that after React 16 (with Fiber) launches, we'll see work on a React Native-like framework which fills the gap currently bridged by Electron.
Pros: - Chromium is a mature, open-source project which shows no signs of going anywhere anytime soon. - Electron allows web developers to use well-understood tools (Chromium/v8, Node/v8) to build web applications with additional, non-Web capabilities in a predictable runtime environment. - Browsers are the most consistent (and consistently available) GUI environment across platforms. - Some of the bigger value-add capabilities (filesystem/device access, windowing, native menus) don't necessarily benefit from native code- the Electron and Node APIs are good enough. - Electron is well-documented, free as in beer, and there are a ton of examples and demo apps.
Cons: - Memory usage, obviously. Chrome's biggest selling point was its ability to share resources among tabs (cutting down on memory requirements) which goes straight out the window when each app needs its own instance of Chromium. - Disk usage, obviously. Each Electron package includes the entire modified-Chromium binary it was built with. - Many Electron apps fail to take advantage of the main/renderer process split, because of the easy access to Electron APIs inside renderer processes. - Packaging/building/signing/auto-updating still have a very poor developer experience, and are not consistent across platforms. - It's too easy to open up security holes by opening remote resources in a renderer process with Node integration on. (Personally, if there's one thing I'd change about Electron, this is it.)
To tell the truth, I see Electron as a stepping stone for the Javascript community. It proves that there's great interest in doing cross-platform native app development under Javascript. Personally, I'm hoping that after React 16 (with Fiber) launches, we'll see work on a React Native-like framework which fills the gap currently bridged by Electron.