this post was submitted on 25 Mar 2025
0 points (NaN% liked)

libre

9937 readers
46 users here now

Welcome to libre

A comm dedicated to the fight for free software with an anti-capitalist perspective.

The struggle for libre computing cannot be disentangled from other forms of socialist reform. One must be willing to reject proprietary software as fiercely as they would reject capitalism. Luckily, we are not alone.

libretion

Resources

  1. Free Software, Free Society provides an excellent primer in the origins and theory around free software and the GNU Project, the pioneers of the Free Software Movement.
  2. Switch to GNU/Linux! If you're still using Windows in $CURRENT_YEAR, flock to Linux Mint!; Apple Silicon users will want to check out Asahi Linux.

Rules

  1. Be on topic: Posts should be about free software and other hacktivst struggles. Topics about general tech news should be in the technology comm or programming comm. That doesn't mean all posts have to be serious though, memes are welcome!
  2. Avoid using misleading terms/speading misinformation: Here's a great article about what those words are. In short, try to avoid parroting common Techbro lingo and topics.
  3. Avoid being confrontational: People are in different stages of liberating their computing, focus on informing rather than accusing. Debatebro nonsense is not tolerated.
  4. All site-wide rules still apply

Artwork

founded 4 years ago
MODERATORS
 

Source for image: https://distrowatch.com/dwres.php?resource=family-tree

Image Description: A twist on the periodic table of elements with the elements replaced with various Linux distributions. We can see that the most common type of distribution is derived from Debian/Ubuntu.

How to choose a Linux Distribution

Here's a set of quick criteria for choosing a Linux Distribution (not exhaustive)

  1. Check the leadership behind the project
  • Are they a reputable organization? Some distributions are led by a small group of hobbyists while others are backed by large multinationals.
  • I recommend trying to find a blog or newsletter of some kind before jumping in.
  1. Try to get a feel for the support network for the distribution
  • Before installing, you should get a feel for where you can possibly get help, read up on distro specific manuals, or get peer support. Some distributions host their own forums, chat networks, etc. If a project has a sizable wiki (like the gentoo or arch wiki): double points!
  • Distributions based on other distributions (like Arch Linux) can piggy back off their parent distro, but make sure you understand what changes they've made
  1. What release schedule is it on? Are the packages updated?
  • For a majority of users who don't require mission-critical software 24/7/365, it's good to understand what release model the distribution uses. There are two main types:
  • Rolling Release: Packages are released to users after a round of testing when they become available. If a package has a new version, you'll likely get it the weekend of its release (sometimes called "bleeding edge" because you'll likely get the release version of packages instead of several bugfix releases over).
  • Stable Release: A new version of the operating system is released periodically. Once released, all critical packages and most major releases of packages will be frozen to just minor releases and bugfixes/security updates. Divided into "Leading Edge" and "Long Term Release" depending on time (6 months and 2 years respectively).
  1. Does the distribution have a unique advantage for your use case?
  • 95% of Linux distributions use the same software, they are just collections of software at the end of the day. That is, if you have something not working on your current distribution, then you'll more than likely run into it again. Generally avoid choosing a distribution based on aesthetics or branding.
  • Sometimes the folk wisdom of certain distributions are exaggerated or outdated ("This distro is great for beginners, this distro is great for gaming, etc")

Distro-hopping

If you're distro-hopping, likely the distribution you're using isn't doing well enough to provide you with software and options.

Instead try:

  • Using specialized tools like Distrobox, Homebrew, Nix, Podman/Docker, Flatpak, Appimage, etc
  • Setting up a virtual machine using QEMU and virt-manager (great if you want to scratch an itch without having to format your drive)
  • Looking more into the problem you originally have: If you can't install a certain piece of software, try to figure out why.

Megathread

FOSS software help, propaganda/agitprop, whatever you got you can post in here that doesn't deserve its own post.

top 13 comments
sorted by: hot top controversial new old
[–] roux@hexbear.net 0 points 1 week ago (1 children)
[–] hello_hello@hexbear.net 0 points 1 week ago (1 children)

