aboutsummaryrefslogtreecommitdiffstats
path: root/posts/2022/arch-a-recap.rst
blob: 9ac0b1954a77fd3e23cd38f45905570cf27497b5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
.. title: Arch, a recap
.. slug: arch-a-recap
.. date: 2022-01-30 18:0:00 UTC+02:00
.. tags: arch linux, pro-audio, packaging
.. category: archlinux
.. link: 
.. description: 
.. type: text

One of the things, that has kept me (increasingly) busy over the past few years
is my involvement with the |linux distribution| |arch linux|.
While I have been using |linux| for probably about 14 years it is frankly hard to
pinpoint when exactly I went down the rabbit hole that this operating system/
ecosystem/ community is (relevant |xkcd|). However, I can elaborate on my
motivation and where that got me.

.. TEASER_END

As a musician of a varying background (from band-based rock music to solo
performances on guitar or with a modular synthesizer) I have found myself
evaluating the available pieces of software that are commonly used in music
production (e.g. |daws| and |audio plug-ins|). Most of them are |proprietary|
and only available for Windows or macOS (both proprietary as well). During my
studies a lot of the software in use has also not been |free|, but was provided
by the university with a *student discount* (e.g. Operating Systems (OSes),
|ides| or certain types of |vpls|).
I got increasingly annoyed by dealing with intransparent proprietary OSes,
|vendor lock-in| schemes, paying for software updates and being driven into
software piracy for working with so-called *industry standards*.

Some time during the studies for my B.Sc. I decided to "try out Linux", not
knowing what that would mean actually. So there I was, booting an |ubuntu| Live
CD and clicking around in an interface, that would install the OS alongside a
still existing Windows 7. At that point I did not yet know about the joys of
missing or failing |device drivers|. Many hard fights with the |x window
system| later I settled on |ubuntu studio| for a while, as it had many nice
audio related pieces of software available out-of-the-box.

I have always been a person that is interested in *"how things work"*. Soon I
realized, that the Linux ecosystem consisted of people that thought quite
similarly. Through various (often distribution specific) online documentation,
forums, mailing lists and the documentation of software projects for the first
time I felt as if I could actually learn something that mattered, because it
was not sold in a box and instead had a community of like-minded people
gathering around it.
I found quite appealing that a lot of things were *not polished* and that some
things were *not easy*, because it provided the sense of achieving something or
*getting good at something*. Where in Windows land I would have reinstalled the
OS upon getting intermittent |bluescreens|, in Linux land I just kept reading
about a certain topic until I was able to fix it myself.

Probably a year after dipping my toes into Linux I bought a new laptop (my
previous one decided to commit suicide by desoldering its GPU). At that time it
seemed like a good idea to not dual-boot anymore, as apart from an occasional
game session I was not using Windows anymore.
Due to a friend of one of my fellow students I got introduced to Arch Linux,
which that person used in a (to me) bizarrely minimal fashion by booting from a
USB stick, as the hard drive in his laptop was broken.

After installing Arch Linux for the first time (probably around 2008) I
realized quite early on that I would rather continue using it instead of Ubuntu
Studio, which by that time had given me many issues due to unclear
configuration management, documentation and graphics driver handling.
The |arch wiki| already back then was an excellent source of knowledge (and
still is to this day). Although some articles lack structure or are sometimes
outdated, it is this trove of knowledge that I had been missing with less
hands-on distributions up to then.
The |aur| offered an entrypoint for me to understand how distribution |package
management| works and how to build my own packages, that I could install using
the |pacman| package manager. This new found knowledge made me realize how
inefficient my work on Windows had been in the past (a realization that had not
fully dawned upon me on Ubuntu Studio as their update model follows a certain
cadence in which new versions of softwares are updated and otherwise only gain
bugfix releases). I was suddenly enabled to build packages myself of software
that I liked and used and I was able to alter existing packages to e.g. fix
problems or to extend their functionality. I was enabled to upgrade my entire
system with a single command, while on Windows I had to scavenge websites to
download installers and run those without knowing whether they were compatible.

