TECHNOLOGY

The divulge of GNU/Linux and a case against shared object libraries

Personal critique

Right here is in allotment refined to write since I in actual fact were day-to-day riding
GNU/Linux for 20 years now, but I judge it’s serious to be precise
about this. How reach GNU/Linux is worse than it used to be 10 years previously? This
would possibly well well thoroughly be a subjective realizing, GNU/Linux being higher in the previous,
or seemingly I am having a question on the anguish with rose-tinted glasses.

A fleshy disclaimer, this weekend my machine that is stunning vanilla
proper determined to die after an update. And this used to be no longer a fleshy version
upgrade. Precise a protracted-established update that I attain over and over per week.

Certain, we occupy PipeWire and
Wayland. We win pleasure from many up-to-the-minute
advances and but, the good employ for me is worse than it used to be 10 years
previously. Now all of a surprising, I can not rely on the machine to be trusty love
it used to be. I do not be conscious the machine bricking after an update, or the
machine changing into laggy after 10 days of uptime. This would possibly well well be the realm with
Fedora, although.

Over time, I in actual fact occupy day-to-day pushed many
distributions. From Gentoo,
Arch, Fedora
to Ubuntu. My most attention-grabbing memories were always with
Debian. Precise pure Debian always proved to be
essentially the most trusty machine. I never had enviornment or machine breaking after an
update. I can not instruct the identical for Fedora.

From the win-scurry, I had disorders. I in actual fact occupy an Nvidia card and even
booting provided disorders on event. This never came about on
other distributions, although they’d their concerns. Updating the
machine used to be in general an order in playing. How reach an working
machine that boasts with the stability is so unstable? And this used to be
no longer isolated to my most foremost machine. This also came about on my X220
ThinkPad

with Fedora on.

Shared dependencies were a mistake! There, I said it! I perceive
that disk space used to be exiguous again then and this used to be a sound
constraint. But this has given me extra anxiousness than any other bid. I am
all in for AppImages or one thing love that. I
don’t care if these pictures are 10x greater. Disk space now is hundreds, and
they solve the realm with “libFlac.8.so is lacking” and I in actual fact occupy version
12 installed. Which comes with unnecessary symlinking, downloading of
older versions and hoping that this would possibly win to the underside of the realm.

Now, the largest apologist of GNU/Linux will never admit this and
even announcing one thing is spoiled with right here is realistic as a mortal sin. I,
nonetheless, am no longer pondering about cultist behaviors. Right here is bullshit! Things
needs to be higher than 10 years previously, no longer worse. And I don’t care how
noteworthy lipstick you set aside on this pig. After extra than 20 years of the utilization of
Linux as my most foremost machine, I judge I in actual fact occupy earned a badge that provides me
the simply to instruct the fact.

No matter all this, I am aloof a huge fan. I aloof judge GNU/Linux
is seemingly essentially the most unobtrusive working machine, bar none. But the
complexity has gotten the higher of it. It’s bloated and too refined
at this point. Understandably, you can not occupy a up-to-the-minute working machine
that competes with doable alternatives without sacrificing simplicity. But I
aloof judge that there would possibly be but any other manner.

One amongst the precise aspects of GNU/Linux needs to be excellent equipment supervisor
pork up. Nonetheless, they’re no doubt fixing a local that would also aloof
were solved and done with years previously. The series of gymnastics
that occur in the background for you to set up a tool is proper
mind-boggling. The dependency graphs are insane. And Snaps and Flatpaks
tried to solve a majority of this stuff, but until a distribution comes out
that is fully devoid of shared dependencies, we are in a position to aloof dwell in
this purgatory.

Let’s compare these two distributions in phrases of purposes sizes
and shared object libraries and peep how they keen.

Debian

root@debian: cat /etc/os-start

