Debian 8: Linux’s most reliable distro makes its biggest change since 1993

This article was published in Ars Technica, you can view the original there, complete with graphics, comments and other fun stuff.

Debian 8—nicknamed “Jessie” after the cowgirl character in Toy Story 2 and 3—debuted last week, but it feels overdue. The release was in development within the Testing channel for quite a while, and, if you recall, Debian Linux consists of three major development branches: Stable, Testing, and Unstable. In order for a new iteration of Debian to officially go public, work must progress through each stage (starting in Unstable, ending in Stable). But it wasn’t until the official feature freeze for this release in November 2014 that the contents of Testing really became what you’ll actually find in Debian 8 today.

If all that sounds complicated and slow, that’s because it is. In fact, that’s kind of the point.

Debian Stable is designed to be, well, stable. The foundation of Debian is built upon long development cycles and a conservative approach to application updates.

So as a general rule, Debian Stable lags behind pretty much every other distro on the market when it comes to package updates. If you want the latest and greatest, Debian Stable simply isn’t the distro for you. While Debian 8 may bring a ton of new stuff to Debian, it has almost nothing the rest of the Linux world hasn’t been using for, in some cases, years. What’s more, many things in Debian 8 are still not going to be the latest available versions.

The Debian family tree.
Enlarge / The Debian family tree.
However, Debian 8 has one giant exception to that general rule: systemd. More on that momentarily.

Why use Debian? There are plenty of philosophical reasons: the legendary Debian social contract, the community, and all included software in the repos happens to be free (as in freedom), long a hallmark of Debian.

The more practical appeal of Debian lies in its legendary stability. I’ve been running Debian servers since 2005 (Sarge) and have never had a server crash. This dependability is part of the reason Debian is the base for dozens of downstream distros.

Not everything downstream uses the Stable channel as its base. In fact, it’s worth noting that perhaps the most famous project downstream from Debian, Ubuntu, is built off the package base in the Unstable channel. Still, Debian Stable remains one of the most popular Linux distros. This is particularly true for Web servers where, according to stats from W3Techs.com (which should be taken with a grain, if not a generous helping, of salt), Debian accounts for the largest percentage of Linux servers on the Web: 32.3 percent.

All of this makes Debian Stable updates a much bigger deal than faster moving distros like Ubuntu or Fedora.

And because Debian 8 makes the leap to systemd, the new version just might be the biggest change in Debian since the first release back in 1993. Debian is justifiably famous for being so stable you could blindly type apt-get dist-upgrade on a production box and get away with it. This time, though, there’s systemd to contend with.

What’s new in Debian 8

There is far more to Debian 8 than we can cover; there’s probably more than even John Siracusa would be willing to cover. Debian’s official release notes report that 24,573 software packages have been updated (that is, 66 percent of the distro), but amid that firehose of updates, systemd stands out.

systemd

Unless you’ve been living under a rock, you’ve probably caught wind of systemd in the last year or two. Most likely what you heard was froth-mouthed exclamations about how it’s either the second coming of the Penguin or else the NSA-backed devil incarnate. There are, it seems, no moderate opinions about systemd. The debate surrounding it has been anything but civil, even in the orderly Debian community.

To understand why, you need to understand how your operating system starts up and runs all the various processes it runs. Pardon the analogy, but just as there was “one ring” in Middle Earth that controlled all the rest, in Linux one application controls all the others. This is the init (short for initialization) system. The init system is the first process started when you boot and the last to shut down. In the time between startup and shutdown, the init system acts as the master controller of all processes, and it’s traditionally assigned the process ID 1.

There are quite a few init systems out there, but most Linux distros (Slackware and Gentoo being notable exceptions) have been using SystemV. SystemV is outdated and riddled with crufty, often no longer needed code. It’s long overdue for a replacement. Few debate that, but start asking what should replace it and you’ll soon see the knives come out.

