When I bought my first Raspberry Pi, on 2017, my initial idea was to plug it on my TV, install Kodi and use it as a media center. This would solve lots of limitations and headaches I had with the Apple TV and my not-so smart TV. It would also open lots of possibilities; after-all, I would have a freaking Linux computer connected to my TV set.
Being a long time Linux user and admin, this journey led me to notice a few differences of the Pi to the x86 distro world.
The Pi distros
First of all, for your Raspberry, you don’t have as many distro choices as you do in x86. That’s surely expected. However, what I found more interesting is that the differences between the available distributions are more focused on purpose than technical matters.
On your personal computer, you pick a distro probably thinking “I’ll install this one because I prefer their license policies, release strategies, etc”. But on the Pi, they differ more in the sense of “if I want my Pi to do xyz I’ll install this distro”.
Of course you still can choose between Fedora, ArchLinux, Debian and many other popular Linux distributions in their ARM versions. But there is a plethora of those “single-purpose” operating systems, such as Libreelec (media center), Volumio (music), RetroPie (games), etc.
It’s fairly understandable why this is the case, being the Pi small and cheap, many people would want it dedicated to a particular goal. In that case, it could be handy not to have to put the whole system together. The developers of those systems, then, take care of details and do the heavy lifting for a particular use of the Pi.
That seemed fine, even great for some types of installations. If you want to dedicate your Pi to a particular purpose, you could flash a memory card and have a system very close to your goal, just in a few minutes.
In my case, however, this didn’t fit well what I wanted.
My needs were:
- I initially wanted to run Kodi on my TV;
- I also had some secondary/future uses on my mind;
- besides that, I had seen many different uses of the Pi when browsing the community, such as playing retro games, programming the GPIOs with Python, etc, and I too wanted to get a taste of it.
So, in a nutshell, my Pi would be my media center, but I should also be able to play with it, as in “run other software whenever I wanted without much hassle”. I wanted to try whatever software was available/made for the Pi. This seemed pretty reasonable, coming from x86. I was ready to get my hands dirty and do the work to build the system I wanted.
However, getting in touch with the community, I noticed a recurring mentality of “one OS, one application”, as if the existence of the “specialized” distros were taken too far. For instance, people who wanted a desktop but also to play games would be often pointed to buy another SD card, install Ubuntu Mate ARM on one, RetroPie on the other, and switch the cards whenever they wanted each one. Or, alternatively, to buy a large card and make it multi-boot, using a third-party tool. (By the way, multi-booting isn’t straightforward on the Pi as you are probably used to on a regular desktop PC.)
Coming from the “you can do everything with your Linux install” mindset, from building my systems from the ground to do whatever I wanted, and playing with so many different configurations and setups, this level of hassle just to make the small computer to do more than one thing really impressed me. On x86 we have (and had) a bunch of distros focusing on an activity, such as Ubuntu Studio. But that meant only some pre-installed applications and some configurations. Not that I couldn’t run whatever I wanted on it.
So why would I need a entirely different distro just to run a different program? Would it be a limitation of the Pi?
Of course not. You surely can install whatever you want on top of Raspbian. But the thing here is that there isn’t that much guiding or mood for that. Instead, you see a general push to “just use” a “specialized” distro related to your use case.
A related trend is that many of those distros give you a very unique experience that can’t be easily replicated outside them.
Sometimes, this can be because of technical complexity. Take Volumio, for example. It’s a distro focused on music playback. The whole system, of course, will be configured based on premisses such as “excellent audio quality above all”. This brings trade-offs. For instance, you’ll probably drop Pulseaudio in favour of ALSA. Some software will break.
Having this same great audio experience inside, say, Raspbian, could be challenging. Therefore, a separate distro. Fair enough.
However, in some cases, making a few technical compromises can be enough to solve this kind of problem. For example, talking about Volumio, some users may not care that much about audio fidelity, but like the interface and the other features. Those users may want to exchange a bit of audio quality for the sake of not having many cards and switch them or multi-booting a dozen of systems.
On other cases, of course, these compromises are not a good trade-off, and you should not only buy another SD card, but also buy another Pi.
The thing I see is that the later situation is well served on the Pi world, but the former not. Still about Volumio, you currently can’t have a “good-enough” Volumio on top of other distro.
You could try to mimic it, for example installing MPD or Mopidy, coming up with an interface, etc. That would mean build something similar from scratch. There isn’t a guide, a script or anything that would guide you to a similar experience.
I used Volumio to illustrate this section, but that is the case for many Pi distros. The thing is that you can always install a general purpose distro, such as Raspbian, as you would do on your PC. But, (mostly) different from the x86 world, this won’t make all the great software made for Pi available for you. You can miss something you wanted, because it is delivered as a distro, instead of a package.
An exception on that scenario is RetroPie, which is focused on arcade games. You can install it as a distro or on top of other distros, using one of the scripts available. This is nice, and if there was something similar for other “specialized” distros, it would be positive.
On the other hand, the fact that the installation is done through a script reflects another negative trend on Pi. Many popular applications using install scripts,instead of packaging.
My two cents
So in this article I talk about three differences I noticed to x86 Linux when I started in the Pi world. One is that novice users are often not guided to the full possibilities of an ARM Linux computer, and are led to think that you have to go through a giant trouble to do more than one thing. The second is the distro fragmentation, which makes difficult to have many nice things in the same installation. And the third is the proliferation of installation scripts, which, although we also see it on x86 Linux, it is not so prevalent.
The fragmentation of the Pi experience could be avoided. Just like a x86 PC, Raspbian can be configured to be a music server, a gaming machine, a media center and much more. So can Fedora, Arch or Ubuntu. Doing a few compromises, there’s no absolute need for a whole full-fledged distro for each activity.
However, we currently lack automated, elegant ways of doing that. People wanting to do do more in the same system - specially if they already committed to one - find a lack of this type of guiding.
It really bothered me to see those inefficient “multi-OS”, “multi-cards” strategies being pushed so often to newbies that wanted to learn. Many times I’ve seen people being asked to choose between a desktop or some specialized application. Or to dual-boot to have both. Or even buying another SD card.
This approach seemed wrong to me, not only because I came with a “Archish” mentality, but also because the Pi is a educational/DIY computer.
Another problem is that, if you are to decide between rolling a “specialized” distro versus installing and configuring an application on top of Raspbian, you’ll have a hard time find, e.g., performance comparisons. In my case, setting up a media center as
Raspbian + Kodi + ton of configurations served me better than pure OSMC. But I only could know it after I went through the trouble of installing and configuring everything.
And then there is the installation methods for popular Pi applications, such as Pi Hole and RetroPie. It’s a bit odd that many of them are not packaged on Pi distros, and you have to resort to Bash scripts. I don’t know why this is the case, but it’s surely far from ideal.
On x86 we have the most widely-used softwares in the repositories, except when there are license issues or when they are too new. Contrarily, on the Pi, we have some very popular software that directly targets it, but are still not in the repos.
Both things make me think that Raspbian (and secondarily other distros) should be more targeted. We need more packages, instead of distros and scripts.
The “specialized” distros should stay and perhaps we should create even more. They are great for their purpose. However, I don’t like that we tie so much of the Pi to specific distro installations, or that we have to rely on scripts to install popular Raspberry Pi applications.
In a better future we would be an
apt install away of having (some version of) Volumio and Pi Hole.