Red Hat Runs Deep
2020-04-11 00:37
by zlg

I've been plugging away at steadily de-RedHatting my desktop system, and in 
doing so I've come across a few oddities: Steam, for example, 'needs PulseAudio' 
to deal with a microphone (even though I lack one to use...), and while apulse 
emulates the function calls, it does *not* emulate the dbus calls. So even using 
apulse to 'fake' PA support to get Steam to load, you still need dbus because it 
expects that IPC system to be present or it'll error before it even launches.

D-Bus is the pivotal piece of software that makes it easy to leverage software
that depends on it to get people to use their software over others'. Rather than
standard IPC mechanisms, FreeDesktop, Red Hat, and friends all put forward dbus,
then make their software depend on dbus so it gets onto the average person's
system. Sure enough, you'll find dbus running on just about every current
Linux-powered system, even ones like Gentoo and Slackware. CUPS depends on it,
PulseAudio depends on it, GTK relies on it for accessibility purposes, BlueZ
depends on it, etc. Many programs then in turn depend on these higher pieces,
spreading their presence and influence over the ecosystem.

Why does my system need a daemon running for processes to talk to each other 
when my OS already provides mechanisms for IPC? Sockets, pipes, FIFOs...

In these short adventures of discovering how deep the tendrils of Red
Hat-influenced dependencies go, I'm coming to a conclusion that a dbus-less
Linux-powered system is impossible with current software. dbus is *the* piece
of software to nix from your system if you want FD.o or Red Hat out of your
userland. It's getting there and figuring out what's actually available to you
that's the hard part.

There's been a lot of coalescence around "One True Stack" to the point that it
will be very painful to convert to whatever succeeds systemd, dbus, pulseaudio,
etc. This means that much software will either need a complete rewrite to
accomodate dbus-less systems, or substantial effort to add support and kiss
upstream's ass to get optional behavior included.

To make things worse, the FHS and LSB 'standards' are controlled by corporations
and other typical Linux players. So they can get their software included in what
the base system's definition is and suddenly everyone has their software via
standards compliance.

Since I have limited time and even more limited motivation, I'm calling my
journey a failure for now. It's not necessarily bad. It's just realizing that
I'm one person in an ocean of people who are happy with the status quo of
the ecosystem and are happy to follow a corporation's example on how to do
free software and happy to believe that money has nothing to do with what
gets committed and what doesn't. I am decidedly *not* charismatic, so any
effort I spend in this space is pointless because other people will not care or
appreciate it.

It kinda sucks because I thought I had what it takes to contribute to software 
and work with people, but it relies far too much on social skills and unwritten 
rules and process and bureaucracy, registering for mailing lists, bugtrackers, 
fora... you get the idea. People make for a very inconsistent user interface and 
the last thing I want to do after work is deal with more people. I just can't 
see the good in participating.

What's in it for me? That's what I'm stuck on. Seriously, what do I get from
it? It's easy to see what everyone *else* will get from my participation --
better software, docs, graphics; whatever I contributed -- but not so easy
to list what's given in return. You know, something to make this transaction
less one-sided?

Other people have a bunch of reasons for why they contribute to free software,
and they seem to get something out of it. I feel like I learned a few things
about technical systems, but also learned about the dark side of meritocracy:
you're only valued for your code. Someone else could write code as good as
you and you wouldn't be missed. So if you're a novice or somewhere between
novice and competent, you and your contributions are basically noise to them.
Many projects do demand a certain skill level, but are poor at communicating
what contributors *ought* to know before contributing, leading to hard,
incorrect work done by novices being turned away by more experienced but
resource-challenged projects. Nobody walks away from such a situation feeling
positive; it's a bunch of wasted work all around.

I've contributed to a group that didn't espouse meritocracy, and met much of
the same social behavior, intellectual posturing, and argument that I've seen
in other communities. They too are also happy to take your contributions and 
reject you socially. Maybe it's just me, or maybe people tend to create these
problems when you get enough of them together, regardless of their views on what
constitutes merit or whether it's important to begin with.

What does participation in free software do for you?

---

If you know of any non-Linux systems that you think I'd like, or distros that've
managed to cut Red Hat out of their userland, shoot me an e-mail or something.

So far I'm aware of Haiku, BSD, Plan9, and the toy OSes like TempleOS or Menuet.
I would love suggestions on which BSD and why. I've read a ton of comparison
pages and articles, but real testimony from people who embrace textlife from the
BSD angle would be valuable to me. If I can get tmux, vim, ssh{,fs}, mpd, gnupg
(or workalike), python, lua, and mutt, I'm pretty much set. Bonus points if I
can do full disk encryption easily.

-z