As was discussed earlier, that may not be true. Two different binaries that each use one function of a DLL means that you gained the size of all the other DLL functions that were never used.
True, but a lot of people are already putting up with something very similar to this (see: Nix/NixOS).
Statically compiling everything means that you no longer have to do the error-prone dance to binary monkeypatch the linker to the correct path.
That may be true for one single program but when taking into account the dozens of applications on your system that are using the same function you end up having a lot of redundant code.
While not everyone uses SDL_GPUxxx() functions for example, I am certain every single user of SDL calls SDL_Init().
SDL is probably a counterexample to pleading your case. You probably don’t have that many SDL programs on your system. And how infuriating is it when that program you want to compile can’t seem to match up all the dependencies it needs but you don’t know that until runtime when the versions don’t match? So how many libraries do I have for SDL that are taking up disk space and simply making me mad? How often have you had to recompile SDL in a static form so that the particular version mismatches of all the atomized SDL support libraries don’t kill you (looking at you Ubuntu)?
GTK/KDE are probably your best exemplars in favor of dynamic linking. Every single desktop app would have to compile those statically and that would be a bunch of redundant code.
The alternative, of course, is for something like GTK widgets to be a system service invoked by an RPC/IPC (remote procedure call/interprocess call) rather than dynamically linked into a program. The implementations of stuff like Wayland and Pipewire suggests that this might very well be a superior choice.
might be stupid, but what if every part of every program was a separate package. Instead of having a library, you package and link a single function (and its dependencies). might be a pain to make a package manager for, but it would ensure that disk space and memory are both minimized.
This is what compilers do. At that point compiling everything on the end-user machine seems easier, and distros like that exists: look at gentoo for example.