Systemd is designed to replace SystemV, providing an init system that’s cleaner, faster, and considerably easier to use. At least, that’s the sales pitch.

Behold, systemd.
Enlarge / Behold, systemd.

Most of the contention about systemd arises because systemd isn’t just an init system. Rather, it’s an init system that wants to manage more than processes. If your distro of choice opts to run systemd with all the bells and whistles, it will be running some 69 binaries. Some call that monolithic, but systemd creator Lennart Poettering disputes that charge, arguing that what people don’t like is that systemd all ships as a single tarball. It’s all updated and maintained in a single codebase.

The very centralized nature of the project is what led Canonical founder Mark Shuttleworth to call systemd “hugely invasive.” He went on to say “one of the ideas in systemd that we think is really bad is to bring lots of disparate pieces of technology into a single process. So lots of formerly-independent pieces of code, which happen to be under the control of folks driving systemd, have been rolled into that codebase.”

Shuttleworth later acknowledged that “it’s still possible to build independent packages of the different pieces from that code,” which has long been Poettering’s response to the monolithic charge. But there’s no denying that systemd throws out the Unix philosophy of small things with narrowly defined functionality—that doesn’t mean it’s bad though.

Much of the debate about systemd is academic at this point because here’s a truth that you’ll discover in Debian 8, Ubuntu 15.04, and just about every other major distro around: systemd is here.

You can disable it and boot with SysV if you like, but systemd isn’t going away. Your long-term options are to either embrace it, cast your lot with Devuan, or make the switch to FreeBSD.

For me, since systemd appears to be here to stay, and it’s the default starting with Jessie, it was time to roll up my sleeves and RTFM.

While testing, my experience with systemd was decidedly mixed. On the desktop, I hardly notice it. I doubt anyone using desktop Linux for everyday tasks like e-mail, Web browsing, office docs, photo editing, and the like will either know or care that they’re running systemd. I have encountered a couple of problems with the systemd journal feature when running Debian 8 in a virtual machine, but on actual hardware the same problem has not come up.

Debian 8 on the server is a different story, though. I’ve been slowly migrating my sites to Jessie-based servers over the past six months and have had a few hiccups here and there. For example, while systemd likes to say it’s fully compatible with older init scripts, that’s not completely true.

In my case, enough has gone wrong that I suggest you don’t jump in immediately with both feet.

Before you even think of upgrading a server to Debian 8, be sure to read through the systemd incompatibilities list. In particular, note that if you use tools like /sbin/chkconfig you’ll quite possibly be getting incorrect or at the very least incomplete information when systemd is in charge. Also note that systemd services are “executed in completely clean contexts,” which means not even $HOME is set. If you have init scripts depending on such variables, they will break.

There’s also systemd’s journal tool, and it takes some getting used to if you’re more familiar with syslog. That said, you can run syslog alongside journal if you prefer not to switch up your workflow too much.

In fact, you can still run Jessie without systemd. All you need to do is use preseed to replace systemd with sysvinit at the end of the install (check out the Debian wiki for details). This method works well enough on the server, but don’t try it with a desktop environment installed.

Ultimately after finding some new systemd service scripts for the handful of things I need—Nginx, Gunicorn, and some other Web app tools—and figuring out how to set up the journal to actually log useful information, I’ve managed to upgrade to Jessie. On one hand, no one likes changes, and I could have done without learning a new syntax for init scripts (though systemd files are at least much easier to read and write). But once you’re over the migration hurdles and headaches, I’ve found systemd is, well, just fine.

Debian 8 on the desktop

There’s more to Debian 8 than systemd, particularly on the desktop where, as noted, most users will probably not even notice it.

The first thing you’ll likely see when installing Debian 8 on the desktop is that there are more desktop choices, and picking one is much simpler than before.

The wide variety of Desktop options in Debian 8.
Enlarge / The wide variety of Desktop options in Debian 8.