PRETTY_NAME="Debian GNU/Linux 12 (bookworm)"
NAME="Debian GNU/Linux"
VERSION_ID="12"
VERSION="12 (bookworm)"
VERSION_CODENAME=bookworm
ID=debian
HOME_URL="https://www.debian.org/"
SUPPORT_URL="https://www.debian.org/pork up"
BUG_REPORT_URL="https://bugs.debian.org/"

Prime 20 purposes by dimension

dpkg-ask -W --showformat='${Installed-Size}t${Kit}n' | type -nr | head -n 20 | awk '{dimension=$1;unit="KB"; if (dimension >= 1024) {dimension=dimension/1024; unit="MB"}; if (dimension >= 1024) {dimension=dimension/1024; unit="GB"}; printf "%.2f %st%sn", dimension, unit, $2}'
Size Kit
651.87 MB libwine
389.26 MB linux-image-6.1.0-18-amd64
345.76 MB plucky-browser
323.74 MB google-chrome-trusty
265.31 MB llvm-14-dev
225.76 MB firefox-esr
141.77 MB fluid-soundfont-gm
114.67 MB libreoffice-core
113.41 MB containerd.io
112.77 MB libnvidia-rtcore
111.92 MB libllvm15
106.56 MB ibus-info
104.92 MB libllvm14
99.20 MB docker-ce
77.39 MB docker-buildx-plugin
72.00 MB libwebkit2gtk-4.1-0
71.93 MB libwebkit2gtk-4.0-37
70.51 MB libwebkitgtk-6.0-4
69.25 MB nvidia-kernel-dkms
66.64 MB gcc-12

Right here is extra or much less a new machine that is being pale day-to-day for work.

Collection of purposes installed

dpkg -l | grep '^ii' | wc -l

2217

Collection of shared object libraries on machine (*.so)

Show conceal: Some of them would possibly well well well be symlinks to at least one but any other so procure this with
a grain of salt.

safe /lib /lib64 /usr/lib /usr/lib64 -apply -type f -name "*.so.*" | wc -l

5156

Shared objects sorted by dimension

safe /lib /lib64 /usr/lib /usr/lib64 -type f -name "*.so.*" -exec du -h {} + | type -rh | head -n 20
Size Kit
113M /usr/lib/x86_64-linux-gnu/libnvidia-rtcore.so.525.147.05
112M /usr/lib/x86_64-linux-gnu/libLLVM-15.so.1
105M /usr/lib/x86_64-linux-gnu/libLLVM-14.so.1
70M /usr/lib/x86_64-linux-gnu/libwebkit2gtk-4.1.so.0.12.8
70M /usr/lib/x86_64-linux-gnu/libwebkit2gtk-4.0.so.37.67.8
69M /usr/lib/x86_64-linux-gnu/libwebkitgtk-6.0.so.4.4.8
57M /usr/lib/llvm-14/lib/libclang-cpp.so.14
45M /usr/lib/x86_64-linux-gnu/libnode.so.108
43M /usr/lib/x86_64-linux-gnu/libnvidia-glcore.so.525.147.05
41M /usr/lib/x86_64-linux-gnu/libnvidia-eglcore.so.525.147.05
31M /usr/lib/x86_64-linux-gnu/libmozjs-102.so.102.15.1
30M /usr/lib/x86_64-linux-gnu/libicudata.so.72.1
30M /usr/lib/x86_64-linux-gnu/libclang-14.so.14.0.6
29M /usr/lib/x86_64-linux-gnu/nvidia/recent/libcuda.so.525.147.05
28M /usr/lib/x86_64-linux-gnu/libjavascriptcoregtk-6.0.so.1.1.14
28M /usr/lib/x86_64-linux-gnu/libjavascriptcoregtk-4.1.so.0.4.14
28M /usr/lib/x86_64-linux-gnu/libjavascriptcoregtk-4.0.so.18.23.14
24M /usr/lib/x86_64-linux-gnu/libnvidia-glvkspirv.so.525.147.05
23M /usr/lib/x86_64-linux-gnu/libz3.so.4
22M /usr/lib/x86_64-linux-gnu/libgs.so.10.00

