The people behind the scenes who work tirelessly to make your Linux distribution run smoothly are the packagers. The vast majority of Linux packagers are volunteers who dedicate their evenings and weekends to create and maintain the gears of the Linux distributions they love.
The Linux ecosystem is thriving with many different distributions. They satisfy different audiences, needs, and styles. They range from types that are:
- secure and suitable for military and financial applications (RHEL)
- bleeding edge and dynamic (Fedora)
- universal (Debian)
- educational (Edubuntu)
- for the hobbyist (Raspbian)
- for the media artist (Ubuntu Studio)
- for the easy-going user (Mint)
- for the desktop application and cloud (Ubuntu)
- simple and lightweighted (Arch)
- faithfully built from source code (Gentoo)
In all the cases, the Linux distributions are aggregating free and open source packages, configuring them and combining them in a manner that ensure their proper collective behavior. Thanks to all that configuration and testing, adopters of Linux distributions have the peace of mind of simply installing a package (a given application) and having the confidence that it will work nicely with the other packages currently installed in the system.
The "magic elves" behind the scenes who work tirelessly to make this work smoothly are the packagers. The vast majority of Linux packagers are volunteers who dedicate their evenings and weekends to create and maintain the gears of the Linux distributions they love.
Back in February 2012, I had the luck of being the first trainee of the Debian Maintainer of the Month (MoM) program, started by Andreas Tille. The goal of the MoM program is to educate and train new packagers for the Debian distribution by pairing trainees with mentors and doing the training while packaging a new real application. The program has all the ingredients for balancing an interesting, challenging, and rewarding task.
During my training, we learned how to package fis-gtm, the open source implementation of M/MUMPS that is of great importance for the ecosystem of open source Electronic Health Records systems. The fis-gtm package has just been accepted in the Debian unstable distribution.
Going through the training was eye opening. I learned a great deal of very useful tools and practices, that since then I continue to use daily. From the proper use of GPG keys, to chroot containment and remote screen sharing with tmux. The collaboration environment was well described by Andreas Tille as: "Waking up in the morning to realize that someone in another continent has already solved for you the problem that had you stuck last night."
In ideal circumstances, a Linux packager works closely with the developers of the upstream package in such a way that new releases of the package can be adapted quickly to be included in the next release of that Linux distribution. In many cases, the process of packaging uncovers issues with the package that require the upstream developers to make changes and adjustments. A packager also works in close coordination with other packagers in the same Linux distribution because many packages have dependencies on other packages or provide services for other packages, making it vital that the community of packagers coordinate their updates to ensure the consistency of the final Linux distribution.
As Linux users, it is often easy to forget (disregard?) how much work goes into the creation and maintenance of a Linux distribution.
Becoming a Linux packager is an excellent way to learn about software development, quality control, project management, and software maintenance in an environment of passionate individuals who deeply care about the output of their work. This is an experience all young developers should have.
After having learned the ropes of Linux packaging, and having seen first hand the dedication of this community, I developed a great deal of respect and appreciation for their work. Now, every time I install a package, whether it is from the command line with
sudo apt-get install package
yum install package
or any of the equivalent graphical interfaces, I pause and think:
"Thank you to the person who spent many hours configuring and building this application so that I didn’t have to."