Leaves are turning. Temperatures have dipped. These are sure signs—if you live in the Northern Hemisphere, at least—that Canonical's Autumn release is upon us. Things are a bit different in 2019, however. Not only is Ubuntu 19.10 nicknamed Eoan Ermine (no, I don't know how you pronounce it either), but it's the best non-LTS Ubuntu release Canonical has ever put out.
I should qualify that statement somewhat, because really, as the newest version, it had damn well better be the best Ubuntu ever. But there's more than recency bias behind the sentiment. I've been reviewing Ubuntu for 10 years now, and I was using and interacting with this distro in some form or another for another three or four years before that. After spending recent weeks with Ubuntu 19.10, I can say confidently it is quite simply the best Ubuntu Canonical has ever released.
The first reason I like 19.10 so much is that it feels insanely fast. Everyday tasks like opening applications, dragging windows, activating the search interface, and even just moving the cursor around are all noticeably faster than in 19.04. The speed boost is immediately noticeable from the minute you pop in the live CD, and it's even faster once you have 19.10 installed.
I happened to be testing a top-of-the-line MacBook around the time I first installed the 19.10 beta on my aging Lenovo x240, and it instantly made the Mac feel like a sloth. Ubuntu 19.10 ran circles around the Mac even on much, much less powerful hardware, and nothing says success during testing like software that makes old hardware feel newer. Even if that were all you got out of Ubuntu 19.10, I'd call it a win.
But as is typical of Ubuntu's October release, a number of new features that are not quite ready for prime time yet show considerable promise—those features include support for the ZFS file system. While still clearly labelled "experimental" (in all caps even), I have not had problems running 19.10 on a root partition formatted with ZFS. That's not to say that you should go try it—it is EXPERIMENTAL, after all—but it appears that what's really lacking are tools for managing and working with ZFS. Using ZFS enables some powerful backup and replication possibilities, but the tools for working with ZFS in Ubuntu remain somewhat limited for now.
But talk of the extra features can wait. Ubuntu 19.10 is so fast, it's worth digging deeper into the speed improvements and what's going on under the hood.
Like GNOME, but fast
Most improvements in 19.10 can be attributed to the latest release of GNOME 3.34, the default desktop for Ubuntu. However, GNOME 3.34 is faster largely because of work Canonical engineers put in. (As an aside, I think the current state of GNOME and the work Canonical has done to make it better are the best argument around for why Canonical made the right call when it shut down Unity.)
If you'd like to understand the finer details of what Canonical did to improve GNOME and how it did it, there's a post over on the Ubuntu Discourse board that goes into considerable detail. The biggest takeaway is that Canonical's engineers looked not for the typical "hot spots," places RAM or CPU usage spiked, but what it calls "cold spots." It wanted to find places where GNOME "was idle instead of updating the screen smoothly."
Canonical developers identified a bunch of places where this was happening. The three that jumped out at me are improvements to how Mutter refreshes, changes that transferred some work from the GPU back to the CPU, and a fix to frame lagging in Xorg. The latter is interesting because one of the things that I noticed in this release is that GNOME under Wayland did not feel dramatically faster than under Xorg the way it did for me in 19.04. I quickly lost my Wayland envy with the speed improvements in this release.
Canonical's write-up of the work done to improve GNOME is also interesting for the long list of what didn't work and how wrong some of the developers' initial assumptions were—especially regarding GNOME's use of JavaScript. It turns out JavaScript had next to no effect on performance. So sorry JavaScript haters, but "assuming that JavaScript is slower than everything else written in C" is evidently a bad assumption.
Canonical is not done improving GNOME. The project's goal for the next release is better performance on faster, modern hardware. Then in 20.10, it wants to improve performance on older, slower machines. As Canonical's Daniel Van Vugt puts it, "the future of Gnome Shell is bright and worth getting excited about."
But let's not get too far ahead of ourselves, because even the present is pretty bright. As primarily an i3 user, I still find GNOME Shell overkill, but in 19.10 it's fast enough that I no longer rush to uninstall it.
Beyond GNOME, this release sees some tweaks to Ubuntu's default "Yaru" themes. Yaru is a mix of light and dark elements, though as of 19.10 it's leaning more toward the light end of the theme spectrum. Personally I rather like the new default look. Ubuntu's mix of light and dark elements is well thought out. Updates in this release include making notifications, menus, and dialogs all share the same light skin, while the top GNOME Shell panel remains dark.
If the changes aren't to your liking, though, both a full light theme and a full dark theme are included as well. However, to change themes you'll need to install GNOME Tweak.
As detailed above, the big news in GNOME 3.34 is the speed boost, but it also has a handful of new features worth noting. Two of the best new features are in the main search view and in the application overview section. Here you can now group applications into folders, making it easier to organize and find frequently used apps. Creating a folder works just like it does on mobile OSes—drag one app icon onto another and a folder will automatically be created.
In a related feature, you can now order the types of results shown in GNOME's global search feature. To do so, head to the Search panel in settings where you can now, in addition to turning items on and off, drag and drop to reorder them. For example, if you want files to always be the first results that show, just drag the files option to the top of the settings list.
ZFS and the kernel
The Ubuntu 19.10 installer includes an option to format the root drive using the Z file system, better known as ZFS. Again, this support is labelled "experimental" (ALL CAPS), and it bears heeding this warning. Do not format your root disk to ZFS on production hardware. I went ahead and formatted a root drive with ZFS on a machine I have to return anyway, and I have had no problems as of this writing (which, frankly, is amazing). But if Canonical changes some implementation detail between now and whenever ZFS support is declared stable, that data could be lost. So to say it once more: don't use it now. Long-term, having kernel-level support for ZFS is a huge deal, not the least because Canonical thinks the license allows for it.
Ubuntu has been working on ZFS support for quite a few years now. It started with file-based ZFS in 15.10, which drew on the work of the ZFS On Linux project. Later, that support was extended to ZFS for containers in Ubuntu 16.10. Having used ZFS for my LXC containers for nearly a year now with no problems, I can say that Canonical's handling of the ZFS implementation details makes using ZFS with LXC/LXD no different from using any other file system.
Fedora and other distros also have good support for ZFS, but most distros have thus far not included kernel level support. One reason may be that ZFS is licensed under the Common Development and Distribution License, which some claim is incompatible with the GNU General Public License. Canonical and others have disagreed, but Canonical is one of the first to actually ship with ZFS in the kernel. Ubuntu 19.10 adds support for ZFS as the root file system, and the release offers tools to create and partition a ZFS file system layout directly from the installer.
If you're not familiar with ZFS, you may be wondering why you should care. It's possible you shouldn't. There's nothing wrong with ext4, the default file system used by Ubuntu (and nearly every other distro). ZFS, however, enables some powerful tools that you wouldn't have access to otherwise, including pooled storage, disk snapshots, data integrity verification, and a good bit more. A full background on ZFS is beyond the scope of an Ubuntu update review, but for those of us using Ubuntu as a workstation, the two biggest wins ZFS offers are probably pooled storage and disk snapshots.
Because ZFS acts as both a file system and volume manager, it can create a file system that spans multiple hard drives (this is a "pool" in ZFS parlance). How many disks can you pool? Fun fact, Oracle has done the math, and fully populating a 128-bit ZFS storage pool would require more energy than boiling the oceans. Which is to say, ZFS has large datasets covered.
The disk snapshots feature is more useful on your root partition. Imagine for a moment you have root formatted to ZFS and snapshots enabled. You install an update that breaks some piece of software you rely on. No problem, you can just roll back the file system to a prior state, effectively wiping the update. This is where Ubuntu is headed, but it's not there yet. Getting ZFS on the root file system is easy (though, say it with me... EXPERIMENTAL), but there aren't really any tools yet to manage and take advantage of ZFS's features. If, however, Canonical can bundle a nice GUI for interacting with and managing ZFS, it's going to have an edge over the competition, especially in the enterprise market.
The kernel in 19.10 is based on Linux kernel 5.3, which is notable for adding support for the new Radeon RX 5700 series graphics card. It also offers the beginnings of support for Intel Speed Select, which adds some easier power-tuning options.
Also noteworthy under the hood in this release is the inclusion of proprietary Nvidia drivers on the Ubuntu installation disk. That means you can now install the Nvidia drivers right from the start without any glitchy post-installation hassles.
Snaps and bugs
Ubuntu 19.10 ships with quite a few more default apps as Snap packages, notably the Chromium Web browser. This change is coming for all versions of Ubuntu once the kinks have been worked out. This will save considerable engineering effort on Canonical's side since it eliminates the need to build every new version of Chromium for all supported Ubuntu releases.
I had no problems using the Snap version of Chromium, and the only real indicator that it's a Snap is that it takes just a bit longer to open than usual. That said, there are quite a few reports of bugs over on the relevant Ubuntu Discourse thread. The main complaints seem to center around the Snap version not adopting the look when using other GNOME themes. For some other users, there have also been problems with Chromium save dialogs. Edge-case issues have come up when using some advanced features of the Chromium developer tools, too.
While I can see how moving Chromium in particular to a Snap would be a huge time and effort savings for Canonical, judging by user feedback, it's not quite there yet. Thus far, it hasn't been pushed out to users of older Ubuntu releases.
Ubuntu 19.10 ships with new "Media Sharing" toggle in the Settings app, under the Sharing panel. It shares files that any DLNA or UPnP compatible device can access, which means it should have out-of-the-box support for sharing files with smart TVs, some consoles (Playstation 4, for example), and other devices on your network. There are a couple of things to note here: first, this feature shares three folders by default—Pictures, Videos, and Music—and it shares them to every device on your LAN. If you want more fine-grained control, you're out of luck.
The other more serious note is that the initial release of Ubuntu 19.10 shipped with a bug that enabled this sharing by default. That has been fixed, but if you installed 19.10 right away, definitely make sure to update your system and double-check to make sure the sharing feature is off. I tested this feature using VLC on Android to play videos. Everything works fine, but it lacks the polish and speed of Plex. Given how easy it is to install and run Plex (or my personal favorite of the DLNA players, Jellyfin), I'd suggest using a third-party media-sharing app.
One final note for those of you waiting on support for the Raspberry Pi 4, Ubuntu has published a roadmap. The short story is that Ubuntu 19.10 support for the Raspberry Pi 4 model B is currently limited to the 1GB and 2GB versions. Canonical's Galem Kayo writes on the Ubuntu blog that, "due to a kernel bug, USB ports are not supported out of the box in the official arm64 image on the 4GB RAM version."
Canonical's engineers have identified the necessary kernel fixes and are currently testing them, but so far there's no official support for the 4GB model. There is, however, a workaround. I have successfully installed 19.10 on my 4GB Raspberry Pi 4 using a boot param to tell the kernel it only has 3GB of RAM. That's hardly ideal, but if you want to play around with a Raspberry Pi today, it's at least technically possible to do so.
Conclusion
Ubuntu 19.10 is unusual for an October Ubuntu release in that I would call it a must-have upgrade. While it retains some of the experimental elements Ubuntu's fall releases have always been known for, the speed boosts to GNOME alone make this release well worth your time. If you prefer to stick with more stable releases, most of what's new in 19.10 will eventually be backported to 19.04 and possibly even the last LTS release, 18.04.
Still, unless you're unflinchingly committed to the stability of LTS releases, I see no reason not to upgrade. As I said at the start, Ubuntu 19.10 is quite possibly the best release of Ubuntu Canonical has ever delivered. It's well worth upgrading if you're already an Ubuntu user, and it's well worth trying even if you're not.