The only mega where you can brag about your disk write speeds. doggirl-thumbsup

[–] roux@hexbear.net 0 points 1 week ago (1 children)

Not me with my poverty 5400 rpm bulk storage... doggirl-tears

[–] stupid_asshole69@hexbear.net 0 points 1 week ago (1 children)

It could be worse. I’m staring down the barrel of an hba and motherboard upgrade to get past sas and pcie bottlenecks at once.

[–] roux@hexbear.net 0 points 1 week ago (1 children)

My bottleneck is my 15 year old CPU chomsky-yes-honey

[–] stupid_asshole69@hexbear.net 0 points 1 week ago (1 children)

What’s it keeping you from doing?

[–] roux@hexbear.net 0 points 1 week ago (1 children)

Just haven't gotten around to it. I scavenge a lot of my parts off of my brother-in-law since every 4 years or so he needs a new gaming pc made so I have this unwritten deal with him that I build his new one and then he'll give m his old parts. If this Christmas rolls around and I don't have anything pressing that I need, I might get a new one.

[–] stupid_asshole69@hexbear.net 1 points 1 week ago

No like what’s the old cpu preventing you from doing?

[–] wheresmysurplusvalue@hexbear.net 0 points 1 week ago (2 children)

Is there a good YouTube channel or something which explains Linux internals? There's lots of content on like how bash commands work, how to install packages in various package managers, etc. But I'd love a channel which dives into things like pipewire, dbus, init systems, what is an initrd, etc.

[–] PorkrollPosadist@hexbear.net 2 points 1 week ago* (last edited 1 week ago) (1 children)

IMO, the best surface level coverage comes in the form of the Gentoo and Arch wikis. From personal experience, you can find Youtube videos diving into topics like this, but they tend to be incidental. I can't think of anybody who does a "long march through the institutions," so to speak. Additionally, some of these subsystems (dbus in particular) have relatively little documentation in text form, having not much more than the XDG spec and the actual implementation.

A while ago I had to create a bespoke initrd to get a multi-disk bcachefs working (not recommended currently), and found this guide invaluable: https://www.linuxfromscratch.org/blfs/view/svn/postlfs/initramfs.html

[–] wheresmysurplusvalue@hexbear.net 3 points 1 week ago (1 children)

Thanks for those links! I'll read through the Meta page on the Gentoo wiki and see how far that gets me. I also realized after writing the first comment that many of the projects I was curious about were freedesktop projects. Feel like I basically "get" what the kernel is responsible for, but modern Linux desktops aren't just the kernel and rely on a suite of programs running in userspace which I'm not too familiar with. Maybe it's a good time to install Arch again, that'll be one way to learn by doing.

[–] PorkrollPosadist@hexbear.net 4 points 1 week ago* (last edited 1 week ago)

Maybe it's a good time to install Arch again, that'll be one way to learn by doing.

