I'll come running back to GNU

June 9, 2013 Andrew Bruce

I’d finally had enough of waiting for my MacBook Pro’s hard drive platter to spin up and grind away, so I ordered a new Solid State Drive. When it arrived, I was faced with the potentially drawn-out process of setting up a new OSX installation, which might have involved proving I owned a copy of Lion or whatever beast I currently had installed. Alternatively, I could have cloned my old disk, but I’d heard that was sometimes problematic, and the fresh disk felt like an opportunity to wipe the slate clean. I chose what I thought must by now be a path of less resistance for many developers: installing Linux instead.

This wasn’t a wild jump into the unknown: I had run various flavours of GNU/Linux since I was a teenager, eventually settling on Ubuntu. I bought a dedicated Ubuntu laptop from Dell when they came out, but caved and bought this MacBook Pro when I could afford it, around 2008. Persuading myself that I needed to run Photoshop for my fledgling freelance career, it struck a good balance between the benefits of the open-source community and the plug-n-play reliability of a popular commercial OS. Development on OSX is pretty easy these days, but there are still some weird issues. Installing Ruby on OSX was non-trivial last time I tried, homebrew eases some dependency installation pain but introduces its own set of maintenance chores, and Xcode is a bit of a dog to keep up to date.

There’s some conventional thinking in the Linux desktop world that says old hardware has a better chance of working. The MacBook Pro 5,5 that I have is a recognisable set of venerable components (“sudo dmidecode -s system-product-name” gives you the version of the Mac hardware you are running). However, the latest Ubuntu 13.04 sets things up so that I:

  1. Am greeted with a corrupted boot screen each time I start the computer
  2. Can turn my machine into a brick by simply closing the lid
  3. See a long horizontal shadow at the top of full-screen videos
  4. Am regularly thrown into a different app when I use two-finger scrolling

Granted, this is a far cry from, “my wifi and sound took three weeks to set up and still didn’t work well”, but it’s hardly the smooth experience that Mac users are used to. Here are the fixes.

Corrupted boot screen

Use proprietary nvidia drivers. These work better, but you’re then stuck with a permabright, battery-sucking screen because the keyboard brightness controls don’t work. This can be fixed by getting your hands dirty in a config file (note the older version of Ubuntu this was solved for). Not awesome.

Brick state

This happens because a lid close defaults to suspend, and suspend breaks the open source nvidia drivers. A reboot doesn’t seem to fix it. Kudos for getting so far with reverse engineering, but I wasn’t prompted with an option to choose the proprietary drivers. I’d rather check a box that says “non-free software that works” over “free software that ruins your day”. This prompt used to be present on previous versions of Ubuntu.

You can sometimes recover from the brick state by moving to a regular non-X console (ctrl+alt F1) and killing lightdm with sudo. Otherwise, you’re in boot-from-CD land. How many non-technical types do you know who can / would want to work that out?

Horizontal shadow of panel when running videos full-screen

This one is interesting. The Ubuntu team knew about the problem, but shipped anyway. I can sympathise with the difficulties of maintaining a dual server and desktop OS, and with sticking to a deadline, but if the 80% case could have been solved by loading Workspace Switcher by default, why not do that?

Two-finger scrolling occasionally throws you into another app

This happens because Unity has hardcoded gesture support for touchpads. Three finger double-tap means ‘take me to the previous window’, and three finger tap then tap-and-hold means ‘open a super-sensitive window switcher that I control with the mouse’. I never want to change windows with the mouse.

There are several solutions to this problem floating around, but they all involve modifying the Unity source code and recompiling. This is crazy. Please make gestures optional!

In summary

I had previous experience with dealing with this category of problems, but someone who isn’t a full-time computer nerd might not have so much fun dealing with these bugs. Many of them seem to be reflective of Ubuntu’s confused attitude towards free software. The OS seems to push free drivers onto the user, but they aren’t always ready for prime time. Are end-users being used as testers?

Perhaps I’ll give it a few weeks before I cave and reinstall OSX. Most of the creases are ironed out now, but if I have to spend another few hours googling for solutions to mindless bugs, I may just give in to temptation again. YMMV.

About the Author

Biography

Previous
22 Billion Served: Julien Genestoux of Superfeedr
22 Billion Served: Julien Genestoux of Superfeedr

Superfeedr delivered a total of 22,408,346,028 entries at the time of this interview. Read about how founde...

Next
Ember.js and Flot charts
Ember.js and Flot charts

Update (Jun 10th, 2013): Use custom view helpers and view bindings to make it simpler and more reusable. Co...