2020-11-19

Likea?

Should we be dynamically or statically linking?

That question used to come up for public debate and reconsideration in computing circles every once in a while, and was generally answered by the fact that resource constraints simply let you do more with your hardware when dynamic linking is the norm. Of course, that decision doesn't come free. Library updates introducing uncaught bugs to a host of dependent programs is a thing. So is DLL Hell and it's close cousin all-or-nothing-upgradeitis.

And though Moore's Law may be dead in the form that we knew and loved it decades ago, the real cost of all kinds of computing resources has come way, way down. So sometimes we have diskspace and even working set (well at least in RAM; not so much in cache) to burn.

Enter flatpak. Not just a program, but also it's whole dependency chain as a separate resource!

OK. It solves a problem for software providers ("I have to figure out how many different packaging systems and get this past how many different policy review committees to make sure my product is available to all my potential users!?!") and the flip side of the problem for users ("I want to try Newthing version 2.0, but my distribution is still stuck on 1.7!"). Granted.

But the cumulative effect of using it for everything is or would be vastly wasteful. Thankfully I don't hear of very many people trying to use it for everything. Or am I just ignorant?

Anyway, my personal policy runs along the lines of "Use your distribution's single, integrated, resource-sharing environement for as much as possible, but there is this thing you can do in a pinch."

That said, I mentioned recently that I'm preparing to enfoce the use of clang-format on my project at work. Only you have to pick a single version of the program or else chaos ensues, we have a divierse set of build environments, and they don't share a common version availble from the official (or semi-official extended) repositories.

So I am actually trying to build a flatpak to provide clang-format1 so that my team has an easy way to install a compliant tool.

Wish me luck.


1 For future references: left to it's own devices llvm builds everything by default to the tune of almost thirty gigabytes (and takes several hours on a fast, quad-core machine to do it, too). Must tell it to build less. Probably need to do the same with clang, too.

No comments:

Post a Comment