News for hackers. Stuff that matters.
Re:NeutralinoJS: Lightweight Electron alternative using nati... by derefr on Wednesday February 26, 2020 @11:05AM (#22424201)
I feel like nobody cares too much if they’re running one Electron app; people do have the headroom for an extra 1-2GB of RAM usage. The problem comes when they run several Electron apps at once, and each comes with its own “base” overhead (i.e. the runtime memory consumption of the browser-runtime as a whole, independent of how many render contexts are open.)

Chromium is built to share a lot of things between tabs efficiently, but this economy-of-scale doesn’t translate over into having multiple instances of Chromium running. Each instance gets its own GPU renderer process + font-glyph tile cache, its own network-request cache (i.e. its own in-memory key-value store with its own LRU limit), etc. Running multiple Chromium instances at once is a bit like running multiple copies of an RDBMS on the same machine and expecting them to not fight over memory.

Does anyone know what exactly this “base” overhead in Chromium consists of; and, more importantly, how often it changes relative to Chromium releases? Because I’m wondering whether it’d be possible to factor most of it out into a separate layer from the highly-iterated-on “browser engine” DLL stuff (the renderer + DOM + JS layer) into its own sort of “Chromium Core Services” DLL, which could be relatively-more ABI-stable.

If you had that factoring-out, you could achieve a pretty good memory + CPU savings just by having Chromium + application frameworks like Electron all share one copy of the Chromium Core Services between them, while keeping their own higher-level “renderer+VM” DLL on top (which would hopefully be pretty stateless in terms of shared state, only adding the ~50MB mmap(2) overhead of the DLL-image itself, and then whatever memory the individual render-contexts consume.)

Alternately, of course, you could build Electron as a pseudo-browser where Electron “apps” are just separate windows running in its memory space, and the native Node processes are all just distinct V8 Execution Contexts in the same process. But 1. this would lose you the ability to develop for a particular version of the renderer, which is what Electron gains you over projects like Neutralino in the first place; and 2. this wouldn’t give you the benefit of Electron sharing service-memory with Chrome itself.

Re:NeutralinoJS: Lightweight Electron alternative using nati... by woodrowbarlow on Wednesday February 26, 2020 @12:16PM (#22424980)
i believe (but may be mistaken) that this was a goal of mozilla's positron project -- an electron-compatible runtime that uses firefox instead of chromium, but shares most resources across all of the positron apps running on your system so that it's more like having multiple tabs open rather than having multiple distinct instances open.
Re:NeutralinoJS: Lightweight Electron alternative using nati... by smt88 on Wednesday February 26, 2020 @08:32PM (#22429497)
This paradigm is already supported by Container Tabs. It seems like Firefox is really close to the ideal of sharing memory without sharing user data.
Re:NeutralinoJS: Lightweight Electron alternative using nati... by efdee on Wednesday February 26, 2020 @11:12AM (#22424258)
Where is this 1-2GB number coming from? I'm running a fairly large Electron app and the combined memory usage of its processes is about 250-300MB.
Re:NeutralinoJS: Lightweight Electron alternative using nati... by csnover on Wednesday February 26, 2020 @11:34AM (#22424512)
I’m currently running three Electron apps: Spotify, Skype, and VS Code.

Spotify: 1083.7 MB. VS Code: 890.9 MB. Skype: 406 MB.

In the past, I’ve had projects open in VS Code which have caused that number to shoot up into the multi-gigabyte range.

Of course this is all anecdotal but I am pretty sure these numbers come from actual experiences that people are having with Electron apps.

Re:NeutralinoJS: Lightweight Electron alternative using nati... by lucsky on Wednesday February 26, 2020 @01:51PM (#22425939)
I wish this urban legend would just stop: the Spotify desktop client is NOT an Electron app, it's a CEF (Chromium Embedded Framework) app.
Re:NeutralinoJS: Lightweight Electron alternative using nati... by thatsnotmepls on Wednesday February 26, 2020 @01:57PM (#22425997)
Well, it runs an instance of Chromium. So basically the same thing in this context.
Re:NeutralinoJS: Lightweight Electron alternative using nati... by tsukurimashou on Thursday February 27, 2020 @04:08AM (#22431792)
seems like the same shit to me, uses a lot of RAM, lags randomly, yup I usually call that electron :>
Re:NeutralinoJS: Lightweight Electron alternative using nati... by pjmlp on Thursday February 27, 2020 @12:14PM (#22435262)
Same thing, just another name.
Re:NeutralinoJS: Lightweight Electron alternative using nati... by fmakunbound on Wednesday February 26, 2020 @12:20PM (#22425031)
Wow. I've got Apple Music/iTunes running for a week or so on this Catalina macOS and the process viewer reports 300MB (including sub-processes). I assume it's a native application. How does Spotify manage to use so much RAM??
Re:NeutralinoJS: Lightweight Electron alternative using nati... by kitsunesoba on Wednesday February 26, 2020 @01:19PM (#22425652)
The Spotify desktop client is architected such that each pane in the main window is essentially its own separate webapp, complete with duplicate (and triplicate, quadruplicate, etc) dependencies. They did this so their various teams don’t have to talk to each other.

Desktop Spotify has been a resource hungry mess for years now. It used to be known for prematurely wearing out SSDs by constantly writing stuff (cache I think?) to disk.

Re:NeutralinoJS: Lightweight Electron alternative using nati... by csnover on Wednesday February 26, 2020 @01:35PM (#22425788)
> It used to be known for prematurely wearing out SSDs by constantly writing stuff (cache I think?) to disk.

They were constantly vacuuming some SQLite database.[0]

[0] https://arstechnica.com/information-technology/2016/11/for-f...

Re:NeutralinoJS: Lightweight Electron alternative using nati... by felubra on Wednesday February 26, 2020 @03:27PM (#22426952)
Does anybody know if this was fixed?
Re:NeutralinoJS: Lightweight Electron alternative using nati... by montag on Thursday February 27, 2020 @04:10AM (#22431801)
Yes, it was.
Re:NeutralinoJS: Lightweight Electron alternative using nati... by atombender on Wednesday February 26, 2020 @01:42PM (#22425852)
They also have this problem where a "Spotify Helper" can crash constantly, and you won't notice it unless you look at the process tree.

On macOS, this will start a ReportCrash process, and end up taking up an entire CPU core just repeatedly crashing, reporting a crash, restarting, etc. It also significantly impacts battery life.

This happens every day for me. It's arguably worse than the SSD-killing SQLite vacuum problem they had.

Re:NeutralinoJS: Lightweight Electron alternative using nati... by derefr on Wednesday February 26, 2020 @06:41PM (#22428751)
I haven't seen this one personally, but I get the same crash-loop from the Discord app.

Weirdly enough, the crashes don't seem to affect any of the app's functionality.

Re:NeutralinoJS: Lightweight Electron alternative using nati... by ajxs on Wednesday February 26, 2020 @04:40PM (#22427651)
> They did this so their various teams don’t have to talk to each other.

This is absolutely dreadful. I've unfortunately worked in multiple organisations where teams deconstructed their web-based products into microservices for this very reason.

Re:NeutralinoJS: Lightweight Electron alternative using nati... by city41 on Wednesday February 26, 2020 @11:02PM (#22430324)
I have found it to be rather buggy. I sometimes can't get songs to play, and other times can't get them to pause :) I switched to using their web interface in Firefox which has been totally rock solid.
Re:NeutralinoJS: Lightweight Electron alternative using nati... by fmakunbound on Friday February 28, 2020 @01:45AM (#22440985)
> They did this so their various teams don’t have to talk to each other.

This is just insane.

Re:NeutralinoJS: Lightweight Electron alternative using nati... by hnuser123456 on Wednesday February 26, 2020 @12:46PM (#22425303)
Keybase also uses in the range of 600MB-1GB, and 8 processes, most of which don't exit when you exit the application. I'm not sure what Discord uses because I only run it in the browser, but I'm sure it's in the same range as all of the above.

I've come up with a powershell snippet to fully quit keybase and reclaim ~1GB RAM:

get-process | Where-Object {$_.path -match "keybase"} | Stop-Process

Re:NeutralinoJS: Lightweight Electron alternative using nati... by andai on Wednesday February 26, 2020 @03:00PM (#22426703)
>I'm not sure what Discord uses because I only run it in the browser

Me too, and you just made me realize, there already exists a system for running Electron apps in a shared instance of Chrome, and it's installed on almost everyone's computer! You just... open the web version, in Chrome :)

Re:NeutralinoJS: Lightweight Electron alternative using nati... by derefr on Wednesday February 26, 2020 @06:46PM (#22428799)
Mind you, there's (sometimes a little, sometimes a lot) more to Electron than a webview. Some apps are running quite a bit of un-sandboxed native code—sometimes even forking off other native processes†—to do what they do. Keybase is, IIRC, one of the apps that are quite large on the "native" side.

† I once designed a system that has Electron install an Erlang release to the client, register it as a service, and start it. The Erlang node runs a locally-bound web server; the Electron app then visits that web server. All the data-wrangling happens in Erlang land, with Electron just serving as an HTML renderer for the pages coming from the local server. And yet Electron's native side is essential, here, because it ultimately manages the Erlang release (installing it, updating it, etc.) Erlang doesn't have any good tooling for doing client-native stuff on its own; Erlang devs find the whole idea of deploying an Erlang release to a client machine funny.

Re:NeutralinoJS: Lightweight Electron alternative using nati... by dnautics on Wednesday February 26, 2020 @08:09PM (#22429371)
That's fantastic. I wonder if an elixir Phoenix / liveview use case with such a setup is reasonable now that elixir has releases. I think client native nifs are also not out of the question with the better tooling that comes out of modern langs like rust, nim, and my favorite zig.
Re:NeutralinoJS: Lightweight Electron alternative using nati... by tsukurimashou on Thursday February 27, 2020 @04:10AM (#22431803)
The irony about that, is that not all electron apps are available from an URL. (now I know there is more than a webpage in a electron app, but with modern browsers you can have the same experience in a electron app or from a webapp pretty easily)
Re:NeutralinoJS: Lightweight Electron alternative using nati... by ygra on Wednesday February 26, 2020 @05:10PM (#22427935)
The shorter form, before people complain again that PowerShell is too verbose:

   gps | ? path -m keybase | kill
Re:NeutralinoJS: Lightweight Electron alternative using nati... by dsissitka on Wednesday February 26, 2020 @04:55PM (#22427789)
Discord seems surprisingly efficient for an Electron app.

https://imgur.com/a/DJKyyRz

That's ~230 MB. I can get it up to ~275 MB but it seems to return to normal pretty quickly.

Re:NeutralinoJS: Lightweight Electron alternative using nati... by bufferoverflow on Thursday February 27, 2020 @06:28PM (#22439070)
I have VSCode running and it takes up only 166MB or RAM.

Proof: https://i.imgur.com/nKenjcw.png

Re:NeutralinoJS: Lightweight Electron alternative using nati... by gridlockd on Wednesday February 26, 2020 @12:07PM (#22424910)
Over here, the base overhead of an Electron window is around 60MB. How do you know it's not those applications allocating a lot of memory that is causing all this usage?
Re:NeutralinoJS: Lightweight Electron alternative using nati... by csnover on Wednesday February 26, 2020 @01:45PM (#22425876)
Of course I don’t know that since I don’t have the time or ability to inspect what the apps are doing. :-) The best I can do is give comparisons to the old non-Electron versions of Spotify and Skype, which had all the same core features as the Electron versions and used less memory for the whole app than you’re saying a base Electron window costs.

It is difficult for me to lay blame at the feet of application developers (assuming they didn’t make the choice to use Electron) when the platform itself is so bad at giving developers ways to manage their apps’ memory usage.

If you want to listen for an event on a global object like `window`, the platform could give a way to do this using a weak reference, but it doesn’t, so you have to make sure to always remember to manually remove the listener yourself or else you’ve just leaked a bunch of stuff.

If you want to load an image, or some other media, the platform could give a way to control the runtime’s internal caches so you aren’t retaining data in memory that you don’t need—but it doesn’t, so you have to hope that the generic runtime memory cache from Chromium is intelligent enough not to retain unimportant things (and, in my experience, it’s not).

This problem has existed in one form or another in every Electron app I’ve ever used. Some are certainly worse than others, but I don’t think I’ve ever seen one come within even an order of magnitude of the memory usage of similar apps written natively.

Re:NeutralinoJS: Lightweight Electron alternative using nati... by filleduchaos on Wednesday February 26, 2020 @12:19PM (#22425022)
What's the uptime on that "base application" and what does it do?
Re:NeutralinoJS: Lightweight Electron alternative using nati... by judge2020 on Wednesday February 26, 2020 @12:31PM (#22425149)
Re:NeutralinoJS: Lightweight Electron alternative using nati... by filleduchaos on Wednesday February 26, 2020 @03:21PM (#22426900)
So an "application" that literally just displays Hello World and no indication of uptime.

Right, I'm convinced.

Re:NeutralinoJS: Lightweight Electron alternative using nati... by bavell on Wednesday February 26, 2020 @03:42PM (#22427101)
It shows that the framework itself only uses 60MB and implies any higher usage is due to the application built on top of electron. I'm not sure why uptime matters unless you're assuming there are memory leaks?
Re:NeutralinoJS: Lightweight Electron alternative using nati... by derefr on Wednesday February 26, 2020 @06:36PM (#22428707)
The context here is that "the framework" does things 'for' the application it is hosting that the application cannot control, caching various things in memory in a way that makes sense for a browser, but not very much sense for a custom application.

Try this: open a new Chrome instance; look at its memory usage; then load a bunch of tabs (try an Open All on a bookmarks folder), close them all again, and then look at Chrome's memory usage again. It will have increased.

Chrome isn't leaking memory; instead, it is doing the same thing that an Operating System does: weakly reserving memory to optimistically cache stuff, releasing it again if there's enough memory pressure.

This works okay if you only have Chrome itself running. (Even then, its cache fights a bit with the OS page cache. It's certainly no Postgres, intentionally getting the OS page-cache to do its caching for it.) But as soon as you have two separate Chromium instances running (e.g. Chrome itself, plus an Electron app), then each one is going to try to "optimistically" cache as much stuff as it can, until it runs into the memory pressure created by the other instance caching as much stuff as it can, and so each instance will unload just a bit to let the other one cache just a bit more—back and forth—forever. Together, they thrash memory, and it becomes much harder for them to actually accomplish the "weak" part of "weak reservation", instead ending up hoarding all the memory between them.

This is the pretty much the same problem you see if you try to e.g. run two memory-heavy JVM processes (e.g. ElasticSearch) on the same system. Chrome is just one of the few times you'll see this "recapitulation of memory management within the runtime" effect client-side, rather than server-side.

Re:NeutralinoJS: Lightweight Electron alternative using nati... by bavell on Friday February 28, 2020 @10:19PM (#22448539)
Great points, thank you!
Re:NeutralinoJS: Lightweight Electron alternative using nati... by filleduchaos on Wednesday February 26, 2020 @07:14PM (#22428990)
What derefr said about Chrome holding on to memory, and additionally memory leaks are absolutely a concern for related reasons.

(Regarding uptime, it's not at all uncommon for Chrome's memory usage to double or even triple overnight. Partially a function of the websites you have open, sure, but also partially a function of Chrome itself).

Re:NeutralinoJS: Lightweight Electron alternative using nati... by derefr on Wednesday February 26, 2020 @11:34AM (#22424504)
What’s its uptime? A lot of Electron apps—even ones that use minimal local JS, serving mostly as a webview—accrue base overhead as you use them, then keep it around even when you close their main window (and thus release their main Chromium-side render context), as long as the process stays alive. They’re caching stuff (like, as I said, rendered font glyphs, or network responses.)

I have a copy of Slack running that’s using 2GB right now, with no window open.

Re:NeutralinoJS: Lightweight Electron alternative using nati... by dreamcompiler on Wednesday February 26, 2020 @07:08PM (#22428949)
They might call this "caching" but it's still a memory leak. Over time, the application consumes increasing amounts of a finite global resource while not appreciably advancing its own progress, and negatively affecting the whole system. That's a memory leak.

The solution is for operating systems to inject deliberate back pressure on memory allocations for user-selectable applications to stop them from behaving this way. "No memory for you. Try mallocing smaller chunk. Maybe I grant; maybe I don't. Maybe I just kill -9 you if you bug me too much." This is exactly how I wish my OS would treat web browsers.

Re:NeutralinoJS: Lightweight Electron alternative using nati... by efdee on Wednesday February 26, 2020 @01:30PM (#22425751)
Multiple weeks of uptime (on a laptop that is used daily and hibernates at night).
Re:NeutralinoJS: Lightweight Electron alternative using nati... by rco8786 on Wednesday February 26, 2020 @12:08PM (#22424921)
Currently Slack is taking ~1.2GB on my laptop
Re:NeutralinoJS: Lightweight Electron alternative using nati... by colejohnson66 on Wednesday February 26, 2020 @11:16AM (#22424303)
I’m spitballing, but Chrome does have issues with high memory usage[0]. But also, VS Code can take up multiple gigabytes[1] on a large project.

[0]: https://lifehacker.com/why-chrome-uses-so-much-freaking-ram-...

[1]: https://stackoverflow.com/questions/53658769/why-vscode-requ...

Re:NeutralinoJS: Lightweight Electron alternative using nati... by zelly on Wednesday February 26, 2020 @02:17PM (#22426234)
Given that everyone brings this up every time Electron is mentioned, and Electron apps keep proliferating, I expect a future version of Windows and macOS to have Chromium bundled with the OS. There will be some platform independent open standard that Electron will use under the covers.

Native desktop apps are never coming back. It will either be Electron or mobile apps emulated on desktops.

Re:NeutralinoJS: Lightweight Electron alternative using nati... by chipotle_coyote on Wednesday February 26, 2020 @04:29PM (#22427555)
Behind my two Safari windows is the text editor I use for my technical writing job: BBEdit, a native desktop app. (For coding, though, I prefer to use MacVim, a native desktop app, although I've lately been trying out a beta of the forthcoming Panic Nova, a native desktop app.) I also use Marked, a native desktop app, for Markdown previewing occasionally. Of course, I spend a lot of time in the Terminal, a native desktop app, running command line programs and shell scripts, which are not native desktop apps but are certainly native apps. When I need to run a diff or merge tool, I tend to use Kaleidoscope, a native desktop app. Because I'm in an open office, I sometimes have to resort to headphones, which I primarily use with iTunes, a native desktop app.

Now, as I finish up this response to you in Safari, a native desktop app, remind me what were you saying about native desktop apps again?

Re:NeutralinoJS: Lightweight Electron alternative using nati... by derefr on Thursday February 27, 2020 @11:44AM (#22434890)
Offtopic, but if you’d like an elegant hybrid† Markdown viewing/editing experience, I’d suggest https://typora.io/, another nicely-polished low-memory-consumption native app.

† I don’t know what to call this editing paradigm. It’s somewhere between source-editing and WYSIWYG. Document markup nodes are rendered as their source syntax when your cursor is “inside” them, allowing for plaintext modification of the syntax; but then, when your cursor leaves a node, it switches to rendering as its formatted output instead. You can cursor back into the node to edit it more at any time. It’s pretty unique. It’s the editing style that Slack’s new input box wishes it had.

Re:NeutralinoJS: Lightweight Electron alternative using nati... by disqard on Thursday February 27, 2020 @03:04PM (#22437214)
I use Typora myself, but it's definitely an Electron app (neither native, nor lightweight).

https://support.typora.io/What's-New-0.9.66/

Re:NeutralinoJS: Lightweight Electron alternative using nati... by kaishin on Wednesday February 26, 2020 @03:31PM (#22426995)
I don’t see Apple going the route of bundling Chromium. Catalyst does allow porting iOS apps to macOS but it’s been not great so far.

I think there will always be a category of people who prefer using native apps for performance, security, or access to OS features. Anecdotally I looked at the apps I have installed and I found out that I don’t have many electron apps on my Mac beside chat apps and VS Code. I suspect non tech-savvy people might have even less, since they do a lot more inside their browsers compared to before.

I’m not sure what you refer to when you say “native desktop apps aren’t coming back”, given that they never left t begin with.

Re:NeutralinoJS: Lightweight Electron alternative using nati... by divbzero on Wednesday February 26, 2020 @04:27PM (#22427530)
It doesn’t have to be Chromium. It just needs to be a browser that can be linked and launched as an app.
Re:NeutralinoJS: Lightweight Electron alternative using nati... by layoutIfNeeded on Wednesday February 26, 2020 @06:36PM (#22428708)
It’s called a “web view” and it already exists in all of the platforms.
Re:NeutralinoJS: Lightweight Electron alternative using nati... by zelly on Wednesday February 26, 2020 @08:21PM (#22429440)
WebView is Chromium on Windows now. The holdout is Apple. They are not known to capitulate to industry trends. Maybe this will be the first one they are forced into by popular demand.
Re:NeutralinoJS: Lightweight Electron alternative using nati... by throwaway810 on Thursday February 27, 2020 @04:49AM (#22431974)
Good thing the web is still based on open standards instead of an (advertising) industry trend. We need more viable browser engines, not less.
Re:NeutralinoJS: Lightweight Electron alternative using nati... by ArtifTh on Wednesday February 26, 2020 @02:43PM (#22426511)
Current version of Windows already have Chromium in the form of new Edge and Microsoft seems to start pushing progressive web applications. At least they made good integration with system for them.

So, perhaps, soon we will have PWAs instead of bunch of electron apps each carrying its own Chromium.

Re:NeutralinoJS: Lightweight Electron alternative using nati... by zelly on Wednesday February 26, 2020 @07:58PM (#22429305)
PWAs can never fully substitute native applications. It's difficult to access hardware and impossible to call operating system functions from a PWA. Applications that do something interesting tend to have a native library behind the frontend that does performance-sensitive work.
Re:NeutralinoJS: Lightweight Electron alternative using nati... by pjmlp on Thursday February 27, 2020 @12:17PM (#22435313)
Quite the contrary, one of the benefits of PWAs is exactly that when they are distributed via app stores they get access to native APIs without any kind of manual FFI.

That is how they work across ChromeOS, Android and Windows, with Apple being the outlier for obvious reasons.

Re:NeutralinoJS: Lightweight Electron alternative using nati... by zelly on Friday February 28, 2020 @09:10PM (#22448238)
I didn't know this. If this is true then it's more powerful than Electron, which requires you exchange IPC messages from a separate process. The fact that you have to use the app store is a major disadvantage though.
Re:NeutralinoJS: Lightweight Electron alternative using nati... by anthk on Wednesday February 26, 2020 @07:14PM (#22428991)
We had that in Windows 98, it was Active Desktop. It was bloatish and a lot of people disabled it in order to get far more cycles. Heck, IE and Explorer.exe were the same. http://toastytech.com/files/throboff.html

KDE3 did the same with KParts, but it was several times better.

Re:NeutralinoJS: Lightweight Electron alternative using nati... by zelly on Wednesday February 26, 2020 @08:19PM (#22429424)
Microsoft was ahead of its time in this. In 2020 we are ready for it. Moore's law has caught up.

It would be less efficient and more wasteful to continue things as normal where every program has its own Electron. People already use Electron type apps. New ones are being made every day. That's not going away. If Microsoft and Apple put this in the OS, it would decrease the user's resource utilization. It's a net win for everyone except maybe chip manufacturers.

As for desktop Linux, GNOME3 already works like Active Desktop did. The whole shell is JS (and the GObject mess down below). I have used a lot of desktop environments. I've been skeptical of the JS eating the world trend. But I have to admit it's smooth. I had bad experiences with KDE (Qt/C++). Not only does it look ugly, it segfaults constantly.

Would it have been better to make a desktop environment in something more, uhh, professional like Go or Java? Of course. But that's not what the crowd decided. There's nothing quite like React for native desktop GUIs. Regardless of your opinion of JS, you have to admit that the React way was a game changer. Since there are no alternatives, the path of least resistance is to simply use React as is for desktop applications, which is exactly what has happened.

Re:NeutralinoJS: Lightweight Electron alternative using nati... by anthk on Friday February 28, 2020 @03:38PM (#22446118)
If you think this is smooth, you must be new on IT. Xfce already was blazing fast in 2005, even against GNOME 2. Shell is a bloat disaster, and KDE > 3.5.10, a segfaulting fest, but 3.5.10 was rock solid.
Re:NeutralinoJS: Lightweight Electron alternative using nati... by zelly on Friday February 28, 2020 @08:55PM (#22448172)
I've literally been using desktop Linux since I installed Ubuntu in 2006 in the spinning cubes era. It was never good. Windows (except Vista) always had a snappier interface. Xfce and GNOME2 are fast, I'll give it that, but don't have any animations or aesthetics whatsoever (and yes that does matter--it makes you happy to use your machine). If all I cared about was resource usage, I'd not use a DE at all and only use something like dwm. GNOME3 is polished and works, the best and only free contender to Apple and Windows desktops.

Bloat is something only insiders care about. I care more about adoption of free software than I do about its quality in the academic sense. The way to get adoption is UX and looking nice. If you're trying to convince someone to switch from Windows, what would you show them, Xfce or GNOME3?

Re:NeutralinoJS: Lightweight Electron alternative using nati... by anthk on Monday March 02, 2020 @03:09PM (#22468371)
Myself, since Debian Woody, when 2.4 was an _optional_ kernel. On snappiness, it depends. On multitasking, KDE3 run circles over XP.

>GNOME3 is polished and works, Not even close. It uses huge loads of RAM while Budgie, while using the same technology, is far snappier. For a current user, I'd suggest Solus with Budgie.

Re:NeutralinoJS: Lightweight Electron alternative using nati... by pjmlp on Thursday February 27, 2020 @12:20PM (#22435352)
Smooth?! I gave up on it and installed XFCE to get CPU cycles back.
Re:NeutralinoJS: Lightweight Electron alternative using nati... by zelly on Friday February 28, 2020 @09:01PM (#22448199)
I've only ever used it on expensive hardware so maybe I'm biased.

I have to kill gnome-shell maybe once a week. That's a huge improvement over KDE.

Xfce to me is just too ugly to use. And it messes up my system with all these trash Xfce-only applications and mime associations (seriously what's exo-open and why is it still causing problems 2 years after I uninstalled xfce?).

Re:NeutralinoJS: Lightweight Electron alternative using nati... by ajxs on Wednesday February 26, 2020 @04:37PM (#22427614)
Everything you've written here presents a nightmarish vision of the computing future. Ethical and privacy considerations play a large role in my decision making process on which software I use. I don't want to use Chromium at all, if possible. I use one Electron app, Slack, on account of requiring it for work.

> Native desktop apps are never coming back

I really hope you're wrong. This would be a terrible outcome for so many reasons. I refuse to use Electron apps on my personal laptop on account of the absolutely noticeable degradation of performance and battery life from using these Electron apps. Using vscode literally halved my battery life.

Re:NeutralinoJS: Lightweight Electron alternative using nati... by dirkg on Wednesday February 26, 2020 @05:10PM (#22427939)
Gnome already is based on html/js. There is no need for 10 different UI toolkits if one standard can be optimized. The problem is html/js are far from well designed but due to their popularity a lot of time and money has been spent optimizing them.
Re:NeutralinoJS: Lightweight Electron alternative using nati... by pjmlp on Thursday February 27, 2020 @12:18PM (#22435337)
GNOME makes use of JavaScript, not HTML.
Re:NeutralinoJS: Lightweight Electron alternative using nati... by pjmlp on Thursday February 27, 2020 @12:15PM (#22435284)
> Native desktop apps are never coming back.

They never went away to start with, it is just a couple of Electron outliers out there.

Re:NeutralinoJS: Lightweight Electron alternative using nati... by jay_kyburz on Wednesday February 26, 2020 @03:44PM (#22427136)
It's called a browser.
Re:NeutralinoJS: Lightweight Electron alternative using nati... by NullPrefix on Wednesday February 26, 2020 @12:47PM (#22425321)
There's Carlo [1], which is an alternative to Electron that uses locally installed Chrome.

1: https://github.com/GoogleChromeLabs/carlo

Re:NeutralinoJS: Lightweight Electron alternative using nati... by mfer on Wednesday February 26, 2020 @01:15PM (#22425619)
The problem with this is that is requires people to have Chrome installed. That's a awkward dependency to require for a stand alone app.
Re:NeutralinoJS: Lightweight Electron alternative using nati... by NullPrefix on Wednesday February 26, 2020 @01:39PM (#22425833)
Found this in Carlo to issue 90 [2]:

>If one chooses a chromium channel in the launch options, then carlo calls puppeteer createBrowserFetcher which will download the chromium revision compatible with Puppeteer or even a specific revision. sunglasses

In regular ElectronJS you have the same Chromium bundled with the app. Not sure if puppeteer installs a local or system wide Chromium.

2: https://github.com/GoogleChromeLabs/carlo/issues/90

Re:NeutralinoJS: Lightweight Electron alternative using nati... by petecox on Wednesday February 26, 2020 @06:53PM (#22428845)
Windows 10 (Edge), Chrome OS and Android all now bundle Chromium, while it's packaged in desktop Linux. That really leaves only macos.

VSCode, say, as a slimmer download sans web runtime is a possible outcome.

Re:NeutralinoJS: Lightweight Electron alternative using nati... by potiuper on Thursday February 27, 2020 @07:47AM (#22432732)
"While it's packaged in desktop Linux" you are using the wrong distro(s).
Re:NeutralinoJS: Lightweight Electron alternative using nati... by tln on Thursday February 27, 2020 @11:21AM (#22434578)
And node!
Re:NeutralinoJS: Lightweight Electron alternative using nati... by dmitrygr on Wednesday February 26, 2020 @04:21PM (#22427479)
> I’m wondering whether it’d be possible to factor most of it out into a separate layer

We've done this. The layer is called a web browser. You deliver runnable code to it using something called HTTP.

Re:NeutralinoJS: Lightweight Electron alternative using nati... by lotwxyz on Wednesday February 26, 2020 @06:05PM (#22428446)
I think the underlying motivation in this comment is that there are very many technical application development challenges which can be solved simply by web developers paying close attention to the fundamentals of their craft rather than relying on "fancy tricks" to speed up the development process. Plugins like Flash used to be one kind of "fancy trick" to offload into another layer, but there were many developers who stayed faithful to the process of working with everyday browser capabilities (and all of the politics that these capabilities entail), so that the wrinkles could eventually be ironed out. I think that so many who go the "Electron"-ic development route are afraid of getting their hands dirty with the question of in-browser client-side storage, ie, they want to be able to get their hands quickly on the files in the user's native file system.

There are, however, very stable in-browser ways of dealing with the question of client-side storage. IndexedDB is one. But there is another that I am quite partial to, called the File System API. I use it to locally store the files and code in the browser-based OS called Linux on the Web (https://dev.lotw.xyz/desk.os).

Re:NeutralinoJS: Lightweight Electron alternative using nati... by derefr on Wednesday February 26, 2020 @06:13PM (#22428523)
Even in the browser itself, there's a clear delineation between the set of components that change quickly, and the set of components that change slowly—a factoring of layers calling out to be done, that everyone is ignoring. There's no reason for a whole new web browser to be shipped if only the quickly-changing part has changed.

Analogy: why would you ship a new copy of X/Wayland just because your Desktop Environment has a new release? The new DE version uses the same old compositor, because the compositor doesn't change much. So why would it make sense for a compositor to be part of the DE and embedded in the release package for the DE, rather than just requesting the OS to make available to it the services of a compositor of a specific [ABI protocol] version? Even if the compositor and the DE have the same maintainers, it'd make far more sense for them to be two separate projects, with one just depending on the other.

Or, to put this another way: why should ChromeOS devices (= another build target of the Chromium codebase) replace the whole OS image every time some new namespaced CSS layout rule is being incubated? That stuff has nothing to do with running an OS. The parts of Chrome that are an OS—which includes a lot of the stuff that gets installed as "browser" on other OSes!—should really live as OS services, separate from "the browser" (really just the renderer + VM.)

Microsoft took a while but eventually learned their lesson about this, and these days Edge is just an app and updating it doesn't require a restart of your computer. Part of what enabled that was delineating the slower-moving parts of the browser (e.g. the network stack) from the faster-moving parts, and letting the slower-moving parts live in the OS while the faster-moving parts lived in the app. "Edge" is just a renderer+VM. So is Safari, for that matter—what you download when you download "Safari Technology Preview" on macOS is just a renderer+VM, which relies on the same OS-provided libraries for e.g. network caching that the system Safari installation does.

Re:NeutralinoJS: Lightweight Electron alternative using nati... by meesles on Wednesday February 26, 2020 @04:55PM (#22427793)
Did you even read the comment? GP literally addresses deficiencies in this layer when running multiple instances of the browser.
Re:NeutralinoJS: Lightweight Electron alternative using nati... by dmitrygr on Wednesday February 26, 2020 @05:40PM (#22428237)
i did, and found them unconvincing

> 1. this would lose you the ability to develop for a particular version of the renderer

html and css are standards, if you are developing for a version, you are wrong. full stop.

> 2. this wouldn’t give you the benefit of Electron sharing service-memory with Chrome itself

there would be no electron so point is irrelevant

Re:NeutralinoJS: Lightweight Electron alternative using nati... by derefr on Wednesday February 26, 2020 @06:06PM (#22428452)
> html and css are standards, if you are developing for a version, you are wrong. full stop.

Who said anything about HTML and CSS?

Apps like VS Code create and manipulate a DOM directly in JS, or more often these days, WASM. To these apps, Electron is just a virtual machine with a lot of browser-like multimedia APIs attached. You pin the exact version of the renderer just like you pin the exact version of your dependencies in a server-side app, or the exact version of the OS in a virtual-appliance VM image.

Electron has nothing to do with "the web" or "web standards" other than borrowing technologies originally developed for those. Electron competes with things like Unity and https://love2d.org/, not with browsers. It's in a category of frameworks with the goal of giving the developer pixel-perfect control over what the user sees, where apps are separately developed, tested, and tweaked, for each target (e.g. each OS, each kind of display/interaction methodology, etc.)

With this category of framework, you don't build your app as generic code targeting a standard; rather, you build, and test, your product against a specific "engine." (Imagine for a moment that people could take Unity apps and run them against any old version of the Unity engine, or even against Amazon's Lumberyard fork of the same. Would anything work?)

Re:NeutralinoJS: Lightweight Electron alternative using nati... by dmitrygr on Wednesday February 26, 2020 @06:10PM (#22428494)
> Electron competes with things like Unity

in much the same that sharpened sticks compete with power tools, yes

Re:NeutralinoJS: Lightweight Electron alternative using nati... by derefr on Wednesday February 26, 2020 @06:15PM (#22428542)
If your goal is picking your teeth, a sharpened stick is all you need, and any other tool you use is going to be being used as a glorified sharpened stick.

Similarly, if your goal is drawing the views of a CRUD app, any tool you use is going to be used as a glorified version of Display Postscript.

Re:NeutralinoJS: Lightweight Electron alternative using nati... by ljm on Wednesday February 26, 2020 @08:50PM (#22429597)
It has side effects, too. For example, I wanted to record a new screencast with OBS Studio (fantastic free software), but couldn’t capture any chromium-based application without disabling GPU-acceleration.

Only happens with electron apps.

Re:NeutralinoJS: Lightweight Electron alternative using nati... by jcelerier on Wednesday February 26, 2020 @05:09PM (#22427930)
> Chromium is built to share a lot of things between tabs efficiently

yey, currently using 6.6 gigabytes on my machine (RSS)... efficient...

firefox is no better, sitting at 4.8 gigabytes...