My move to Ubuntu as my main desktop OS has failed. I still use Ubuntu at work as my main desktop OS, but for my home system, I am now back on Mac OS X.

“Death by 1000 cuts” is why.

If you’ve tried this before, or you’re in the Linux community, none of my reasons will be new to you. However, to close out this attempt for my future reference / next attempt comparison I am going to quickly write up what did me in.

Before I go into why, I want to say that Ubuntu is a usable OS. It will likely suit a lot of people’s needs. At work I use the shell, Eclipse, and firefox, but I was hoping that Ubuntu would come close to matching OS X for all my computer needs. I would have stayed had the experience been even slightly close.

I am also going to say “Ubuntu” and “Linux” to mean “the system”. I know that in reality some of this is with Gnome, or the package manager, or even separate apps, but I am going to just say “Ubuntu” to save time.

Key bindings / System configuration

To me, as a developer, the most important thing about a system is the keyboard. I need to be able to type fast, and I need the system to do what I want, when I want, and how I want.

When I’ve had friends move to Mac in the past, I’ve helped them find key layout changers because I completely understand the need for ctrl+c vs. cmd+c (pinky vs. thumb), I understand people that need vi bindings, people that need ctrl+p to print a document. You get into a workflow, and you need the system to respect what you’re telling it to do.

Getting my keyboard to act the way I wanted it to turned out to be difficult to the point of not possible.

The Mac layout is perfect for me. Emacs bindings in every text area, and cmd+[cvxz] for pasteboard operations. This set up works fantastically in the terminal, in textmate, in every single application I use on OS X.

Gnome has a setting – I repeat, gnome has a setting – that lets you pick the keyboard layout of “Emacs”, and that works in some places. However, many, many applications disregard that setting completely and hard code key bindings into the application. There is no way to get a consistent keyboard usage.

(Even Windows has an application that switches the system to emacs bindings, and that works far better than Ubuntu.)

Getting the system to swap ctrl and cmd didn’t work well either. I could get the system to treat ctrl and command the same, but that just resulted in a mess.

I simply can not use a system where I can’t have the keyboard be the way I want it to be. Apparently, that means I am stuck with Windows, Mac OS X, and Linux with no GUI (because emacs bindings work perfectly in a bash shell).

cut. cut. cut.

Mouse clicks

This one was probably caused by the fact I was installing Ubuntu onto a Macbook Pro, but to do a right click I had to use three fingers and a button click. Two fingers and a click was a “middle mouse button click”. To me this begs the question, how many mouse buttons do you need? So many that 3 mouse buttons are assumed to be standard on a touch pad?

I can see if you’re running AutoCAD software, or a video game, or something along those lines, but isn’t two buttons quite enough for almost everyone? It seems like you should have to go out of your way, or tick some setting, to enable a “middle mouse button” click. It shouldn’t be the predominate de facto install.

In the end, I couldn’t figure out how to get two finger click to be a right click, and I just tried to live with three finger click (which caused the cursor to jump, or the desktop to switch desktops from time to time).

cut. cut.

Copy and Paste

Copy and paste is insane in Ubuntu. If you just select some text it puts the text on your clipboard.

So, for example, say you want to paste over a misspelled / poorly used word. You highlight the word, ctrl+c copy, open a dictionary, browser or something ctrl+v paste, and search. You find the correct / better word and highlight it, ctrl+c copy, and flip back to your document.

Now if you are like most people I know, at this point you would do the following: Highlight the old, bad word, and ctrl+v paste the new one over top of it.

What this does on Ubuntu, however, is since you’ve gone and highlighted the bad word, you’ve put that word on your clipboard. Now when you ctrl+v paste it re-pastes the bad word you were just trying to overwrite, and you lose the word you wanted in the first place. How could this ever have been a good idea? It’s crazy talk.

This comes up so many times. From overwriting things in the browser URL, to emails, to the terminal. It’s infuriating.

cut. cut. cut. cut.

Inconsistent work flow

This is less of a problem and more of a nose scrunching “eh”. However, it was still a straw on the camels back.

If I install Windows, Microsoft Office, and Visual Studio, I can be relatively sure they all behave more or less the same. Moving from one app to the other doesn’t feel like I’ve moved to a different neighbourhood. It’s obviously not perfect, but it’s still – I don’t know – still the same concept. If I learn what’s going on in one the others are not that big of a mental leap.

