I recently moved from Ubuntu to Fedora. It seemed like the right time for it. I just got a new computer, so I’d have to do a fresh install of something anyway. And on the day that my computer arrived, the Fedora 15 beta was released. Perhaps it was meant to be?

Table of contents:

Why switch?

I have a number of reasons for trying Fedora, but the biggest few are:

To hack

Most simply, I want to hack on gnome-shell, and Fedora is currently the only distro to include it. It’s entirely possible that I’ll switch back to Ubuntu in 6 months time, when gnome-shell is supported. But I’d rather not put my project on hold until then.

To see what’s out there

I’d like to see how different distros actually are. Ubuntu was the first linux distro I used at home, and I feel it’s worth knowing what things are different / better / worse between distros. I’m pretty adept at maintaining my own preferred system configuration, so in theory it should be reasonably painless to switch.

Ubuntu is a bit of a control freak

Ubuntu has a reputation for being heavily patched, which can interfere with submitting upstream bug reports and such. I heaven’t really experienced that either way, but many recent changes in natty are Ubuntu-specific patches that I disagree with. It is starting to feel to me like Ubuntu is becoming the HTC of linux - HTC provides great android phones, but they keep sticking their foot in and messing with the software, which in my experience has led to more bugs, slower software and a general muddying of the android experience.

I have far greater faith in canonical’s ability to produce quality software than I do for HTC (and canonical does actually contribute things upstream), but the analogy still holds to some degree. Ubuntu wants to differentiate itself from upstream and other distros, but personally I would prefer a less opinionated distro. I have heard that Fedora is closer to upstream sources, and is governed more by the community and less by Mark Shuttleworth (who I’m sure is a great guy, but that doesn’t always make him right).

So, having some of my reasoning out of the way, let’s delve into how it’s going so far. Note that this is only a comparison to Ubuntu, not other distros - I haven’t actually used anything else (yet).

How’s Fedora?

Overall, it’s pretty nice. I’ve had a few issues with system configuration and kernel modules that Ubuntu makes easier, but I’ve also had a bunch of bugs disappear and things work better than they did in Ubuntu. I don’t think either distro is wildly better than the other, but so far I’m personally happier with Fedora.

Package management

For most users, the biggest difficulty in setting up a new system is simply the package manager, its interface, and actual package names. There’s pretty much the same selection of software, it just might have different names. This probably affects developers more than end-users, as most of the different names are for libraries.

I think I like yum a little better than apt, as it’s command line interface seems more clean and logical. But really, they do the same thing and they both manage it just fine. rpm commands are just as archaic as dpkg ones, but this cheat sheet covers all I really need for both of them.

Yum also does a lot more automatic refreshing, which is convenient because you don’t have to remember to do it yourself (I’ve had some bizarre apt sessions due to stale package data), but can be annoying when you forget the -C (cache) option for a simple search or info operation that gets blocked by a metadata refresh.

The Ubuntu software center is a really nice UI, and something that I hope appstream will bring to the other distros soon. But the packagekit-based UI in Fedora is more than enough for me. One neat feature is that after installing a package, it will list the user-facing applications that were installed, tell you their menu heirarchy locations, and allow you to run any of them. Much better than hunting in the “Applications” menu looking for that thing you just installed.

One of the benefits of Fedora using PackageKit (or maybe it’s yum’s doing?) is that the package manager isn’t so blocking. Operations can still only proceed one at a time (although read-only operations seem to work while other things are happening), but it’s not like on Ubuntu where you can’t run any apt commands while you have synaptic open.

One random note, yum info tells you what repository an installed package comes from. I can’t believe I haven’t found the apt or dpkg invocation to do the same, but I’ve looked, and it shouldn’t be that hard.

PPAs and private repositories

I believe Fedora has a similar mechanism to launchpad PPAs, although it’s not as widely used and possibly not as easy. That doesn’t really bother me, as I prefer to use 0install for as many non-distro applications as I can. I could do a whole post about this, but PPAs solve the problem for one step (“I have nonstandard software that depends only on standard libraries”). It does not solve the problem in general (“I have nonstandard software with arbitrary dependencies”), nor does it attempt to address the very important issue of “I want to use different versions of libraries that system components depend upon” (a.k.a dependency hell). It all seems like a lot of effort for a reasonably limited solution. I strongly believe that 0install has it right, so am unlikely to ever embrace PPAs or whatever it is that Fedora has in their place.

Kernels and encryption and security, oh my!

This is where the Fedora transition was not so smooth. Ubuntu has a neat facility for encrypting your home directory, or a Private folder within it. It uses ecryptfs, which is available on Fedora, but not default and not really exposed in the UI. I did get it installed, but had troubles with the kernel modules not being loaded automatically.

SELinux is probably a great thing, but I’m not sure I’ll get much use out of it. It put itself into terrified mode when I tried to run things with my /home directory copied over from my old Ubuntu disk, as evidently it was lacking important SELinux metadata. But once I found out how to tell SELinux to relabel my hard drive, it hasn’t made a peep. I’m still not sure if I’ll get any benefit from it, but it sounds like a good thing to have.

I also had problems with VirtualBox not having the right kernel modules loaded, although it did work once (I think I upgraded my kernel since). I’m running a beta, so this hopefully isn’t normal behaviour.

On a positive system-level note, from everything I have read systemd sounds like a much better boot system than upstart, although I have little experience with either.

Free as in beards

