diff options
Diffstat (limited to 'posts/2022')
-rw-r--r-- | posts/2022/arch-a-recap.rst | 294 |
1 files changed, 294 insertions, 0 deletions
diff --git a/posts/2022/arch-a-recap.rst b/posts/2022/arch-a-recap.rst new file mode 100644 index 0000000..9ac0b19 --- /dev/null +++ b/posts/2022/arch-a-recap.rst @@ -0,0 +1,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> + |