Why has Plan 9 chosen statically linked binaries instead of dynamic ones? (2004)
This is far too narrow a view. It&#x27;s not a question of whether to dynamically link or not, but WHERE and HOW to dynamically link.<p>Think about it: If you were to force absolutely everything to be statically linked, your KDE app would have to include the ENTIRE KDE library suite, as well as the QT libraries it&#x27;s based on, as well as the X window libraries those are based on, etc etc. You&#x27;d quickly end up with a calculator app that&#x27;s hundreds of megabytes.<p>But let&#x27;s not stop there, because the linkage to the kernel is also dynamic, which is a no-no. So every app would now need to be linked to a specific kernel, and include all the kernel code.<p>Now imagine you upgraded the kernel. You&#x27;d have to rebuild EVERY SINGLE THING on the system to build with that new kernel, or a new version of KDE or QT or X or anything in between.<p>The kernel membrane is a form of dynamic linkage for a reason. Same goes for IPC. Dynamic linkage is useful and necessary; just not to such a microscopic level as it once was due to size constraints.<p>The key is not to eliminate dynamic linkage, but rather to apply it with discretion, at carefully defined boundaries.