On the other hand, I feel like many of the headaches of packaging and using packages could have been avoided if static linking were the default. Sure, things like openssl should probably be dynamically linked for more immediate updates when security issues arise, but most of the other third-party libraries for applications should be statically linked.
Otherwise, we end up reinventing static linking for decades, which is what things like Flatpak, AppImages, Snaps (🤢), and presumably Toolpaks exist to solve.
Yes, Flatpaks and Snaps (🤢) also provide application sandboxes, but it would be much better if they could focus more on sandboxing than also having to worry about dependency management for application libraries.
Arguably, if static linking were the default, Toolpaks wouldn’t be necessary either, even for immutable systems, because static binaries can be easily installed to a mutable part of the system.



Most people hate Snaps because the Snapstore backend is proprietary (which is a valid reason to hate them).
I despise Snaps because their cold start times are dreadful (yes, even with LZMA compression, which Canonical wants you to believe solved this). When a Snap launches after first installation or after an update, you’re looking at anywhere from 15-60 seconds of unresponsiveness while your system appears to fail to launch the application, even though it’s actually because the shitty Snap needs to decompress the disk images and pollute your loopback devices.
Combine the terrible cold start times with the fact that the default behavior of Snaps is to phone home to the Snapstore whenever they want to check for updates and you’re going to create bad experiences for people (especially newbies) that think “Linux is garbage” because Canonical decided this was a great idea to force on people.
They also keep Snapifying core parts of Ubuntu like the kernel itself and GNOME, making them impossible to avoid if you want or need to use Ubuntu.