Same thing with Mac Mail, Pages, Xcode, etc. They all “feel” the same, and while they have specific differences, they are all in the same – I don’t know – family?

Then you have Evolution / Thunderbird, Open Office, and Eclipse or whatever. They feel cobbled together. They use different widgets, have wildly different UIs, you can tell they are written in different languages. I feel like I have to acclimatise myself every time I switch apps.

It’s bad because it causes some level of stress. Not like, “oh there is a lion about to eat my children” kind of stress, but it’s distracting from the task at hand.

cut.

Community

Back in the day I used Debian for my main OS, and I work (and have worked) on a few open source projects. I know that people who use open source software, in general, suck.

They submit bugs and write blog post that say asinine things like “I’ll never use your application until you do XYZ”. As if being a dick is somehow helping you write software. As if they are some kind of genius for pointing out flaws in something you’ve worked on for nights and weekend for 2 years and they’ve done nothing but act like a snarky, critiquing ass clown who hasn’t done anything meaningful in their life and haven’t contributed to society in the slightest… hum… wait a minute… ok, but not including this post mind you… er… where the heck did I put that mirror…

In any case, I understand the love / hate development style of open source – software in general I guess. And dealing with “users” is a pain. However, it somehow needs to happen, and in my limited experience it doesn’t.

Yes, there are forum, wikis, and READMEs and sometimes they are very helpful. But somehow I think open source projects need to get community managers, or something.

For example (Dramatisation):

Me: “I need a replacement for Textmate on Linux” Community: “gaflurfulX is a good replacement for Textmate” Me: “I’ve tried it, but the emacs bindings don’t work” Community: “Only crazy people use emacs bindings. too bad.”

… Later …

Me: “I think I’ve fixed the emacs bindings. You can fix it by doing QRS” Community: silence Me: “Ok, I think I found the bug tracker and submitted a patch” Community: silence

I have no idea if it worked, or if it’ll be in the next release, or if it was completely off the mark.

So you have a situation where people don’t like to talk to users who don’t contribute back, but even if you contribute back there is no one to talk to you anyway. It is, in my experience, almost as bad as trying to talk to Apple.

This of course is just one example, but the problem is – and I can’t believe I am saying this – you, as Joe Shmoe, might find it difficult to get things done in the open source community if you don’t like something about a project – even if you try to fix it yourself!

You can just take the open source code and fork it (which is great for companies to get free software (and pay independent developers absolutely nothing – thank you very much)). You could make your own version and add whatever you want to it, but that is a ridiculous amount of work when all you want to do is… well… work.

So the long way around – do I pay ecto $20 for blogging software, or wait till next summer when the BloGTK guy is going to have time to work on the new version? (And ecto will support emacs bindings properly…)

Lesson

I am sure this sounds all negative and anti-Linux, but it’s not. I love Linux. I use it every day at work, I use it on my servers, I use it on EC2, and I use it on my netbook.

When I first started using Linux, it would often take a good two days to get X11 running correctly and at a decent resolution. Half the time you couldn’t even get it installed without going to a users group. The window managers were bare bones, and you had to search for days to get libraries to work together. Today, you pop in a CD and that’s it.

Linux has come a long, long way in a very short time. It looks to be very close to being a desktop replacement that is as good as or better than the current crop. Currently, however, it is not.

In my mind, the only way Linux will get over this last hurdle is if apps cost money. I would gladly pay $15 for a blogging application on Linux if I knew it would work, and if I filed a bug report it would get read and responded too.

Open source is not equal to free, and currently developers have no incentive to do anything other than what they want. While that may seem enticing to developers, it just winds up giving you an OS that can do 3D desktop cube rotations, but can’t handle a friggen keyboard mapping correctly. I couldn’t care less that the windows can wobble; I just want copy and paste to work.

The only universal thing that makes a developer do something they would rather not do is if you give them money. I hope that “Add/Remove” programs turns into something of an AppStore in the future. You should always be able to install anything from scratch, but herding cats shouldn’t be free of charge.

I’ll try again when Koala comes out, but for now I am back in the Walled Garden Cone of Silence.