Browse Source

post for #ilovefs 2020

max.mehl 2 years ago
Signed by: mxmehl
GPG Key ID: 2704E4AB371E2E92
  1. 82
  2. BIN


@ -0,0 +1,82 @@ @@ -0,0 +1,82 @@
title: I love the hidden champions
date: 2020-02-14
- english
- ilovefs
- fsfe
- bash
headerimage: /blog/hidden-street.jpg
headercredits: The unknown Free Software contributors. Photo by Kaique Rocha
A few days ago I've sent an announcement email for today's [I Love Free Software Day]( to a large bunch of people. Most of the remarkably many replies have been positive and a pure joy to read, but some were a bit sceptical and critical. These came from Free Software contributors who are maintaining and helping projects that they think nobody knows and sees – not because these software pojects are unused, but because they are small, a building block for other, more popular applications.
When we ask people to participate in #ilovefs (this year for the 10th time in a row!) by expressing their gratitude to contributors of their favourite Free Software projects, many think about the applications they often use and come up with obvious ones like Mozilla's Firefox and Thunderbird, LibreOffice, their Linux-based distribution, or CMSs like WordPress and Drupal. Not that I think this is not deserved, but what about the projects that actually form the foundations for these popular suites?
I researched a bit on my own system (based on Arch Linux) and checked on how many packages some of the aforementioned applications depend (including dependencies of their dependencies)[^1]:
* Firefox: 221
* Thunderbird: 179
* LibreOffice: 185
* GIMP: 166
* Inkscape: 164
Phew! Looking through the list of dependencies, there a dozens of programmes and libraries that I couldn't even imagine what they could be about. But they make a big application, be it Firefox, Thunderbird or GIMP, actually possible. Isn't it a bit unfair that we often don't see these small (or sometimes huge) projects and the people who take care of it[^2]?
I decided to change that, at least for one day! I've analysed which packages are most used as dependencies of other packages (similar for Debian/Ubuntu [^3]):
for p in $(pacman -Q | cut -d" " -f1); do
echo "$(pactree -r -l $p | tail -n+2 | sort | uniq | wc -l)–$p–$(pacman -Qi $p | grep "^Description" | grep -oP '(?<=: ).*')"
done | column -t -s'–' | sort -nr
1621 iana-etc /etc/protocols and /etc/services provided by IANA
1620 tzdata Sources for time zone and daylight saving time data
1620 linux-api-headers Kernel headers sanitized for use in userspace
1620 filesystem Base Arch Linux files
1619 glibc GNU C Library
1349 gcc-libs Runtime libraries shipped by GCC
1287 ncurses System V Release 4.0 curses emulation library
1267 readline GNU readline library
1261 bash The GNU Bourne Again shell
As you might expect, on the very top I found a lot of GNU and Linux sub-projects, some widely known (like bash), some which I as a more-user-than-developer never heard of before (like libffi). This alone has been an interesting journey during which I learnt a lot about projects and their maintainers which play a crucial role on my laptop.
In the end, I decided to express my thanks today to the following projects and people:
* The development team behind **acl/attr** which controls access permissions
* The four initial creators of **argon2**, Jean-Philippe, Samuel, Dmitry and Daniel, for their password hasing function
* Jan Dittberner (who also is a FSFE supporter!) and Nathan Neulinger, developers of **CrackLib** which checks and enforces strong passwords
* Reuben Thomas and Dom Lachowicz for their **enchant** project, a wrapper for various spell checking engines
* Maintainers of **glibc** and **gcc**, important tools for the C library and compiler
* The **HarfBuzz** team which can shape glyphs from Unicode texts
* The **libmnl/netfilter** people, who provide tools for network-related operations
* The contributors of **libxml2** for their library and tools that are crucial for the FSFE website
* Martin Mitáš who more or less alone maintains **md4c**, a Markdown parser
* Thomas Dickey who maintains **ncurses** which provides a text-based interface for the command line
* Chet Ramey as representative of **readline**, a programme for interactive user input
* And last but not least Lasse Collin who maintains **xz**, a compression tool
But of course, that's only a small fraction of the many interesting Free Software components that enable my daily work. However, if we all do the same and think about the hidden champions – not only during #ILoveFs day but beyond – we can make the humans behind it enjoy their invaluable contributions a bit more.
Happy I Love Free Software Day everyone! ❤
PS: If you want to try the same with apt (with another separator):
for p in $(dpkg --get-selections | cut -f1 | cut -d":" -f1); do
echo "$(apt-cache rdepends $p | tr -d '|' | tail -n+3 | sort | uniq | wc -l)*$p*$(apt-cache show $p | grep -m 1 "^Description:" | grep -oP '(?<=: ).*')"
done | column -t -s'*' | sort -nr
[^1]: During the writing of this blog post I remembered Matthias [hugging Peter Stuge for #ilovefs 2013]( who also contributes to widely used Free Software projects.
[^2]: `pactree -l firefox | sort | uniq`


Binary file not shown.


Width:  |  Height:  |  Size: 274 KiB