As my main focus shifted even further towards pro-audio applications, |dsp|
languages and recording practices with my M.Sc., I of course do have to mention
the accumulation of knowledge that |linux audio| represents (e.g. with the
|linux audio wiki|). It is an invaluable, although by now partially outdated
and not actively maintained point of - often distribution agnostic -
information on all things audio on Linux. This ecosystem is what drove and/ or
documented the development and use of many of the projects at the center of
what it means to achieve low-latency audio on Linux such as |jack|.

After 2011 I started to conceptualize the Arch Linux distribution also as a
social construct, that relies on individuals to develop and change it (by
|getting involved|). While Arch is a distribution that can be used for many
purposes, the lack of structure or features in e.g. the pro-audio section was
apparent (although partially covered by packages in the AUR). I was able to do
most of the projects I was working on at that time using |supercollider| but
sometimes ran into issues that e.g. Ubuntu Studio had solved in a distribution
specific way (e.g. by providing packages for the |realtime kernel| to achieve
very low latencies while recording).

Around 2017 it became apparent that many of the packages that I was using on a
day-to-day basis were starting to fall behind on updates or had not been
updated in a long time. It turned out that two packagers that had been active
packaging audio related software were missing in action or were extremely
unresponsive. I realized, that unlike a company supported endeavor, Arch Linux
was a community driven effort and as such required help.

At the time of writing, Arch Linux consists of |arch linux developers|, |arch
linux trusted users| and |arch linux support staff|. While the first group
somewhat defines the direction of the distribution itself and takes care of the
most centric package repositories (``[core]`` and ``[extra]``), the second
group historically has been an additional group of packagers that takes care of
the ``[community]`` repository and the AUR and the last group is keeping a lot
of the infrastructure (e.g. wiki, forums, mailing lists, IRC channels, servers,
hosted applications) alive.

For outsiders it is possible to join the Support Staff by starting to help
maintain infrastructure together with the existing staff.
When looking at the Trusted Users group the barrier of entry is a bit higher,
as the person gains access to package repositories that are used by thousands
of users. As such newcomers have to follow a vetting process and be sponsored
by existing group members (this is similar, but much less clearly defined, for
Developers).

At the end of 2017 I was able to apply as Trusted User with the help of Ray
Rashif, who had been maintaining the packages I wanted to help improve and
update.

Admittedly, the application process has been a bit daunting at the time, but it
also made me realize, how much I could still improve my package scripts and the
amount of work that is sometimes required to get things right.

Since becoming a Trusted User in 2017 I have added many new packages in the
context of a pro-audio package group and spent time on various other packaging
areas as well.
In 2019 I have been promoted to Developer and spent some more time on
non-packaging topics on the side, such as infrastructure improvements
(|releng|, |arch-release-promotion| and |arch-repo-management|), installation
medium (|archiso|) and various community related topics (setting up an |rfc
process| and help holding |arch linux conferences|).

I will follow up on packaging and best practices in an upcoming article
(hopefully in the not so distant future) and shed some light on the
non-packaging topics in further articles as well.

That's it for now! I hope you enjoyed reading a user story, that eventually led
to getting more involved with an international community of (very talented)
developers working on a challenging project with many facets. As you can
imagine there are always many more stories to tell, but I tried to give a
general overview. Maybe I could even get someone interested in reaching out and
lending a hand in further developing this amazing beast that is Arch Linux :-)

.. |linux distribution| raw:: html

  <a target="blank" href="https://en.wikipedia.org/wiki/Linux_distribution">Linux distribution</a>

.. |arch linux| raw:: html

  <a target="blank" href="https://www.archlinux.org">Arch Linux</a>

.. |linux| raw:: html

  <a target="blank" href="https://en.wikipedia.org/wiki/Linux">Linux</a>

.. |xkcd| raw:: html

  <a target="blank" href="https://xkcd.com/456/">XKCD</a>

.. |proprietary| raw:: html

  <a target="blank" href="https://en.wikipedia.org/wiki/Proprietary_software">proprietary</a>

.. |daws| raw:: html

  <a target="blank" href="https://en.wikipedia.org/wiki/Digital_audio_workstation">Digital Audio Workstations (DAWs)</a>