Quite a bit of work has gone into Debian’s tasksel app. This application helps you set up Debian and install all the software you need. The installer now offers a list of desktop environments under the generic “Debian Desktop Environment” option. If you just leave everything at the defaults, you’ll end up with GNOME 3.14 for your desktop, but you can change that by selecting the options to install Xfce (briefly considered for the default option), KDE, Cinnamon, MATE, or LXDE. Of course, you can opt to install nothing and then install the alternate desktop environment of your choice after the base installation. If you prefer something really lightweight like Openbox or Xmonad, this is the way to install it.

In short, it’s tough to really say that Debian has a default desktop. To test things out, I tried Debian with GNOME, Xfce, and Cinnamon.

Again, Debian takes a conservative approach, so you’ll only get GNOME 3.14 even though 3.16 was released a few months ago. GNOME 3.14 has a few new tricks up its sleeve, most of which I’ve covered in past reviews.

  <div class="gallery shortcode-gallery">
  <ul>
              <li data-thumb="https://cdn.arstechnica.net/wp-content/uploads/2015/04/debian-gnome-shell-150x150.png" data-src="https://cdn.arstechnica.net/wp-content/uploads/2015/04/debian-gnome-shell.png" data-responsive="https://cdn.arstechnica.net/wp-content/uploads/2015/04/debian-gnome-shell-980x613.png 1080, https://cdn.arstechnica.net/wp-content/uploads/2015/04/debian-gnome-shell.png 2560" data-sub-html="#caption-657143">
        <figure style="height:613px;">
          <div class="image" style="background-image:url('https://cdn.arstechnica.net/wp-content/uploads/2015/04/debian-gnome-shell-980x613.png');"></div>
                          <figcaption id="caption-657143">
              <span class="icon caption-arrow icon-drop-indicator"></span>
                                  <div class="caption">
                   The default Debian desktop: GNOME 3.14.                    </div>
                                                </figcaption>
                      </figure>
      </li>
              <li data-thumb="https://cdn.arstechnica.net/wp-content/uploads/2015/04/debian-gnome-shell2-150x150.png" data-src="https://cdn.arstechnica.net/wp-content/uploads/2015/04/debian-gnome-shell2.png" data-responsive="https://cdn.arstechnica.net/wp-content/uploads/2015/04/debian-gnome-shell2-980x613.png 1080, https://cdn.arstechnica.net/wp-content/uploads/2015/04/debian-gnome-shell2.png 2560" data-sub-html="#caption-657147">
        <figure style="height:613px;">
          <div class="image" style="background-image:url('https://cdn.arstechnica.net/wp-content/uploads/2015/04/debian-gnome-shell2-980x613.png');"></div>
                      </figure>
      </li>
          </ul>
</div>

The standout new features in 3.14 include better high-resolution display support, several of the new GNOME apps like Photos and the redesigned Weather, a new geolocation framework (which the aforementioned Weather takes advantage of), and the first signs of support for Wayland. With 3.14, Mutter (GNOME’s default display manager) can work as a Wayland compositor. It’s not the default though, you’ll have to select this option from the GNOME login screen.

GNOME 3.14 is a step up from previous versions, but it still feels a bit crippled next to more full-featured desktops like Cinnamon or Unity. The Nautilus file manager in particular is a shell of its former self.

Debian’s version of GNOME 3.14 is pretty close to stock, but then there aren’t many ways to customize GNOME or give it a distro-specific feel.

If GNOME is not to your liking there are plenty of other choices, including the increasingly popular Xfce. This being Debian, don’t expect to see the latest version of Xfce (which is a huge update and well worth upgrading to as soon as you can, by the way), instead you’ll get Xfce 4.10. In fact Debian’s Xfce is a bit of an outlier compared to other distros.

Debian with a barebone install of Xfce.
Enlarge / Debian with a barebone install of Xfce.

