On 1/29/23 00:50, Demi Marie Obenour wrote:
2. Ship a single container that only needs to be QA’d once, works
everywhere, and has no dependencies except for the Linux kernel.
I get to update dependencies when *I* want to, and don’t have
to worry about breaking user’s systems. I can even ship a
shell script wrapper so that the container can be invoked as
a binary.
It’s pretty easy to see why someone would go with option 2.
Of course this is better for you, as a developer, but it is bad for
me as a user.
There is a reason why a "distribution" exists, centralized control
of everything with rpm, yum, logrotate, ...
The alternative of having each tool to drag over all its dependencies
means that you have to chase every app upgrade by itself,
you can't fix a security vulnerability affecting 30 apps by just updating
a shared library, and you massively waste resources by having
many minimally different versions of the same library in memory at the
same time. At the end of the day, you have turned Linux into Windows. You are
just missing "update checker" daemons for each app.
Bundling libs and (even worse) static linking (golang, I'm accusing you!)
is in my opinion just a sign of lazy development, and I always try to avoid
applications doing this.
Regards.
--
Roberto Ragusa mail at robertoragusa.it