Several years ago I began using elementary OS as my primary desktop operating system. I thought it was exciting—a Linux for the everyman, a Linux desktop environment that copied Apple rather than Microsoft, a Linux distro that didn’t package a bunch of software I didn’t need. It wasn’t perfect, but it appeared to be a project headed in the right direction. The focus on simplicity and aesthetics immediately appealed to me, as did the reduced configuration options. Options are great and all, but desktop environments like XFCE, MATE, and KDE all provide way too many configuration options and it takes entirely too long to get things running the way I like. There were some things I really liked about elementary, but I’ve come to accept that, for the most part elementary is just another Linux distro with all the trappings and faults of other Linux distros. Just like the many failures before it, elementary OS will not lead to “the year of the Linux desktop.”
My introduction to elementary OS began when I was attempting to complete my thesis for grad school and my MacBook Pro fan died, causing it to heat up and throttle and become generally unusable. The part was cheap but I could not wait for it to come in due to many pressing deadlines, so I found an old HP tower on Craigslist and picked it up on my way home.
It came with Windows, which I refuse to use, so I quickly searched the internet for the most macOS-like Linux distro. I was familiar with Linux, having tinkered with it since Yellow Dog Linux came out in 1999 and allowed me to install the system on my green iMac. It was fun to tinker and learn with, but my primary machines were always Macs. Now I had to depend on Linux because, with my brief amount of research, I realized I probably couldn’t turn this machine into a hackintosh.
My internet search immediately brought me to elementary and, aside from being based on Ubuntu, it appeared to be a perfect fit. It was easy to install and in minutes I had LibreOffice running and I was back to work. The dock was the best Linux dock I had ever used—for the most part it functions like a macOS dock. The window manager was much better than competitors such as Dolphin or Nautilus. It had some weird quirks but at least it wasn’t all cluttered and ugly like most. I liked how easy it was to connect to servers and that it was easy to open a window as root.
Elementary made a point of packaging only its own basic apps and this was hit or miss. Most (all?) of them were forks of other projects with an elementary-style face lift. I really like Code, their bare bones text editor. Mail (based on Geary) was okay visually but I could never get it to work with all of my accounts. The music player was perfectly serviceable and integrated with the system. The web browser, like most Linux defaults, was practically unusable.
Now none of my machines run elementary. I’ve come to realize that elementary shares many of the same design principles and underlying technologies as Gnome, but because it’s niche, and doesn’t have the massive support of Gnome, it leads to an experience that’s often broken. Installing Dash to Dock on Gnome will give you the macOS style interface and applications will play much nicer with your system. But I don’t currently run Gnome, either. On my laptop it’s because of this stupid thing called libinput that makes my trackpad unusable despite my best efforts to correctly calibrate it (or just remove it and replace it with xorg/synaptics, as I did with KDE). On my desktop Gnome appears to be the only desktop environment that I can’t get to work with my hardware and FreeBSD. Not that I’m missing out on anything great—Gnome has a large number of weird UX quirks that have been openly mocked by pretty much everyone since version 3 came out. Gnome just happens to be the desktop environment I can whip into working order in the least amount of time.
Where does this leave me? Back to accepting that to run *nix on my machines I’m going to have to spend a bunch of time configuring the system. Therefore, I’ve said goodbye to any distros based on Red Hat or Ubuntu. Those two seem to be in a battle to handcuff Linux to their technologies to make everyone dependent on them. While I do not oppose their support-driven business models, I do oppose them trying to make Linux suck as much as possible so users will be forced to pay for their support once they scale up. If using *nix is going to continue being a pain in the ass, I’m going to stick with projects I philosophically agree with and do what I can by contributing documentation and bug reports.
Elementary provides an excellent example of the problem with all these Linux distros—literally hundreds—that are all attempting to solve the Year of Desktop Linux problem. It’s kind of like this:
But replace “standards” with “Linux distros designed for desktop use.” Does any other software that fulfills such a small niche contain so many options? Regardless, I was once excited about elementary because it appeared to have the potential to achieve the legendary status of a Linux desktop functional for a casual computer user. Maybe it still can do this, but there are some major failures that will need to be addressed, first.
Development Focuses on Features, Not Stability
My distaste with elementary began when the most recent big new version came out (6.0) and it was worse than the previous version. Before this version was released, I checked out their progress on GitHub and was pretty surprised by the sheer volume of new features this release would get. Unfortunately, they were focused on quantity, not quality.
Perhaps the most disappointing thing was the dark mode they finally decided to include. The elementary team had a specific vision for how dark mode should function and their vision is antithetical to how other major desktop environments work. With KDE, I know that any Qt apps are going to respect dark mode and require no configuration. I can also be confident that like 90% of GTK apps will do the same. LIkewise, GTK apps work well with Gnome/XFCE and Qt apps generally respect dark mode, too. In elementary, despite being GTK based, with each subsequent version GTK and Qt apps look worse and worse. The more features they add to their “Granite” framework the more isolated the distro becomes.
Further isolating the distro was their decision to “Flatpak everything.” Flatpak support, I understand. Making everything Flatpak doesn’t make a lot of sense. Worst of all, they stripped their very useful app store of everything but Flatpak. That means it went from being an app store with pretty much everything under the sun (all the Debian apt stuff + Flatpak) to just Flatpak. Sure, I can still fire up the terminal (for now) and use apt, but the nice part about an app store is the ability to browse.
There were some other dreaded feature problems: they dropped Mail based on Geary to Mail based on something ugly and even less functional, they spent a lot of time adding new trackpad gesture features that I couldn’t try out because they relied on the dreaded libinput, and they copied Apple’s warnings about untrusted apps. This works for Apple because practically everything is on the Apple App Store and guys like me who use Homebrew can safely ignore these warnings. Elementary is trying to be “Linux for everyone” while stripping down their app store and then presenting scary warnings when I install the software I need from other sources. They can’t have it both ways.
Reinventing the Wheel
One of the big problems elementary seems to be having as it evolves is reinventing the wheel. This is a common Linux problem. 99% of distros contribute nothing to the Linux ecosystem as a whole. They don’t really have to, but it would be nice if there wasn’t a ton of development work that consisted of nothing but nerds spinning their wheels.
Elementary’s Granite is perhaps the worst example of this. They could easily do everything in GTK. Hell, their entire Pantheon Desktop could function as a theme for Gnome, XFCE, or some other existing desktop environment and then they could contribute to those projects.
Instead, almost everything in elementary is a reinvention of the wheel. Sometimes this isn’t a bad thing. As I mentioned before, I really like the elementary Code application. I find it has a great balance between being lightweight and providing the right features, which for some reason most text editors get wrong. Unfortunately, in other DEs like KDE, some of the UI stuff didn’t translate. Gnome caused a similar problem. I worry that as elementary expands Granite further their applications will be more and more incompatible with other systems. It’s bad enough you have to have all the GTK and Qt libraries to run Linux, but now I’m supposed to have Granite, too? Maybe Flatpak would solve this but despite their “Flatpak” everything strategy I can’t seem to find a Flatpak of this.
If you asked elementary, Linux Mint, Manjaro, MX Linux, Pop!, Ubuntu (Desktop), and countless others what they’re contributing to Linux that makes their projects unique, they would probably all provide the same answer: “We’re making a Desktop Linux for the every man!” If less people spent time reinventing the wheel and more spent time contributing to an existing project, we might actually have an open source desktop operating system that can be widely adopted.
Pretty UI—But is it Useful?
The overthinking of dark mode epitomized many of the problems with elementary. It’s telling that (like with Gnome), any guide on “How to Install elementary OS” includes a section on how to install elementary Tweaks, which adds basic functionality like adding a minimize button to windows. A strict adherence to a design philosophy isn’t bad (just look at Apple), but at times it’s not clear what elementary’s design philosophy is. While I used elementary it always felt as if their design principles were based on style rather than usability. The OS looked nice but it didn’t assist my productivity the way macOS does (many people do not understand why Mac users find all other systems so appalling—but once you use a Mac for a decent period of time, you’ll understand that it’s not about the style, it’s about the usability).
I’ve always been annoyed by how Linux desktop environments always want to copy Windows, the very thing Linux users are critical of. Elementary certainly improves on things by including a useful dock, but all the other UI/UX stuff just seemed a little…off. Then I ran into this article by Simon Peter that analyzes many of the poor design decisions in elementary and how they are often (unwittingly) inspired by mobile. It made me realize that my problem with elementary really was that it was just Gnome + dash-to-dock, except it was much less functional because GTK Linux applications are written with Gnome in mind, not elementary.
Back to Configuration
I really piled on elementary in this article but they just epitomize the problem. I’ve come to realize that to use *nix there’s no getting around the tedious configuration process. Right now I’m using Manjaro KDE + the Plank dock on my laptop and it works, but it took some time to strip KDE down and rebuild it to a functioning OS (and, it should be noted Plank is GTK). Honestly, I probably would still have elementary on this machine but it crashed and couldn’t be resuscitated.
Things I didn’t include in this article are all the differences between Linux distros beyond the desktop environments. Currently (as this site is documenting), I’m switching everything over to FreeBSD because having a consistent system has so much value and that’s something Linux will never provide. I don’t mean getting around it with Snap, Flatpak, Docker, and all these other attempts to bring some semblance of consistency on Linux. Going back to the XKCD comic above, investing in FreeBSD means getting behind an existing platform that makes the least amount of compromises instead of trying to once again hop on the hot new thing that will solve all of our existing problems. Does running FreeBSD mean more tedious configuration? Yes. But I’ve learned the hard way that all the Linux distros that promise a reprieve from tedious configuration caused more problems than they solved. Inconsistency is baked into the Linux model and every attempt to solve this problem just leads to more inconsistency (“15 competing standards!”).