Browse Source

post for #ilovefs 2020

max.mehl 1 week ago
parent
commit
37ed6ff9de
No account linked to committer's email address
2 changed files with 82 additions and 0 deletions
  1. 82
    0
      content/blog/2020-02-ilovefs-2020.md
  2. BIN
      static/img/blog/hidden-street.jpg

+ 82
- 0
content/blog/2020-02-ilovefs-2020.md View File

@@ -0,0 +1,82 @@
1
+---
2
+title: I love the hidden champions
3
+date: 2020-02-14
4
+categories:
5
+  - english
6
+tags:
7
+  - ilovefs
8
+  - fsfe
9
+  - bash
10
+headerimage: /blog/hidden-street.jpg
11
+headercredits: The unknown Free Software contributors. Photo by Kaique Rocha
12
+
13
+---
14
+
15
+A few days ago I've sent an announcement email for today's [I Love Free Software Day](https://fsfe.org) 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.
16
+
17
+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?
18
+
19
+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]:
20
+* Firefox: 221
21
+* Thunderbird: 179
22
+* LibreOffice: 185
23
+* GIMP: 166
24
+* Inkscape: 164
25
+
26
+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]?
27
+
28
+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]):
29
+
30
+```bash
31
+for p in $(pacman -Q | cut -d" " -f1); do
32
+  echo "$(pactree -r -l $p | tail -n+2 | sort | uniq | wc -l)–$p–$(pacman -Qi $p | grep "^Description" | grep -oP '(?<=: ).*')"
33
+done | column -t -s'–' | sort -nr
34
+```
35
+
36
+Output:
37
+
38
+```
39
+1621  iana-etc                   /etc/protocols and /etc/services provided by IANA
40
+1620  tzdata                     Sources for time zone and daylight saving time data
41
+1620  linux-api-headers          Kernel headers sanitized for use in userspace
42
+1620  filesystem                 Base Arch Linux files
43
+1619  glibc                      GNU C Library
44
+1349  gcc-libs                   Runtime libraries shipped by GCC
45
+1287  ncurses                    System V Release 4.0 curses emulation library
46
+1267  readline                   GNU readline library
47
+1261  bash                       The GNU Bourne Again shell
48
+...
49
+```
50
+
51
+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.
52
+
53
+In the end, I decided to express my thanks today to the following projects and people:
54
+
55
+* The development team behind **acl/attr** which controls access permissions
56
+* The four initial creators of **argon2**, Jean-Philippe, Samuel, Dmitry and Daniel, for their password hasing function
57
+* Jan Dittberner (who also is a FSFE supporter!) and Nathan Neulinger, developers of **CrackLib** which checks and enforces strong passwords
58
+* Reuben Thomas and Dom Lachowicz for their **enchant** project, a wrapper for various spell checking engines
59
+* Maintainers of **glibc** and **gcc**, important tools for the C library and compiler
60
+* The **HarfBuzz** team which can shape glyphs from Unicode texts
61
+* The **libmnl/netfilter** people, who provide tools for network-related operations
62
+* The contributors of **libxml2** for their library and tools that are crucial for the FSFE website
63
+* Martin Mitáš who more or less alone maintains **md4c**, a Markdown parser
64
+* Thomas Dickey who maintains **ncurses** which provides a text-based interface for the command line
65
+* Chet Ramey as representative of **readline**, a programme for interactive user input
66
+* And last but not least Lasse Collin who maintains **xz**, a compression tool
67
+
68
+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.
69
+
70
+Happy I Love Free Software Day everyone! ❤
71
+
72
+PS: If you want to try the same with apt (with another separator):
73
+
74
+```bash
75
+for p in $(dpkg --get-selections | cut -f1 | cut -d":" -f1); do
76
+  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 '(?<=: ).*')"
77
+done | column -t -s'*' | sort -nr
78
+```
79
+
80
+[^1]: During the writing of this blog post I remembered Matthias [hugging Peter Stuge for #ilovefs 2013](https://k7r.eu/hug-a-developer-today-peter-stuge/) who also contributes to widely used Free Software projects.
81
+
82
+[^2]: `pactree -l firefox | sort | uniq`

BIN
static/img/blog/hidden-street.jpg View File


Loading…
Cancel
Save