GNU/Linux, the developer OS…

This post is about my experience developing with Mac OS X vs. GNU/Linux. Im a developer by profession and working on Ruby these days, and a sizable part of the Ruby world happens to use OS X. Its considered the best platform for Ruby development(at-least by some) and TextMate is supposedly the most loved editor for ruby(or rails, camping, rack???) hacking. When ThoughtWorks offered all ruby developers Mac Book Pro with TextMate licenses, i switced. Almost an year with Mac frustrated me to the core and the tiny Ctrl key injured my wrist big-time, and thats when i decided to move back to the operating system i have been in love with since puberty(oops… college). I moved back to Debian 5.0(Lenny) and am a happy hacker once again. No other operating system that i know of, matches the usability and simplicity of Debian, and thats what finally brought me back to it.

People(even experienced developers) often don’t understand what made ‘otherwise excited me’ hate mac this bad. Here are a few things that started it all.

  • User/Group administration(adding an unprivileged user to another group): I started the usual *nix way. Tried usermod/useradd, modifying files under /etc without any luck, post which i was left with no choice but to seek help over the web. I wasted a lot of time before a blog post saved the day(never thought i’d end up wasting time over something as trivial as that). OS X apparently has a notion of databases for storing user and group on Leopard(what the fuck?), and has some insane command to add a user to another group(which works by specifying the directory that the relevant db lives in, and a key-value pair[aagh….]). There is a groups file under /etc, but that exists for aesthetic reasons(or may be to fool people like myself) as its supposed to have effect ONLY in single user mode.
  • Microscopic Ctrl key: Before moving back to Debian, I changed my editor(dumped TextMate in favor of Emacs). Post which, Mac made my life miserable. It has just ‘ONE’, really tiny Control key, and i had to put my wrist in all sorts of weird, twisting positions to get emacs shortcuts going. Within a month or two, i ended up with a dorsal ganglion on my left wrist.
  • Java upgrade: While trying to upgrade to JDK 6 from 5(which came pre-installed), i was forced to register on the apple website(to get the package) and fool around with symlinks in various places, only to find IntelliJ Idea failing to load-up. No logs, no error popups, no messages on the terminal. I HAD to give-up and revert.
  • No emacs -fs: Most of the times when im in front of my laptop, im actually using Emacs. Its my IMAP/SMTP client, IRC client, editor, terminal, feed reader… everything. I like to use every pixel thats available on the display(if you are used to coding with 5 irc windows open, you have to), and OS X/Emacs Carbon(i don’t know which one was responsible) didn’t like me going full-screen.
  • No Meta key: I spend a lot of time in bash terminals. Any one who uses bash for serious work knows how important Meta key is. M-b, M-f, M-<bksp>, M-d…. just goes on. How can you work without those shortcuts? On mac terminal, i was forced to hunt the tiny Esc on top left corner every time i did a Meta combination. Trust me, and hour of Esc – p, Esc – f is enough to drive anyone NUTS.
  • X11: My interest in game development makes me pull Gimp up every now and then. Gimp on OS X runs under, and while using Gimp i was forced to use Ctrl in place of Command/Apple key. When you use mac, you build your muscle memory around the Command key, and switching to Ctrl for every little shortcut is both difficult and frustrating. The non-X version refused to let me work with layers(to shorten it up, it refused to work).
  • Package Management: Typical OS X app install workflow: Register on an unknown website. Download a DMG. Mount it. drag-drop the app directory(or whatever it is). Double click, and answer the “downloaded from internet, dangerous program” kinda question to get a new application running. And then tolerate all the spam that site sends your way. User’s misery doesn’t end there, if you want a clean uninstall, you need to have AppTrap running. I neither have time nor patience to take this kind of shit. MacPort exists, but i had to wait for more than 3 months to get a version of HTTrack that compiled successfully(that says something about ports repository, doesn’t it?).

The list just goes on….

Debian on the other hand comes with robust and incredibly powerful package management infrastructure called dpkg and apt. I just can’t imagine living without them. The gnu tool kit makes customization such a breeze, the day i don’t like something, i hit the project’s version control, pull the tag up and rebuild it with my changes(developers know getting dependencies right can be a nightmare….. for a dev on debian, its just a matter of firing sudo apt-get build-dep blah). Life is straightforward with GNU/Linux. Changing behavior is as simple as finding some file in /etc and editing it. Can things get any simpler than that? It is the “principle of least surprise” embodied.

Is there anything about Mac Hardware/Software that i really liked, things i miss now as a GNU/Linux user? Nothing major, but coming to think of it, i wish GNOME had a translucent dashboard(with configurable widgets) :-), just for the “cool-factor”, but thats pretty much it.

Developers spend so much time with computer that having a no-nonsense system is absolutely essential and i believe it pays-off to find out what works for you. The motivation for this post is not sharing my frustration/findings but making people aware of why any “proprietary operating systems” fail to get there. Everyone knows how horrible an operating system Windows is, but OS X is way too hyped which can mislead people like myself. I hope this post will help other developers form a balanced opinion of Mac.

Long live GNU/Linux!!!


About this entry