Fedora, like debian, doesn’t ship any non-free codecs (mp3, h.264, etc) or other patent-encumbered technology (flash) by default. Ubuntu does via a separate repository that can be enabled at install time (or after). This is much nicer for users, although I completely understand and sympathize with the puritan position.

Of course, I still need the damn codecs, and I need flash. So there is more work in Fedora to get the appropriate repository set up (rpm fusion), and I ended up installing flash manually because of dependency troubles. That’s possibly related to the fact I’m running a beta.

Fedora also doesn’t package chromium in the default repos, for what sound like pretty sane reasons. It sounds like google is more to blame than Fedora on that front, but again the user is the one who has to deal with the slight inconvenience of adding a third-party repo.

Miscellaneous bugs

These are presumably not common to many users, but gee they annoy me.

Pros for Fedora:

  • gpg-agent actually works out of the box
  • my keyboard’s volume_up key is no longer irrevocably bound to activate the screensaver. For 3 Ubuntu releases straight I had to manually cripple the gnome-screensaver system binary in order to use my keyboard properly.
  • I can change the GVim icon with a theme (it seems to be hard coded into the binary in Ubuntu)
  • Pretty much all the things I mentioned in my Natty UI Fumbles post.

Cons for Fedora:

  • I can’t seem to enable rgba subpixel smoothing.
  • Guake crashes on startup. Probably a general gnome bug.
  • nautilus keeps forgetting my background image, and turning the screen white. I’m using a gnome-shell hack to get it to display the desktop, so that could be why ;)

Equally broken:

  • Both unity and gnome-shell fail to raise the window you alt-tab to if you have enabled focus-follows-mouse and your mouse does not happen to already be over the desired window. That is going to annoy me.
  • Suspend resets keyboard layout. This bug probably exists in Ubuntu, but I could never get my old computer to come back from suspend anyway (probably a hardware / kernel thing).

The shell

Oh, the shell.

This hopefully won’t be such a hot topic in 6 months time, but right now it’s probably the biggest factor anyone needs to consider when upgrading / installing either of these distros.

Overall, I much prefer gnome-shell. It seems reasonably well designed and calm (for the most part), whereas my experience with unity made it seem more haphazard. But overall, there seem to be good ideas in both, and I hope that the best ideas from each will eventually make it into the other. Right now I have plans to work on gnome-shell extensions, so there is simply little point in me running an operating system that prevents that.

Particular notes, while I’m on the subject:

  • I can’t believe gnome-shell doesn’t display the contents of your Desktop folder. You can enable it with gnome-tweak-tool, but it’s a terrible default (and it keeps losing my background image).
  • The choice to not have an actual “shut down” option in the session menu is pure crazy. Easily fixed with an extension, but still a terrible default.
  • Alt-tab seems much better thought out (in combination with alt-`) than unity.
  • Launching multiple apps at once is tedious, because the dock is only visible in overlay mode, and overlay mode disappears whenever you launch an app. So you have to keep tapping the windows key.
  • I didn’t think I would, but I actually quite like the automatic workspace management now that I’m used to it. I still have trouble if I want to swap two workspaces (If you move everything out of a workspace, it disappears!) but other than that it’s treating me well.
  • There’s no way for applications to dynamically add things to the top panel. I hope this will change in future releases, but the persistent notification / applet problem in general seems like it has simply been swept under the rug (or hidden in the bottom-right corner ;)) for now.
  • Speaking of issues that have been ignored, I’m baffled by the treatment of minimised windows (the button has been removed, but the functionality is still there. They don’t go anywhere, and still clog up the overview mode). I don’t know if that will change in future releases, but I feel something has to change…

If you’re new to the shell or don’t know how it works, the cheat sheet is a good starting point.

I still think the gnome shell is a much improved interface over gnome 2, and hopefully it’ll keep getting better over the next few releases. Plus, it’s bound to be heaps better once I’ve added tiling window management to it ;)

A Team player

There’s a little bit of a theme in this post. My personal preference is for distributions not to try too hard to differentiate, and rather focus on bug fixing and integration work, as well as improving upstream software rather than forking it. For example, Fedora sticks to gnome 3 and PackageKit, which are both cross-distro initiatives. While Ubuntu has written its own desktop environment (Unity) and, still doesn’t have a working packagekit UI.

I’m particularly biased with the packagekit thing because 0install uses it to install dependencies that are only available as system packages (because they have not been ported to 0install). 0install is my absolute favourite piece of software (well, maybe a tie with vim). It’s a dependency manager for cross-distro, cross-platform, decentralised applications and libraries. I find it ridiculous that every distro has it’s own name for the exact same software, and I have started using tiny 0install feeds to simply abstract over that for the packages that I need to depend on for my own software and scripts. Happily, almost all of the 0install feeds I’ve published (90+ at last count!) worked just fine on Fedora without additional effort on my part.


Overall, I’m currently happier with Fedora then I was with Ubuntu. I’ve listed a lot of issues here, but I’ve fixed a lot of them (and ubuntu had its fair share). It was definitely a little harder to get set up the way that I want, but that’s a one-off effort. And a lot of it is due to very new and very recent decisions (like the shell), which I hope will flatten out in further releases so that users are able to run whatever software they prefer. I’m thankful for the work Ubuntu has done to invigorate the linux desktop space, but right now I’m enjoying a distro that doesn’t feel such a frantic need to differentiate.