Can't they make use of shared libraries?
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.
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.
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.)
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.
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.