.. |audio plug-ins| raw:: html

  <a target="blank" href="https://en.wikipedia.org/wiki/Audio_plug-in">audio plugin-ins</a>

.. |free| raw:: html

  <a target="blank" href="https://en.wikipedia.org/wiki/Free-software_license">free</a>

.. |ides| raw:: html

  <a target="blank" href="https://en.wikipedia.org/wiki/Integrated_development_environment">Integrated Development Environments (IDEs)</a>

.. |vpls| raw:: html

  <a target="blank" href="https://en.wikipedia.org/wiki/Visual_programming_language">Visual Programming Languages (VPLs)</a>

.. |vendor lock-in| raw:: html

  <a target="blank" href="https://en.wikipedia.org/wiki/Vendor_lock-in">vendor lock-in</a>

.. |ubuntu| raw:: html

  <a target="blank" href="https://ubuntu.com/">Ubuntu</a>

.. |device drivers| raw:: html

  <a target="blank" href="https://en.wikipedia.org/wiki/Device_driver">device drivers</a>

.. |x window system| raw:: html

  <a target="blank" href="https://en.wikipedia.org/wiki/X_Window_System">X Window System</a>

.. |ubuntu studio| raw:: html

  <a target="blank" href="https://ubuntustudio.org/">Ubuntu Studio</a>

.. |bluescreens| raw:: html

  <a target="blank" href="https://en.wikipedia.org/wiki/Blue_Screen_of_Death">bluescreens</a>

.. |arch wiki| raw:: html

  <a target="blank" href="https://wiki.archlinux.org/">Arch Wiki</a>

.. |aur| raw:: html

  <a target="blank" href="https://aur.archlinux.org">AUR</a>

.. |package management| raw:: html

  <a target="blank" href="https://en.wikipedia.org/wiki/Package_manager">package management</a>

.. |pacman| raw:: html

  <a target="blank" href="https://archlinux.org/pacman/">pacman</a>

.. |dsp| raw:: html

  <a target="blank" href="https://en.wikipedia.org/wiki/Digital_signal_processing">DSP</a>

.. |linux audio| raw:: html

  <a target="blank" href="https://linuxaudio.org/">Linux Audio</a>

.. |linux audio wiki| raw:: html

  <a target="blank" href="https://wiki.linuxaudio.org/">Linux Audio Wiki</a>

.. |jack| raw:: html

  <a target="blank" href="https://jackaudio.org/">JACK</a>

.. |getting involved| raw:: html

  <a target="blank" href="https://wiki.archlinux.org/title/Getting_involved">getting involved</a>

.. |supercollider| raw:: html

  <a target="blank" href="https://supercollider.github.io/">SuperCollider</a>

.. |realtime kernel| raw:: html

  <a target="blank" href="https://wiki.linuxfoundation.org/realtime/start">realtime kernel</a>

.. |arch linux developers| raw:: html

  <a target="blank" href="https://archlinux.org/people/developers/">Developers</a>

.. |arch linux trusted users| raw:: html

  <a target="blank" href="https://archlinux.org/people/trusted-users/">Trusted Users</a>

.. |arch linux support staff| raw:: html

  <a target="blank" href="https://archlinux.org/people/support-staff/">Support Staff</a>

.. |releng| raw:: html

  <a target="blank" href="https://gitlab.archlinux.org/archlinux/releng/">releng</a>

.. |arch-release-promotion| raw:: html

  <a target="blank" href="https://gitlab.archlinux.org/archlinux/arch-release-promotion/">arch-release-promotion</a>

.. |arch-repo-management| raw:: html

  <a target="blank" href="https://gitlab.archlinux.org/archlinux/arch-repo-management/">arch-repo-management</a>

.. |archiso| raw:: html

  <a target="blank" href="https://gitlab.archlinux.org/archlinux/archiso/">archiso</a>

.. |rfc process| raw:: html

  <a target="blank" href="https://gitlab.archlinux.org/archlinux/rfcs/">RFC process</a>

.. |arch linux conferences| raw:: html

  <a target="blank" href="https://conf.archlinux.org/">Arch Linux Conferences</a>