Fedora

root@fedora: cat /etc/os-start

NAME="Fedora Linux"
VERSION="36 (Workstation Edition)"
ID=fedora
VERSION_ID=36
VERSION_CODENAME=""
PLATFORM_ID="platform:f36"
PRETTY_NAME="Fedora Linux 36 (Workstation Edition)"
ANSI_COLOR="0;38;2;60;110;180"
LOGO=fedora-logo-icon
CPE_NAME="cpe:/o:fedoraproject:fedora: 36"
HOME_URL="https://fedoraproject.org/"
DOCUMENTATION_URL="https://scientific doctors.fedoraproject.org/en-US/fedora/f36/machine-administrators-info/"
SUPPORT_URL="https://question.fedoraproject.org/"
BUG_REPORT_URL="https://bugzilla.redhat.com/"
REDHAT_BUGZILLA_PRODUCT="Fedora"
REDHAT_BUGZILLA_PRODUCT_VERSION=36
REDHAT_SUPPORT_PRODUCT="Fedora"
REDHAT_SUPPORT_PRODUCT_VERSION=36
PRIVACY_POLICY_URL="https://fedoraproject.org/wiki/Felony:PrivacyPolicy"
SUPPORT_END=2023-05-16
VARIANT="Workstation Edition"
VARIANT_ID=workstation

Prime 20 purposes by dimension

rpm -qa --queryformat '%{SIZE}t%{NAME}n' | type -rn | head -n 20 | awk '{dimension=$1;unit="B"; if (dimension >= 1024) {dimension=dimension/1024; unit="KB"}; if (dimension >= 1024) {dimension=dimension/1024; unit="MB"}; if (dimension >= 1024) {dimension=dimension/1024; unit="GB"}; printf "%.2f %st%sn", dimension, unit, $2}'
Size Kit
572.91 MB google-cloud-sdk
559.76 MB wine-core
530.12 MB wine-core
383.76 MB code
350.98 MB golang-bin
318.04 MB plucky-browser
302.78 MB google-chrome-trusty
282.24 MB libreoffice-core
273.43 MB firefox
253.00 MB ocaml
223.60 MB proj-info-us
219.46 MB zoom
217.81 MB glibc-all-langpacks
199.31 MB qemu-person
196.79 MB edk2-aarch64
194.77 MB fluid-soundfont-lite-patches
194.25 MB java-17-openjdk-headless
176.75 MB java-11-openjdk-headless
156.80 MB pandoc
154.82 MB qt5-qtwebengine

What is attention-grabbing that the every person of these purposes are from a a machine
that are day-to-day in employ.

Collection of purposes installed

dnf list installed | tail -n +3 | wc -l

3484

Collection of shared object libraries on machine (*.so)

Show conceal: Some of them would possibly well well well be symlinks to at least one but any other so procure this with
a grain of salt.

safe /lib /lib64 /usr/lib /usr/lib64 -apply -type f -name "*.so.*" | wc -l

8894

Shared objects sorted by dimension

