this post was submitted on 21 Mar 2025
216 points (97.4% liked)

Programmer Humor

37176 readers
272 users here now

Post funny things about programming here! (Or just rant about your favourite programming language.)

Rules:

founded 5 years ago
MODERATORS
 
you are viewing a single comment's thread
view the rest of the comments
[โ€“] masterspace 17 points 3 months ago* (last edited 3 months ago) (25 children)

Because storage is cheap, so it's not worth optimizing that heavily for, because the optimization creates a huge amount of headaches.

There's a reason that today you can just download an app, and it just installs, runs, and uninstalls itself cleanly.

There's no fighting with dependencies, or installing versions of libraries or frameworks before you can install an app, or having apps conflict with other apps, or having bits of app installations lying around conflicting with things.

That's because we used to spend a lot of time and effort making sure that only a single copy of each dependency was installed on a system. If two apps both relied on the same library, one would install it, and the other would then be dependent on it as well and not install its own copy. If the original is removed you have a problem. If it thinks something else is dependent on its asset still and doesn't remove it when it should you've got a problem. If they were both dependent on different major versions of a library, you could run into conflicts and compatibility issues (hello dll hell). Either the apps would have to manage all that, or the OS would, or eventually the user often would.

Now every app just bundles all its dependencies with it. It means the app comes as a clean bundle, there's no conflicts, it can install cleanly, and there's so much less time spend on packaging apps and debugging various system configurations.

Quite frankly this makes way more sense as a model for distributing anything. Yes it costs more in storage, but it pays off massively in resiliency and time savings for everyone.

Also, unless everything is done with vectors, high def image / video assets are not small and can very quickly add up.

[โ€“] [email protected] 3 points 3 months ago

It's also worth noting apps have to ship higher resolution assets now, due to higher resolution displays. This can include video, audio, images, etc. Videos and images may be included at multiple resolutions, to account for different sized displays.

For images, many might assume vectors are the answer, but vectors have to be rendered at runtime, which increases startup time in the best case scenario, and isn't even always supported on all platforms, meaning they have to be shipped alongside raster assets of a few different sizes, further increasing package bloat. And of course the code grows to add the logic to properly handle all the different asset types and sizes.

All this (packaging dependencies, plus assets/asset handling) to say it isn't always malware, ads, electron, etc. Sometimes it's just trying to make something that looks nice and runs well (enough) on any machine.

load more comments (24 replies)