Electron: The Bad Parts
hackernoon.com
hackernoon.com
Well you seem to be looking only at process attached to a window, look a bit down in background tasks: see those chrome and other electron-based apps eating your RAM?
I'm not particularly tied to javascript, but just have no interest in investing the time to learn c++ properly, so that would be a showstopper for me and probably lots of others who are considering going down the Electron route.
To re-iterate though, QML does look like a very nice system for specifying UIs...
No, you can write full apps in QML/JS (I personnally prefer going the C++ route for the stricter typing and better performance, but to each its own :p).
Most JS libs will work (except those that work on the HTML DOM since ... it's not HTML).
> GUI: fix scrolling for scene view window scrolling
I need the scrolling to work out of the box. Some of the users' diagrams are going to be 10x the size of the examples shown for that framework (if not larger).
Also in the issues section:
* you can't put a custom context menu for the nodes
nw.js (and I assume Electron) provide this by default.
* Crash: Attempting to connect an input node into self output node
Sorry, that's a showstopper. The application I maintain proudly does not crash when the user tries to do this.
And then this one: * Implement QML frontend
So... if I'm not leveraging QML, what's my workflow with this framework? Am I coding it in C++?
If so, then the speed and ease of developing the frontend doesn't compare to HTML5.
Just noticed another showstopper:
* https://github.com/paceholder/nodeeditor/issues/63 (doesn't currently support HiDPI)
I need HiDPI support out of the box.
This may all seem secondary to my original statement, which was that Qt works fine until you want to draw certain types of diagrams. While I'm convinced it's possible (and looks to be getting easier in the future), the example you gave isn't fully baked, doesn't have a QML frontend, and doesn't look to be stable.
I have no doubt people can and will build more frameworks for Qt as it continues to improve. Meanwhile, however, with HTML5 I can use raw Javascript, or d3, or React, etc. all the way up the ladder to frameworks specifically designed for editing diagrams. All of those will result in diagrams of boxes connected by Bezier curves with performance that scales with the number of DOM elements. And every single one of those options have demos that work in the browsers we're staring at that merely require a keyboard shortcut to study and change the code.
That said, I'd steer away from native menus unless the GUI toolkit specifies their behavior precisely, including how the menu API interacts with HTML5 including DOM bubbling, CSS layout calculations, etc. Otherwise you'll need to research the behavior yourself, for each platform, defeating one of the benefits of using a cross-platform HTML5 toolkit in the first place.
Can't they make use of shared libraries?
Like anything else it's a tradeoff, and for the average user not having to install separate dependencies (at least on windows and mac) is going to be easier, and 50 or 100 mb isn't something anyone is going to really have an issue with in the vast majority of cases.
For you, it sounds like it hurts more than it helps, but for others the options may be:
1. Don't use slack at all because they can't figure out how to install the correct version of libthingy.dll. Or they don't get the app at all because it's not for their platform.
2. Use slack
And in that scenario, the option they went with wins hands down.
I'm not saying it's perfect, and I still believe that giving both options would be a benefit for most, but the fact that it is done this way wasn't a "mistake", it was a tradeoff for the targeted audience solving problems that many had.
I suppose it's a problem on mobile though.
Qt programs are pretty small. Java are bigger but still much much smaller than any Electron-based program.
IIRC JRE is about 50 MB. Probably less. So even if you include it with your Java program, it's STILL smaller than Electron programs.
https://en.wikipedia.org/wiki/Side-by-side_assembly
This was introduced in Windows 2000 and used for core OS components starting with Windows Vista.
So it seems like one should be able to just have that hash, and then rely on the backend to just go fetch a blob that has that hash from a list of possible sources (centralized repo, bittorrent tracker, IPFS, etc.)
Linux at least has library versioning so this is less of a problem. Windows has foo.dll and foo.dll and foo.dll, so pretty much the only way is to ship your own foo.dll.
I like it though it not without any disadvantage.
It will be challenging to upgrade OpenSSL after a discovered vulnerability.
https://github.com/nodekit-io/nodekit
Instead of embedding a browser engine and Node in each application, it uses the available ones in the platform it's running.
Mozilla has Socorro, which is great, but way too heavy for a small application.