Debian treats Xfce as a very minimalist desktop, and the experience might be a bit different if you’re accustomed to the everything-and-the-kitchen-sink approach of, for example, Xubuntu. In Debian, optional things like the Xfce extras package are not included by default. Naturally you can install the extras from the repositories, but Linux newcomers might not even realize that’s an option. This makes Xubuntu’s approach seem a bit friendlier.

The best desktop experience in my testing has undoubtedly been Cinnamon. Cinnamon atop Debian has been every bit as reliable and nice to use as Cinnamon is in Linux Mint. The only downside is that you’ll only get Cinnamon version 2.2.16, while the latest version of Linux Mint shipped with version 2.4, a not insignificant update.

Debian with Cinnamon (not to be confused with Linux Mint Debian Edition).
Enlarge / Debian with Cinnamon (not to be confused with Linux Mint Debian Edition).

As for default desktop software, Debian ships with favorites like LibreOffice (v4.3.3) and GIMP 2.8, but you’ll also find a few extra apps like GNUcash, GNUmeric, and Abiword. There’s Icedove 31.6.0 (an unbranded version of Mozilla Thunderbird) and Iceweasel 31.6.0esr (an unbranded version of Mozilla Firefox) as well. But yes, Debian opts to ship with the little-used Firefox Extended Support Release, which lags behind its faster-developing counterpart when it comes to the latest and greatest features on the Web.

You’ve probably noticed a theme here; Debian is behind the curve when it comes to version numbers. Why run Debian on the desktop when similar downstream distros like Xubuntu or Ubuntu GNOME or Linux Mint offer arguably the same thing with newer packages and a more polished interface? These are, after all, Debian derivatives—aren’t you in effect using Debian?

The answer I suspect lies in that legendary Debian stability. And many developers like to mimic the server in their local environment. For the average Linux user, though, the downstream derivatives are probably a better bet in many cases. Ubuntu and Linux Mint might not be quite as stable, but they deliver more frequent updates to the applications most people use daily. That means more new features and arguably a better experience. If you want something similar, but for philosophical reasons feel more comfortable with Debian, there’s always Debian Testing.

Debian on the server

If Debian on the desktop is perhaps a bit too far behind to entice today’s user, nearly the opposite is true on the server. There’s systemd to deal with, but once you get past the systemd changes there’s much to love about Jessie here.

Debian’s conservative approach to package updates leads to stability, but it also sometimes leads to terrible packages hanging around. For example, Python developers had to deal with the Python 3.2 package for what seems like an eternity in Debian 7 (unless of course you use backports). Thankfully, Jessie bumps Python to 3.4.

Perl, PHP, and most other common development tools have been similarly updated, if not to the bleeding edge then at least to the latest stable versions. Web server packages like Apache and lighttpd see similar incremental updates in Jessie.

Some things are thankfully missing in this release as well, notably the secure sockets layer protocol SSLv3 is gone by default. That should make for more secure HTTPS connections on the Web (assuming people update).

Kernel

Jessie ships with the 3.16 series Linux kernel, which might sound a tad out of date until you consider that its predecessor, Wheezy, was using the 3.2 series.

There’s been an incredible number of changes since 3.2, far too many to cover in details, but some of the highlights include a host of graphics card improvements (particularly open source Nvidia drivers), EFI boot support, ARM 64-bit support, RAID5 multithreading, Automatic GPU switching in laptops with dual GPUs, and support for nftables, the successor of iptables among many, many other new features.

There’s also been a ton of work put into filesystem improvements with ext4 support getting a lot of attention and much better support for Btrfs.

Should you upgrade?

In a word: Yes. This is Debian. Releases are infrequent and rather massive, so there’s more than enough in the way of new features and package updates to make the update worth it. The caveat is that you should do a lot of testing before migrating your servers to systemd. VPS instances are cheap, so fire one up, install Jessie, and spend a few weeks testing. While it’s stable, Jessie’s systemd init is a big change that takes some time to wrap your head around.

But if Debian is your desktop of choice already, you don’t have as much to worry about with systemd. In fact, you’re unlikely to even notice.