In praise of Alpine Linux May 6, 2021 on Drew DeVault's blog

Note: this blog post was originally only available via Gemini, but has been re-formatted for the web.

The traits I prize most in an operating system are the following:

As a bonus, I’d also like to have:

Alpine meets all of the essential criteria and most of the optional criteria (documentation is the weakest link), and far better than any other Linux distribution.

In terms of simplicity, Alpine Linux is unpeered. Alpine is the only Linux distribution that fits in my head. The pieces from which it is built from are simple, easily understood, and few in number, and I can usually predict how it will behave in production. The software choices, such as musl libc, are highly appreciated in this respect as well, lending a greater degree of simplicity to the system as a whole.

Alpine also meets expectations in terms of stability, though it is not alone in this respect. Active development is done in an “edge” branch, which is what I run on my main workstation and laptops. Every six months, a stable release is cut from this branch and supported for two years, so four releases are supported at any given moment. This strikes an excellent balance: two years is long enough that the system is stable and predictable for a long time, but short enough to discourage you from letting the system atrophy. An outdated system is not a robust system.

In terms of reliability, I can be confident that an Alpine system will work properly for an extended period of time, without frequent hands-on maintenance or problem solving. Upgrading between releases almost always goes off without a hitch (and usually the hitch was documented in the release notes, if you cared to read them), and I’ve never had an issue with patch releases. Edge is less reliable, but only marginally: it’s much more stable than, say, Arch Linux.

The last of my prized traits is robustness, and Alpine meets this as well. The package manager, apk, is seriously robust. It expresses your constraints, and the constraints of your desired software, and solves for a system state which is always correct and consistent. Alpine’s behavior under pathological conditions is generally predictable and easily understood. OpenRC is not as good, but thankfully it’s slated to be replaced in the foreseeable future.

In these respects, Alpine is unmatched, and I would never dream of using any other Linux distribution in production.

Documentation is one of Alpine’s weak points. This is generally offset by Alpine’s simplicity — it can usually be understood reasonably quickly and easily even in the absence of documentation — but it remains an issue. That being said, Alpine has shown consistent progress in this respect in the past few releases, shipping more manual pages, improving the wiki, and standardizing processes for matters like release notes.

I also mostly appreciate Alpine’s professionalism. It is a serious project and almost everyone works with the level of professionalism I would expect from a production operating system. However, Alpine lacks strong leadership, some trolling and uncooperative participants go unchecked, and political infighting has occurred on a few occasions. This is usually not an impedance to getting work done, but it is frustrating nevertheless. I always aim to work closely with upstream on any of the projects that I use, and a professional upstream team is a luxury that I very much appreciate when I can find it.

Alpine excels in my last two criteria: performance and access to up-to-date software. apk is simply the fastest package manager available. It leaves apt and dnf in the dust, and is significantly faster than pacman. Edge updates pretty fast, and as a package maintainer it’s usually quite easy to get new versions of upstream software in place quickly even for someone else’s package. I can expect upstream releases to be available on edge within a few days, if not a few hours. Access to new software in stable releases is reasonably fast, too, with less than a six month wait for systems which are tracking the latest stable Alpine release.

In summary, I use Alpine Linux for all of my use-cases: dedicated servers and virtual machines in production, on my desktop workstation, on all of my laptops, and on my PinePhone (via postmarketOS). It is the best Linux distribution I have used to date. I maintain just under a hundred Alpine packages upstream, three third-party package repositories, and several dozens of Alpine systems in production. I highly recommend it.

Articles from blogs I read Generated by openring

Status update, September 2024

Hi! Once again, this status update will be rather short due to limited time bandwidth. I hope to be able to allocate a bit more time slots for my open-source projects next month. We’re getting closer to a new Sway release (fingers crossed), with lots of help f…

via emersion September 20, 2024

What's in an (Alias) Name?

A description of generic alias types, a planned feature for Go 1.24

via The Go Blog September 17, 2024

What's cooking on SourceHut? September 2024

Hello everyone! It has been some time since we last wrote a “What’s cooking” for you. We’d like to resume this tradition as of this September. We haven’t been totally radio silent – you can get caught up on what’s been happening over these past two years rea…

via Blogs on Sourcehut September 16, 2024