A Quick 2017 Survey Of Rolling Linux Distributionspermalink categories: technology originally posted: 2017-03-14 02:14:20
tl;dr: I tried a bunch of rolling Linux distributions. Then I gave up. Then I won!
What I'm Using Right Now, And Why
When I switched from Windows to Linux in 2007, I had to choose which "distribution" to use. What's that mean? Well, Linux isn't like Windows or OS X—there isn't just "one" Linux you go and get. Technically Linux is just the kernel, the "engine" of your operating system, but by itself it's kind of useless... to use an analogy, if you want a car, sure the engine is important, but you want wheels and seats too. So you'll still need lots of other software. And Linux is so good at giving you choices. Most users are familiar with choosing which web browser, mail reader, and music player they want to use. But in the Linux world you also get choices on things that maybe you never thought about, like picking a window manager (the thing that draws windows on the screen) or a package manager (the thing that downloads and updates your software). These technologies are so fundamental to your operating system that you can't really switch between them. You need to pick which ones you want to use, then build everything else on top of it. So what happens is, some dude decides which ones they want to use, bundles them all together, gets it working, and releases it—and that bundle of software is what we call a distribution.
The obvious choice for distribution back then—and still the most popular choice today, for personal computing with Linux—is Ubuntu, the Debian-based distribution made and supported by Mark Shuttleworth's company Canonical. Originally Ubuntu was positioned as the practical distribution. It updated more frequently than those other stodgy distributions, with a promise of releasing new versions twice a year! It also shipped binary drivers and patent-encumbered technologies—compromising on ideological free-software purity so that your graphics card and WiFi would Just Work, and you could even play MP3s and modern video files. (It was also particularly Python-friendly; a lot of Ubuntu's extras are written in Python, and Shuttleworth has keynoted at PyCon in the past—not sure he's done that for any other languages.) For all intents and purposes, you could think of Ubuntu as "a freshly updated, easy-to-live-with Debian with a nicer installer".
But times change, and Ubuntu changed with it. It still stays nice and fresh, releasing an update twice a year. And it still ships binary drivers, giving it better hardware support than most distributions. But it also diverged in worrying ways from the rest of the Linux community. It stuck with its Upstart init manager long after the rest of the world had switched to systemd, although happily Ubuntu did finally cave in and make the switch too. Ubuntu created its own window manager, ironically named Unity (ironic given how divisive it's been). And now Ubuntu are working on their own display server Mir, flying in the face of literally every other distribution and window manager which are all moving in unison to Wayland. And they're pushing their new snaps technology, an admittedly good idea whose implementation is unfortunately tied too closely to Canonical. (The snaps clone Flatpak is quickly gaining in popularity, seemingly to me simply for having no ties to Canonical.) Shuttleworth & co claim sensible technical and business reasons for these decisions—I don't know about that. All I know is, it makes Ubuntu different from everybody else, and not in ways that interest me or endear Ubuntu to me.
I'm somewhat insulated from these changes, as some years ago I switched to the GNOME 3 desktop. You can install and use GNOME 3 on stock Ubuntu, though it's a little goofy as Ubuntu hacks up some of the GNOME libraries for Unity's benefit. I remedied that a few years back by switching to an Ubuntu variant called Ubuntu GNOME. This ships with stock (and un-hacked!) GNOME 3. It's been great! And it means I never touch Unity or Mir.
Still, I remain a little worried that one day Ubuntu will change something, something that'll be be painful to live with and even more painful to fix. Also, even with the releases twice a year, sometimes I want my software even fresher.
So I'd been wondering for a while... maybe I should try something else?
Most distributions pick a particular collection of software at a specific version, get it all to work together, slap a name on it, ship it, and it's done. And generally they do this on a regular schedule. As mentioned, Ubuntu releases a new version twice a year—in April and October. Another famous Linux distribution, Debian, only releases a new version once ever two years or so.
Linux distributions generally also provide updates. But when they do, it's just bug fixes, not whole new versions of the same software. As an example, consider the current version of Ubuntu: Ubuntu 16.10. The 16.10 part of the name represents "the 10th month of the 16th year of this century"—as, yes, Ubuntu 16.10 shipped in October 2016. Ubuntu 16.10 shipped with Linux kernel version 4.8, which also came out in October 2016. In the five months since then, Ubuntu 16.10 has released many updates, including bug fixes for the kernel. But Ubuntu's kernel is still stuck at version 4.8. Meanwhile, Linus Torvalds has shipped the 4.9 and 4.10 kernels.
Why hasn't Ubuntu updated to the newer kernel? Stability. Newer kernels may have new functionality or improved performance—but they probably also have new bugs. Once a version of Ubuntu is released, it forevermore trades "freshness" for "reliability" and "predictability". This is standard practice—everybody does it.
Well, almost everybody. There are other answers to the question "when should we upgrade to the newest version?" For example, there are some Linux distributions that continually ship all the latest software. When a new version of the Linux kernel comes out, they release it to their users right away. These are called "rolling distributions". The classic examples of these are Arch Linux and Gentoo Linux. You can think of these as releasing on a schedule, like Ubuntu or Debian... but in their case their schedule is weekly. Or even daily!
Last year at LinuxFest Northwest I saw a discussion by some openSUSE guys that went into details about Tumbleweed. Tumbleweed is openSUSE's "rolling distribution", but it's kind of a next-generation project. Y'see, unlike the other rolling distributions, Tumbleweed is completely automated.
When a new version of some existing software comes out, folks at Arch and Gentoo have to download it, compile it, test it, and if works, ship it. Tumbleweed literally automated this entire process. It automatically downloads new versions of software it supports, then automatically builds everything, installs it, and even automatically tests it. And not just built-in test suites—full integration testing, checking that the GUIs work and everything. If everything is working, Tumbleweed automatically releases it. Literally zero human intervention required. If everybody at openSUSE got hit by a bus, new Tumbleweed updates would continue to tumble out. (What does it do if the whole system doesn't work? I believe it has some automated strategies here too, like it tries downgrading the failing packages and tries everything again.)
This is dead sexy, folks. And it sounds like a lot of fun. Sure, it's probably not as stable as something like Debian. On the other hand, if Tumbleweed shipped a bad update, not only would they fix it, I bet they'd view it as a chink in their testing armor and add a regression test so they never made that mistake again.
So, as an experiment, to see if I was ready to make a switch, I tried a bunch of rolling distributions. Here's what I tried and a summary of what I found.
How I Tested
I installed to a spare laptop. The laptop had several partitions where I'd already installed some version of Linux, and another partition for swap, and another "home" partition. Every time I installed I'd use manual partitioning so I could leave my current Ubuntu GNOME install alone.
I want to use the GNOME 3 window manager, so I ignored distributions that preferred something else. Yes, it might be possible to install GNOME 3 under those other distributions, but I was only willing to work so hard at this.
(I also was only going to install 64-bit Linux. I switched to 64-bit some years ago; these days it's increasingly the default in the Linux world, which many distributions dropping 32-bit support entirely, and indeed this requirement was no problem.)
I'd also see how hard it was to install these packages, using the package manager:
- ZFS (specifically ZFS On Linux, the version not using FUSE)
- NVidia binary drivers, with DKMS support
- Audacious, an MP3 player
These packages in particular are telling, because they're all encumbered with various legal and technical challenges. With Ubuntu, the practical but impure distribution, they're all available "out-of-the-box". Given the free-software zealotry of the Linux world, I expected some difficulty in installing these packages with other distributions.
I also tried to install PySolFC and Freecell Solver, a mature solitaire game and a solver for same. These are free software, but they're somewhat obscure, so they'd be a useful yardstick to see how much obscure stuff the distribution had prebuilt packages for. (Also, I play PySolFC practically every day, so I simply wouldn't want a distribution where it was painful to install.)
openSUSE Tumbleweed, version "Snapshot20170228"
The obvious first choice. But I had problems from the very start. I found Tumbleweed's installer user-unfriendly. Logically it had to ask all the same questions as any other installer, so I eventually figured out how to install it the way I wanted to.
But, for example, the manual partitioner ("Expert Partitioner") is so baffling and weird I nearly gave up. It has some wierd UI bits like a "Device Graph" and a "Mount Graph" that are confusing, redundant, and best ignored. But the worst part was the confluence of two questionable design decisions:
- It seems to auto-allocate partitions when it starts up. The first unused partition is assigned to /, the second to /home, and so forth. Since on my computer all the partitions on the hard drive were in use, it decided that I wanted to install to... some extra partitions on the USB drive I was using to install Tumbleweed itself! Uh, no. Why is that even a default? Do people often want to install Tumbleweed to removable USB media?
- Once a mount point is assigned to a partition, you can't simply reassign it to another partition. You must first navigate over to the old partition and un-assign it. Then it becomes available and you can assign it to the new one.
So imagine how annoying it was trying to tell Tumbleweed "install / on sda1" and the UI literally refusing. I would choose sda1, type in the mount point /, and it would autocomplete to /var. If I forced it to be /, the installer would pop up a box reading "Error This mount point is already in use. Select a different one." Even though I'd never assigned it. Irritating!
Once I got it installed... the weirdness continued. Again, I knew there was going to be a way to manually update packages, and another way to find new packages to install. I eventually figured these out. But I found the workflow weird and I hated the UI. This is arguably a matter of taste, and I'm sure the openSUSE guys like theirs this way... but I didn't.
Also, openSUSE is uncompromising when it comes to free software purity. They don't support any of the software on my list. I did find the Packman third-party package repository, and from there I could install Audacious... and that was it. I think it's possible to install ZFS, as it appears there are third-party packages for it, but I never figured out how. And while third-party packages for NVidia are available for other versions of openSUSE, they aren't available for Tumbleweed at all. Even PySolFC and Freecell Solver were unavailable. So, no popular non-free software, by choice, and they're missing obscure free software too.
I loved how fresh all the software was... when I could get it. But whenever I used openSUSE's own stuff—the GRUB menu, the package manager—I hated the workflow and the UI. And while I admire their commitment to open-source software purity, it's inconvenient to live with. So I gave up on Tumbleweed.
Fedora Workstation, version 25-1.3
This one isn't actually a rolling distribution, it's just the current version of Fedora for workstations. Fedora does have a rolling distribution, called Rawhide, but I couldn't install it—the installer couldn't find its own packages (?!) so I never got past the installer's initial configuration screen. (I think the installer had difficulty "seeing" the USB drive for some reason.)
Of course, I'm sure this installer problem is just a dumb bug, and it'll be fixed soon enough, right? So once that's fixed, maybe I'd be happy with Rawhide? So I installed and played with the current version of Fedora, 25-1.3. I figured, if I could live with Fedora, maybe I could live with Rawhide too.
Bonus points for the Fedora live CD booting into GNOME 3! That's what I like to see. And the Fedora installer was the second-nicest I've used. (First-nicest remains the Ubuntu installer.) But there was a fly in the ointment. Fedora's installer refused to install over another Linux. I had three partitions on the hard disk that I regularly install Linux to, but Fedora's installer refused to install onto any of them. And I mean refused. It would not even present them to me as possible options for installing! Eventuallly I had to boot back to Ubuntu, then wipe the partition clean, then boot back into the Fedora installer. Once I did that Fedora let me install where I'd wanted to.
Once it was installed, Fedora basically seemed fine. It wasn't a rolling distribution, so the software wasn't super current. (If only I could have used Rawhide...!)
Fedora also has that open-software purity thing going, so I had trouble installing all my extra software. I could install Audacious out-of-the-box but that was it. It looks like it should be possible to install the NVidia binary drivers using a third-party repository, specifically RPM Fusion, even with Rawhide. And with ZFS it looks like I'm totally stuck. The ZFS On Linux project itself supports Fedora, but only the normal releases—not development releases, and not Rawhide. Finally, I think I was able to install PySolFC but not Freecell Solver.
Switching To Debian
At this point with my experimentation I got tired of dealing with these funny alternative package managers. Ubuntu is based on Debian, which means it uses Debian's package manager "apt". Since I've been using apt for years, I'm comfortable with it, and I also know the names of all the packages I want to use. And I believe Debian has the largest and best-maintained package repository of any of the Linux distributions, so anything I want should be available.
But there's no official Debian rolling distribution. There were plans for one, called Debian CUT, but after the initial rush of enthusiasm it fizzled and died. They haven't built an "unofficial monthly testing snapshot" of Debian CUT in nearly five years.
There are a few Debian-based rolling distributions, but only two also ship with GNOME 3 by default. So here goes.
Siduction 17.1 ("patience")
Siduction is a Debian-based rolling distribution made in Germany. It supports many different window managers, including GNOME 3, although the project prefers another window manager. (KDE, I think.) They'd just released a new live CD / installer with GNOME 3 support, literally days before I downloaded it. So this should all be super fresh!
The installer for Siduction was surprisingly... okay! I feared the worst, given that Siduction is a rather small community, and so the installer would have had even less TLC than Tumbleweed's. But there's now an open-source generic Linux distribution installer project, Calamares, and Siduction has switched to that. (Technically, Ubuntu's wonderful installer Ubiquity is also open source, under GPL2 which should be acceptable to everybody. But other distributions don't want to use Ubiquity, I think because of Canonical's contributor agreement.) Calamares was basically fine, and I quickly had Siduction installed.
But then my aesthetic troubles began. First, Siduction used its own ugly login manager. Tiresome but not a showstopper. However: Siduction had screwed around with GNOME 3 something awful! It looked like GNOME 2, with a global top menu bar with "Applications" and "Places" menus. It also had a bottom task bar. And they were both gray, not GNOME 3's black. And yet it seemed like it really was GNOME 3; for example, the file manager appeared to be Nautilus, version 3.22. I swear, it wasn't normal GNOME 3, nor was it Cinnamon, nor was it MATE. It was something far worse.
It's possible this was all done by installing GNOME extensions. So I tried to remove them. But the official way to manage GNOME extensions is with their web site, and that refused to work with the Firefox shipped with Siduction. (The required extension that let GNOME's web site fiddle with your computer simply wouldn't install on Siduction.) The GNOME Tweak Tool didn't show any extensions installed anyway. I guess they did it by hacking up GNOME 3 itself—yuck!
This was all so obnoxious that I quickly gave up on Siduction. I didn't try very hard to look in to ZFS, NVidia binary drivers, Audacious, or PySolFC / Freecell Solver. I just angrily installed over it.
The only other Debian rolling release I could find that used GNOME 3 was Kali Linux. But I never found the installer media for Kali Linux, much less install it. Instead, first I watched a video about Kali, and I could see that they too had rearranged GNOME 3 to suit their tastes—adding the Application and Places menus to the top bar, and forcing the application dock and virtual desktop browser to always be onscreen. At least this looked more-or-less like GNOME 3, unlike what Siduction did. But still—bleah! Moving on!
At this point I gave up on Debian rolling distributions per se. But there was one more experiment to try. Debian has an official version that's permanently under development. So it's not exactly a rolling distribution... but it's pretty close. It's called "Debian Unstable", code-named "sid". (This code name "sid" is the clear inspiration for the name "Siduction", above.) "sid" is really just all the latest versions of everything.
The bad news: sid makes no guarantees about stability. With Tumbleweed, there's the automated integration testing before release, so by and large your Tumbleweed machines will continue working after you update. This is less guaranteed with Rawhide; they do some integration testing with Rawhide, publishing "last known good" builds, but I gather you can still get a bum upgrade. With sid I believe there's literally zero integration testing. It's just all the latest software, you're welcome, good luck, let us know if it worked. Also, apparently sid doesn't get security fixes as fast as other Debian versions. So, while I do know people who permanently run "sid", it doesn't sound nearly as comfortable.
The even-worse news: I couldn't figure out how to directly install it. There's no prebuilt "sid" live CD, no installer ISO, not even a minimal "net installer" that downloads everything it needs.
However, given how Debian works, it should be possible to install a different version of Debian, then "upgrade" it to sid by changing which software repositories it uses. All I really needed to do was to get Debian—any version of Debian—installed, and I could upgrade to unstable. Which leads us to...
Debian Testing Netinst (2017-03-05)
Debian Testing is the generic name for the next version of Debian, whatever it is. The next version of Debian will be version 9, codenamed "stretch". (All these Debian codenames are names of characters from "Toy Story".) I couldn't find a GNOME 3 version of the installer—only XFCE—so I opted for the netinst installer, on the theory that it'd be more window-manager-agnostic.
This wasn't a live CD, so my choices were "use text installer" and "use graphical installer". I opted for the latter, and was presented with... what I'm guessing is simply the text installer with a graphical UI bolted onto the front. It worked, but it was dowdy and kind of plodding. My guess is it's driven by the same UI code as the text installer, and it's really only there so people can use their mice.
The bad news: the installer didn't have drivers for my network cards. WiFi didn't work, and I didn't have a wired Ethernet jack for my test laptop. So I literally couldn't install. I gave up on Debian Testing—but I had one more thing I could try!
Debian Live 8.7.1
I downloaded a live CD for the current released version of Debian, version 8.7.1. This is "jessie", originally released in 2015. Since it's a live CD, it came bundled with all the basic software needed to install and get up and running.
I tried booting into the live CD and installing from there. It booted into GNOME 3, which was nice. But the GUI installer wasn't a normal window, it was some weird top-level thing. Worse yet, this weird window wanted to be fullscreen, but for some reason it was shifted right and down. This meant all the important UI buttons on the bottom row were offscreen. Which meant it was literally unusable. However, the live CD also had the same "use text installer" and "use graphical installer" choices as Debian Testing. So I rebooted and went with the graphical installer. From there the installer worked without incident, and before too long the system was installed and I was ready to reboot.
When I did boot into 8.7.1, I was surprised at what GNOME 3 looked like. It turns out, Debian 8 shipped with GNOME 3.14, which was already a year old at that point. It's closer to three years old now. Meanwhile GNOME 3 has progressed all the way to 3.22. To my modern eyes, 3.14 mainly just looked unfamiliar, though it was obviously a bit dated in spots. But it didn't really matter, I didn't plan to use it very long.
Unfortunately—disaster struck again! WiFi didn't work under Debian 8.7.1 either, and I still didn't have a wired ethernet jack. So I couldn't even update my existing software, much less install new software. Another dead end.
Debian Testing Netinst, Second Try
At this point I'd given up. I switched back to Ubuntu GNOME on that laptop and was writing up my experiences. But then I got to thinking about it, and I realized: the installer was telling me exactly what it needed. It said "I need package X, can you put it on removable media for me?" And it's easy to download Debian packages—you just Google for them, and you can download them straight from Debian. So I ran the Debian Testing Netinst installer again, and used another computer to download the package it was asking for, and put it on a USB drive, and plugged it in, and... it worked! The installer was able to connect to my wifi and download all its packages and install.
Then it got hung up at the "install the bootloader" step. I let it sit for more than ten minutes—it should have been more like thirty seconds—then I tried poking at it a little. I used Linux's "virtual terminals" feature to see if I could figure out what was happening. Bad move. First, the virtual terminals weren't working; I couldn't log in or get a prompt. Second, I couldn't get back to the installer GUI. Note to self: don't switch virtual screens in the Debian graphical installer, you can't get back.
Anyway, it seemed like the Testing Netinst CD wasn't going to work for me. And I didn't feel like installing the XFCE version and seeing if I could get it to switch to GNOME 3. But you can see where I'm going with this...
Debian Live 8.7.1, Second Try
The Debian Jessie live CD was able to install the bootloader. And giving it the wifi package during installation meant wifi worked when I booted into the install. So I read up about switching to Unstable, and followed some instructions I found on a web page. I switched over the repositories, then told Debian to update and "dist-upgrade" my packages. It downloaded an enormous number of packages, proceeded to chew through them for a disturbingly long time, and then... it was simply done. No errors reported. I rebooted, and...
It worked! I had upgraded from Linux kernel 3.16 to 4.9. I'd upgraded from GNOME 3.14 to 3.22. Everything was fresh and new and working!
And I could install all my packages, too. In fact, they were all simply available in the Debian repositories, no third-party open-source-impure repositories required:
- ZFS is available with the package name "zfs-linux". Uses DKMS to stay current. Just like Ubuntu—in fact, maybe this is what Ubuntu shipped all along. Perfect!
- The NVidia driver is available, version 375. That's not the super duper very latest; NVidia is up to 378. But it's pretty fresh! And it uses DKMS too. (I bet if I really cared I could get version 378 without trying too hard.)
- Audacious installed no sweat, but the version is about a year old. (I got 3.7.2, from March 2016; the current version is 3.8.2 from January 2017.)
- PySolFC and Freecell Solver were easy to install, totally current, and integrated correctly. (Admittedly, it's no big deal that PySolFC was current—the latest version is now seven years old)
This is the miracle that is Debian. I violently upgraded it with three years of new software... and it literally Just Worked. The only downside: my "apt" package cache grew to over 4GB and I almost ran out of disk space. Clearing the cache made everything better.
I started thinking: could I really just switch over to Debian Unstable? This was all fine for an experiment, sure, but if I was really going to switch there was even more stuff I'd want. And some of it might be pretty hard to get—some Linux software explicitly says it only supports Ubuntu. So I kept pushing. I tried to install everything I could think of that I'd need, or even want. Here's what I found:
- Encrypted home directories: no problem, just install ecryptfs-utils, already in the Debian repository. Probably exactly what Ubuntu ships—it's just not integrated into Debian's installer.
- Sublime Text 3: their web site claims their ".deb" file is only for Ubuntu, but it installed (dpkg -i) and worked without complaint.
- Chrome: same thing, though there was the usual problem with libappnotify1.
- Steam: I downloaded the package directly from Valve and it didn't work. But it turns out, it's actually available in the Debian Unstable "non-free" repository. I followed their instructions, which required me to install some 32-bit packages, and... it worked! I was even able to download and launch a game.
- Ultratron, a slick Java game with whizzy graphics. It didn't work first try, but I stuck with it. Ultimately I had to find and read its log file, do a little googling, and install some more 32-bit packages, and... it worked!
- GNOME 3 running on the aforementioned Weston: yup, just install some packages. It worked so well I forgot I was running it! (I did eventually hit one snag: the Synaptic package management GUI doesn't work under Weston. The window just doesn't come up. Huh.)
I guess it's not surprising that all my usual Ubuntu stuff worked on Debian. Ubuntu is based on Debian—it's fresher, and somewhat commercialized, but it's Debian. Debian and Ubuntu are so similar that all the "Ubuntu-only" stuff ran fine.
For now, I'm going to stick with Ubuntu GNOME. It's working fine, and Shuttleworth hasn't made it uncomfortable... yet. But it's nice to know that if I want to jump ship from Ubuntu, I can switch over to Debian Unstable and barely notice the difference!
An Adventure In Buying Home Audio Speakers
originally posted: 2014-12-19 23:43:22
True story: up until five years ago all I ever had were cheap all-in-one stereos that came bundled with speakers. It was all I could afford. Oh, how I dreamed of owning an expensive "component stereo"! That's where you have a separate receiver, turntable, tape deck, eight track, and speakers—gosh, maybe even a subwoofer!
Finally in September 2009 I took the plunge and bought a component stereo. But by then you didn't need all those...
Continue reading An Adventure In Buying Home Audio Speakers
The 2014 Lenovo X1 Carbon: Lenovo Giveth, And Lenovo Taketh Away
originally posted: 2014-06-19 16:57:13
If I could stand using trackpads I'd probably buy Apple laptops. Apple laptops have amazing build quality. And since they sell so many of them, an enormous ecosystem has emerged behind them—they get lots of neat peripherals, and you can get them fixed anywhere. Sadly I hate trackpads—my laptop mouse control of choice is the little rubber joystick mouse.
So I only buy Thinkpad laptops. Thinkpads also have excellent build quality, and tend to run Linux...
Continue reading The 2014 Lenovo X1 Carbon: Lenovo Giveth, And Lenovo Taketh Away
Bound Inner Classes For Python
originally posted: 2013-12-24 09:39:02
(This blog entry is my contribution to the 2013 Python Advent Calendar. I'm the entry for December 25th,; however, due to the time zone difference between here and Japan, I'm posting it during what is to me the morning of the 24th. Merry Christmas!)
In Python, something magic happens when you put a function inside a class. If you access that function through an instance of the class, you don't simply get the function back. Instead you get a new object we call...
Continue reading Bound Inner Classes For Python
Getting 7.1 HDMI Audio Working Under Ubuntu
originally posted: 2011-11-19 23:40:01
I run Ubuntu and XBMC on my home theater PC (hereafter HTPC). I connect my HTPC to my receiver and TV via HDMI. The HTPC is an nVidia ION 2 machine, so it's using nVidia's HDMI implementation. I also have a full 7.1 speaker system. But out-of-the-box, Ubuntu refused to recognize my full 7.1 system. All it would let me choose were stereo and 5.1 configurations.
After beating my head against this for a day or two I finally stumbled on the solution. The trick is...
Continue reading Getting 7.1 HDMI Audio Working Under Ubuntu