📚 node [[airing of grievances]]

I love computers and humans, and they come together beautiful in phenomenons like open source, which I love particularly. I am eternally thankful for the millions of humans who contribute to free software and make the world a better place.

Having said that, here are some out-of-season [[airing of grievances]] about software, in no particular order:

[[Flatpak]]

Flatpak sucks, yet is somehow also the best known (to me) solution to the problem of shipping apps in a platform/distribution agnostic way as of the time of writing ([[2023]]). [[Snap]] is clearly worse. How can this be?

Why, WHY, am I able to flatpak search chromium and even flatpak install chromium but (I kid you not) I need to write flatpak run org.chromium.Chromium to actually run the package?

Oh, it's because the developers refuse to accept patches to implement short forms for the run subcommand specifically. In practice this means ~millions of people around the world are maintaining independent collections of shoddy one-liners or aliases to make flatpak command invocations sane again.

Also, if you run flatpak search in a narrow terminal it will helpfully elide the full application ID, so flatpak search cannot even be depended on to retrieve the right incantation consistently. WHY.

[[Systemd]]

I love Systemd; I remember curating SysV Init scripts and I think the process of writing Systemd services is much improved. Having said that :)

Why is it so hard to just make sure a service will actually start and keep retrying forever if it can't start? There are several incantations in the configuration spec that seem like they should achieve indefinite retries, but really don't (or do only in some cases). I understand why you'd want to have something like a sane retry policy (with backoff), but I really would like to tell it: just keep trying for me. Under no situation it seems reasonable for me to find a service marked as inactive (dead), run start on it and have it work flawlessly. The computer should have done that for me.

Also, why is it non-trivial to go from operating over a service (with e.g. systemctl --user status/stop/start foo) to operating over its logs? For the latter you need (checks notes) [[journalctl]] --user-unit foo. Maybe it just took me longer than normal to find this, but it's unclear to me why systemctl --user logs doesn't exist, or why it's --user-unit in the case of journalctl instead of --user.

📖 stoas
⥱ context