I used Arch Linux for over a decade. I like a lot of things about it. I like
more things about it than I dislike. Over these many years, I grew quite
proficient with pacman, Arch Linux’s package manager. All its commands became
intuitive and natural:
- Install a package:
pacman -S $PKG_NAME. 1 - View dependencies of a package:
pacman -Qi $PKG_NAME. - Which package owns a file:
pacman -Qo /path/to/file.
The list goes on. If you’ve never used this package manager, these commands are
as obscure as it gets. You’d never guess the right flags, and you’d never guess
what they do just by reading them. But if you’re proficient with pacman, those
commands feel obvious, and it’s easy to think that anyone with doubts should
just read the documentation.
During the many years I used Arch and pacman, I never questioned this. It felt
normal and natural, just the way things are.
I’ve now been using Alpine for a couple of years, and apk is quite a bit more
obvious:
- Install a package:
apk add $PKG_NAME. - View dependencies of a package:
apk info --depends $PKG_NAME. - Which package owns a file:
apk info --who-owns /path/to/file.
You might not guess the exact names of flags to use based on what you want to
do, but you’ll definitely guess what these commands do just by reading them.
Looking back at my years using pacman, I ask myself how that ever felt natural
or intuitive.
It just takes stepping outside of our daily habits to notice how cryptic some of them are. We often use tools for years until they become second nature, and never question whether they make sense, if they truly are “easy to use” or we’re just used to them. Every once in a while, we need to step out of our bubble and use a different tool for our daily tasks, so we can have a clearer, less biased picture of the tools we rely upon.
I’ve come to think of this as the Pacman syndrome: familiarity makes an unintuitive interface feel natural.
Disclaimer
I use pacman as an example because it’s the program that made me realise this
so clearly. I look back and think “yeah, this thing is weird and non-obvious, I
can understand why folks using something else see it the way they do”.
pacman is great. It’s lightweight and fast. And compared to most package
managers, it’s still among the better ones.
Fun fact: the initial version of this article wrongly claimed
pacman -Si $PKG_NAMEwas the right command. ↩︎