In my humble opinion, Arch is overrated for this purpose (don't let me discourage you though if you want to try it). It is not much different from grabbing the "server edition" installer for any other distro and starting from a more minimal package set. The main learning experience presented here is being exposed to the package manager's dependency graph. When you start on a minimal system and tell it to install something like PipeWire, you get to see which dependencies it pulls in, and get an idea of how things kind of plug together. You also learn what doesn't work because some essential component you never knew about is missing. This is something you can explore on most distributions though. Being able to investigate dependencies, as well as reverse dependencies ("what depends on this") is a feature of any serious package manager. For instance, on any Debian-derivative, you can use apt-cache depends <package> and apt-cache rdepends --installed <package> to explore these package relationships. The same information is there, you just miss the opportunity to watch it scroll across your screen during the install. You can also see which files belong to which package by doing dpkg-query -L <package>. (equivalent functions exist for other package managers, like dnf, portage, nix, pacman, etc)

There are other more granular ways you can dig into this plumbing as well. You can use the systemctl status command to see a graph of which services are running on your machine, and which processes belong to them. The ldd utility can be used to display shared object dependencies for any program or library. There is also a slightly fancier version called lddtree, which you might have to install. (Worth noting, these don't show you which libraries have been statically linked at compile time). For example:

lddtree example

$ lddtree `which godot`
godot => /home/<redacted>/.local/bin/godot (interpreter => /lib64/ld-linux-x86-64.so.2)
    libfreetype.so.6 => /usr/lib64/libfreetype.so.6
        libbz2.so.1 => /usr/lib64/libbz2.so.1
        libbrotlidec.so.1 => /usr/lib64/libbrotlidec.so.1
            libbrotlicommon.so.1 => /usr/lib64/libbrotlicommon.so.1
    libgraphite2.so.3 => /usr/lib64/libgraphite2.so.3
    libharfbuzz-icu.so.0 => /usr/lib64/libharfbuzz-icu.so.0
        libicuuc.so.76 => /usr/lib64/libicuuc.so.76
            libicudata.so.76 => /usr/lib64/libicudata.so.76
            libstdc++.so.6 => /usr/lib/gcc/x86_64-pc-linux-gnu/14/libstdc++.so.6
            libgcc_s.so.1 => /usr/lib/gcc/x86_64-pc-linux-gnu/14/libgcc_s.so.1
    libharfbuzz.so.0 => /usr/lib64/libharfbuzz.so.0
        libglib-2.0.so.0 => /usr/lib64/libglib-2.0.so.0
            libpcre2-8.so.0 => /usr/lib64/libpcre2-8.so.0
    libpng16.so.16 => /usr/lib64/libpng16.so.16
    libenet.so.7 => /usr/lib64/libenet.so.7
    libzstd.so.1 => /usr/lib64/libzstd.so.1
    libtheora.so.0 => /usr/lib64/libtheora.so.0
    libtheoradec.so.1 => /usr/lib64/libtheoradec.so.1
    libvorbisfile.so.3 => /usr/lib64/libvorbisfile.so.3
    libvorbis.so.0 => /usr/lib64/libvorbis.so.0
    libogg.so.0 => /usr/lib64/libogg.so.0
    libwebp.so.7 => /usr/lib64/libwebp.so.7
        libsharpyuv.so.0 => /usr/lib64/libsharpyuv.so.0
    libmbedtls.so.14 => /usr/lib64/libmbedtls.so.14
    libmbedx509.so.1 => /usr/lib64/libmbedx509.so.1
    libmbedcrypto.so.7 => /usr/lib64/libmbedcrypto.so.7
    libminiupnpc.so.20 => /usr/lib64/libminiupnpc.so.20
    libpcre2-32.so.0 => /usr/lib64/libpcre2-32.so.0
    libembree4.so.4 => /usr/lib64/libembree4.so.4
        libtbb.so.12 => /usr/lib64/libtbb.so.12
    libz.so.1 => /usr/lib64/libz.so.1
    libm.so.6 => /usr/lib64/libm.so.6
    libc.so.6 => /usr/lib64/libc.so.6
    ld-linux-x86-64.so.2 => /lib64/ld-linux-x86-64.so.2

Here we can see it's linking with a bunch of audio / video codecs (png, theora, vorbis, ogg, webp), a handful of compression libraries (zstd, zlib, brotli, bz2), some more fundamental system libraries (libc - the standard C library, libm, the C math library, stdc++, the standard C++ library, libpcre for regular expressions). There are also a couple more fancy libraries in here, like freetype, harfbuzz, and graphite (antialiased font rendering, ligatures and font shaping for human script), embree (CPU raytracing), enet (a low latency networking library originally developed for the free software arena shooter game, Cube), and so on. We still haven't really learned how anything works, but we get to see how somewhat larger pieces of software are composed of a bunch of common building-blocks which are used throughout the ecosystem.

[–] hello_hello@hexbear.net 1 points 1 week ago

I don't think there's a single channel that explains all of these but you might find individual videos about a certain topic.

You'll have more luck with Wikis and project manuals for example: