Hacker News new | ask | show | jobs
by yoz-y 3009 days ago
Electron does provide quite a lot of apis that do not exist (and hopefully never will) in browsers. Namely, complete access to the filesystem. It also does provide a way of creating native plugins.

I have not looked into the way neovim communication works but from their site it seems to be using named pipes which are again, not available from a browser.

1 comments

Access to the file system can be done via HTML 5 File API.
The File API is very limited in comparison what can be done with the Electron fs API which has direct access to the file system.
Which is a lame excuse for using Electron disguised as native app, in a connected world, even native apps should be sandboxed by default.

I seriously doubt it would be impossible to use Electron as it really is, a Web App.

As much as I prefer real native applications and like hating on electron, I have to give it some credit. It is not just chromium, it is chromium+nodejs and all the stuff that comes with it.

The answer to "would it be feasible/easy to port an Electron app to a pure browser app" is no. Unless all of the communication between the frontend part and the native tooling is done via sockets.

I agree that native apps should be sandboxed, however sandboxing something like an IDE will be quite difficult. Even Apple does not sandbox Xcode.

> Unless all of the communication between the frontend part and the native tooling is done via sockets.

Admittedly I have not developed any Electron apps, but I have developed serious web apps and worked a little bit with NodeJS also.

Why don’t people do exactly that when they write their code — make all communication happen over regular HTTP and websockets?

Some data is not suited to go through asynchronous streams with a lot of parsing. At some point I needed to pass real-time eeg data to an application and we were exploring Cordova as an option. The jitter and absurd latency (over 15ms) was a non-starter. Things might have gone better but not everything can be solved by immutable data structures.

For comparison, the same data transfer using Electron native plugin took well under 1ms.