safe /lib /lib64 /usr/lib /usr/lib64 -type f -name "*.so.*" -exec du -h {} + | type -rh | head -n 20
Size Kit
128M /usr/lib64/libQt5WebEngineCore.so.5.15.10
55M /usr/lib64/llvm13/lib/libclang-cpp.so.13
53M /usr/lib64/libclang-cpp.so.14
50M /usr/lib64/libwebkit2gtk-4.0.so.37.57.6
49M /usr/lib64/libnode.so.93
45M /usr/lib64/libOpenImageDenoise.so.1.4.3
33M /usr/lib64/llvm13/lib/libclang.so.13.0.1
30M /usr/lib64/libclang.so.14.0.5
29M /usr/lib64/libopenvdb.so.9.0.0
28M /usr/lib/libicudata.so.69.1
28M /usr/lib64/libmozjs-78.so.0.0.0
28M /usr/lib64/libicudata.so.69.1
26M /usr/lib64/libusd_usd_ms.so.0
26M /usr/lib64/libgdal.so.30.0.3
22M /usr/lib64/libjavascriptcoregtk-4.0.so.18.21.6
22M /usr/lib64/libgs.so.9.56
22M /usr/lib64/google-cloud-sdk/platform/bundledpythonunix/lib/libpython3.9.so.1.0
17M /usr/lib64/libgtkd-3.so.0.9.0
17M /usr/lib64/libgeocoding.so.8.12
14M /usr/lib64/libmfxhw64.so.1.35

Lickety-split statement

/usr/lib/x86_64-linux-gnu/libjavascriptcoregtk-6.0.so.1.1.14
/usr/lib/x86_64-linux-gnu/libjavascriptcoregtk-4.1.so.0.4.14
/usr/lib/x86_64-linux-gnu/libjavascriptcoregtk-4.0.so.18.23.14

These three purposes are potentially pale by three varied purposes,
and nothing else needs them. I would possibly well well well be incorrect, but after all they
would possibly well well aloof proper be packaged alongside the utility that requires them
and be done with it.

So, now what?

The most foremost point is that, yes these purposes would possibly well well additionally be huge, but if we’re
precise, what would a few extra megabytes that would possibly well well well include
shared object libraries in actual fact attain? Doubtlessly nothing! And it will possibly well well make
repairs a wholly varied game.

There would possibly well well be this huge elephant in the room, the users. They don’t seem like
angry by equipment dependencies. They don’t care if an utility
is 20 megabytes greater. No person cares! But they no doubt attain care about
borked programs and non-working dependencies and making an strive to safe alternatives
for why libFlac used to be no longer chanced on even although they’ve it installed
(allthough a exiguous bit varied version).

Operating programs would possibly well well aloof summary these complexities far from the
person. And I am no longer announcing that the Linux kernel is at fault. I mean the
working machine as a total.

Right here is why I am a huge proponent of
AppImages. Flatpaks and Snaps are OK, but they
aloof occupy their very personal equipment management and the entire dependency project
because they’re looking out to optimize for space, and they sacrifice the simplicity.

It would possibly possibly well well be an spell binding order to make a prototype distribution
that doesn’t rely on shared objects, but has the total lot packed in
AppImages. Doubtlessly a silly endeavor, but seemingly rate having a question into. I
sense this extra or much less distribution would possibly well well well be highly unusable. Engaging
how far now we occupy gotten that this extra or much less distribution is practically no longer
doable anymore.

The year of the GNU/Linux desktop? I in actual fact occupy trusty doubts. We are in a
worse divulge than we were. No longer only that, but the sheer quantity of preference
is paralyzing at this point. Right here is extremely relatable to The Paradox of
Preference
. The
extra alternatives now we occupy, the worse it
gets. Wayland competing with
X. So many window managers, you proper win
misplaced. So many alternatives. I in actual fact have not any idea if right here is even salvageable,
or one thing new needs to be made.

A quick shoutout to AppImageHub. If
doable, I consistently are trying to search out purposes there and procure care of
updating them myself. I don’t desire hand retaining or a fixed up-up to now
machine. I proper pick on my machine to be trusty and when some utility has
gotten some well-known new parts I will download that myself. It’s
regarding the preference and no longer being forced into this churn that requires
fixed updating and keeping up with things. At this point, the utilization of
GNU/Linux is extra love a 2nd job, and I used to be so stoked when this used to be
no longer a case anymore in the previous. Right here is why I agree with love the closing 10
years were a regression disguised as growth.

Some attention-grabbing talks and videos

Related Articles

Leave a Reply

Your email address will not be published. Required fields are marked *

Back to top button