Linux DevCenter    
 Published on Linux DevCenter (http://www.linuxdevcenter.com/)
 See this if you're having trouble printing code examples


Switching Back to Desktop Linux

by chromatic
06/01/2006

Switching Back

A few years ago, I bought my first laptop, a 15-inch PowerBook. It was also my first Apple machine.

I had used Linux on my desktop exclusively for several years, but at that point did not want to go through the pain of tracking down the precise revision of a very specific laptop brand to find one that would work with Linux. (I also refuse to pay the Windows tax, as I would and do not use Windows.)

Through work, I received the opportunity for a sizable discount on a new PowerBook. Mac OS X 10.2 had recently come out and my Mac-using friends claimed that it was much more powerful and usable than previous versions. (Many of my friends still pined for the performance of Classic, especially on older hardware.)

I knew that Linux/PPC was one of the better-maintained non-x86 ports. Apple's hardware impressed me with its quality as well. It is certainly easier for free software developers to produce drivers for well-chosen, high-quality components. (Many other laptop manufacturers are less picky about changing components within a product line, which gives free software developers and users fits.)

I kept my Linux desktop, but moved most of my daily work to the laptop. I also repartitioned my hard drive and reinstalled Mac OS X to give myself space to use Linux/PPC. I tried to get used to Mac OS X for six months, but when a new version of XFree86 came out and supported my video card fully, I finally switched away from Mac OS X.

Why? There are plenty of reasons, most of them related to my primary goal.

What I Wanted

I started using Linux in 1996 or 1997. Before that point, most of my PC experience was with DOS and Windows 3.1. I had some experience with Windows 95, but I was familiar with the command line.

I switched to a Linux desktop at home in late 1998 or early 1999. Though I've occasionally used other Unixes and even Windows at specific jobs, I've done all of my work with a free Unix desktop for several years.

My goal in buying the PowerBook was to continue working as normal but to be able to travel. That is, I wanted to do the same work with the same or equivalent applications in the same ways. I borrowed an iBook from a friend for a couple of weeks, asked a few other people about their experiences, and believed that Mac OS X could offer me a usable Unix desktop on a portable machine.

My goal wasn't to be able to use Mac OS X-specific software, nor did it have anything to do with any particular user interface. Perhaps my experience would have been different; I can't say.

I don't want to say that Mac OS X is a poor Unix desktop. Plenty of smart people enjoy it. It wasn't right for me, though as a Unix desktop, for several reasons.

What I Disliked About Mac OS X

I don't dislike Mac OS X in general, but it's not the operating system for me. It just didn't work the way I do. Maybe I'm stubborn, but if it takes me twice as long to do something with Mac OS X than it does on Linux and if there's no good way to change that on Mac OS X, I prefer Linux.

Several little frustrations finally combined to convince me that I am more productive with a Linux desktop.

Lack of Customizability

I don't want to have icons on the desktop. I don't even want to see my hard drive on the desktop. I never use it. It is just a distraction -- everything that is visible on my screen should pertain to the task at hand.

I want working virtual desktops. Exposé is not a solution; by the time I've hit enough keys to make Exposé do its thing, watched its animation, and selected the correct application, I could be working with the correct application if I had proper virtual desktops selectable by key combination.

I tried several add-on programs to add virtual desktop support. None of them worked the way I want. (Edge flipping seems to be far beyond what these add-ons can do, though I once added it to an X11 window manager in a couple of hours, having never done it before.) Too many of them had their own weird bugs, like dragging windows between desktops when I only wanted to switch.

It was seriously disconcerting to click on a Terminal.app window in one desktop and have all of the other Terminal windows from all of the other desktops suddenly appear.

I want focus-follows-mouse.

I don't care how many usability studies Apple or Mac fans cite to prove that only babyeaters like these things. This is how I work. I'm most productive this way. I tried. I'm glad it works for you. It didn't work for me.

If I had the option to switch window managers, I would have done so. (I'm sure there's a shareware application somewhere that does this, but I never found one to catch my attention.)

Second-Class Unix Applications

Part-way through my trial, Apple released its own X11 server. I thought this would solve some of the problems I had with useful Unix programs such as OpenOffice.org. I thought perhaps I could even use XTerm to solve my Terminal.app woes.

Unfortunately, the X11 integration was a work in progress. At least, I hope it has progressed.

Apple's secret to the different copy-paste behavior of X11 is to run a separate X11 application that copies information from the two separate clipboards. That is, it's obviously possible to share information between Aqua and X11, but it's obviously not useful enough to do it by default. I don't understand that.

The fonts in OpenOffice.org were nearly unreadable. That surprised me immensely (the fonts on my Linux laptop are very nice, thank you). How could Apple distribute quality fonts for Mac OS X and Aqua and not make them available in X11? At a minimum, wouldn't the Verdana family be useful?

I barely want to mention installing Unix applications. Fink did a reasonable job of working around the lack of a useful package manager, but it was often painfully obvious how much of a workaround it was.

No First-Class Package Manager

Software installation on Mac OS X hurt. (Remember, I don't use Windows. I don't care how much better this is when compared to Windows. I compare it to a Linux distribution with a decent package manager or a *BSD system or....) Who has time to hear about a cool new application, search for its homepage, find the correct package, download it, double-click on some file on the desktop, drag the app bundle out of the disk image, then store it in some other directory somewhere?

I'm not afraid of the command line. I'm perfectly capable of typing sudo apt-cache search ... if sudo apt-get install ... doesn't work the first time.

Again, Fink did its best, but for the types of software and applications I wanted to install (very little proprietary software), it was just too much work going through all of the monkey steps necessary just to run a program.

Sure, dragging an app bundle to a directory is easy, but getting that app bundle to reach the point where you can drag it is monkey work.

Don't even bring up the issue of uninstalling software. Again, dragging the app bundle to the trash is easy only after you have found the bundle, found all of the related files stored elsewhere, and made sure that you have removed the dependencies appropriately.

Lack of Diagnostic Tools

Because I've used Linux since 1996 or 1997, I've spent a lot of time working around and diagnosing bugs in software. I don't write a lot of C code, but I know how to wrangle gdb, lsof, strace, and a few other diagnostic utilities.

Perhaps it was my unfamiliarity with Mac OS X or Darwin, but I couldn't figure out how to use these or similar tools when I encountered problems.

For example, I had a problem for a while with Mail.app behaving exceedingly slowly, displaying only the spinning wait cursor and not staying put on its one specific virtual desktop. I couldn't find any helpful help online and didn't get any useful error messages when running the program from the command line (if that even worked -- I don't remember).

Under Linux, it's easy to strace kmail 2>> kmail.trace and read the log to see what's going on.

At least, I never figured out how to make this work on Mac OS X. It wasn't a big issue most of the time, but it was frustrating when it happened. Perhaps it was my infamiliarity with the platform rather than any particular lack of tools or documentation. Still, it feels much easier to find debugging and diagnostic information for Linux.

Lack of Freedom

After rejecting the fourth or fifth iTunes update in a row, I realized that the updates had come so frequently because Apple wanted to prevent people from sharing their music.

I don't download copyrighted MP3s and I used iTunes perhaps twice, but I realized that Apple could push a big binary blob of updates to an application and, if I accepted them, I would have no easy way of seeing what the updates were nor of refusing specific ones if I wanted.

I never use the source code to most of the software I use, but I do use some of it occasionally. I missed that freedom. I hated reporting a bug in Mail.app to a big black hole and never knowing if anyone ever even read the bug report. (I don't remember what it was, but I do remember that it persisted until I switched.)

Ultimately, this was the biggest reason I switched back to Linux. To use Mac OS X effectively, I would have to adapt to the system. The system would not adapt to my way of working. We were incompatible -- and, at least in my world, the human wins in this case.

Minor Annoyances

There were a few other persistent annoyances, such as the case-insensitive default file system. Why? (If you use UFS instead of HFS+, just try getting support from Apple or installing proprietary software, or....)

Why did the classic Unix utilities not work with resource forks?

Why did I have to install the complete developer tools set just to get gcc and the development headers and even complete documentation for Perl and Ruby?

How in the world does the linker work?

I don't expect any operating system to be perfect and I do expect to do some customization. However, the assumptions Apple made about how I should work are very different from how I do work. I understand that my preferences and predilections are fairly unique to Apple's core audience and that Apple wants to optimize their system for people who don't use a windowing system primarily to present three Vim sessions and a bash prompt simultaneously.

However, that means that their system isn't for me.

What I Dislike About Linux/PPC

Linux/PPC has its problems too. If you've tried it and hated it, that's fine. It's not for everyone. I find its problems much less frustrating than Mac OS X, so I use it.

Most of my frustrations with my current system are due to its relative unpopularity in a world dominated by x86-compatible machines. For the most part, running only free software ameliorates this issue. (Of course, there are very few opportunities to run proprietary software.)

Lack of Pre-Built Applications

The Linux kernel runs on many, many architectures. For desktop users, there's one architecture worth worrying about: x86 compatible. (Okay, there are 64-bit processors too, but they're hardly as different as PPC is.)

If I wanted to run a binary blob video driver (I don't, but some people do), what are the chances that anyone would think to build a version for Linux/PPC? Bad example? Try Java. I can install IBM's JRE 1.4.2, but nothing more recent from Sun. Java 5 came out in 2004. (People tell me that I can get newer versions, but I'm sticking with my packaging system. Life's too short to manage dependencies manually.)

The same rule applies to larger free software packages such as X.org and OpenOffice.org. I don't really want to compile the latter myself. (This isn't a complete loss; MySQL AB does provide Linux/PPC binaries, in part due to a bug I filed.)

Perhaps I'd have better luck if I switched to an Ubuntu/PPC distribution, but as Apple stops shipping PPC machines, there will likely be even fewer people using the platform. The smaller the target audience, the less testing there is and the longer it takes for a distribution to mark updates as stable.

Unportable Software

A related issue is that a lot of software makes unportable assumptions about memory layout. That is, which bits in a piece of memory are the most significant and which bits are the least significant?

A few projects that perform high-performance bit-twiddling code (think cryptography or image and video editing) broke on my machine with upgrades, as the developers of those projects made unportable assumptions about endianness. Fortunately, this hasn't been a problem in over a year, but it does point out a further problem with running a niche platform.

This isn't all bad, however. The likelihood of having a remote exploit due to a buffer overflow is low; how many attackers are capable of writing Linux PPC shellcode?

Sticking with software for which I can get and modify source code does have an advantage here if the software is important enough that it's worth my time and effort to make it work. (Don't laugh. I've done this more than once.)

What I Miss About Mac OS X

My list of annoyances with Linux/PPC is short. My list of annoyances with Mac OS X was more substantial. Those aren't the only factors in my decision, however. By switching, I gave up some nice features that I miss. They aren't worth switching back, but I do miss them.

Great Wireless

I have never used an operating system or piece of hardware with better networking support than Mac OS X. I've looked for similar tools for Linux, but I haven't found anything I like better than a little shell script I wrote myself. That doesn't mean they don't exist -- it's probably incomplete driver support for my hardware.

Still, this is an excellent feature on Mac OS X and I miss it.

Full Driver Support

Though I hate binary drivers, it's difficult to argue with working hardware. All of my hardware works sufficiently under Linux (including my scanner, which is more than I can say with Mac OS X), so it's not a big issue.

Still, having to wait for full and fully-open video card, modem, and wireless card support was frustrating. It's the fault of the manufacturers of course, but I do wish I had had full support from the day of purchase.

Easy Remote Displays

For the most part, I have never had any significant trouble connecting my laptop running Mac OS X to remote displays. Occasionally I had to change the resolution and refresh rate, but I expect that as the properties of remote displays are often different.

I have never tried to do the same under Linux, though I keep meaning to do so. I suspect that it might be easier with newer versions of X.org, but it has not come up yet.

Bonjour and SubEthaEdit

I've never used SubEthaEdit, even under its previous name. It looks like a nice tool. It may never replace Vim for me, but collaborative note taking is convenient in certain circumstances.

I will never switch to a different platform solely for a text editor, though.

Having multiple applications aware of zero-configuration networking via Bonjour is a very nice feature, however. I would like to see the same on desktop Linux -- especially on laptops.

Some Parts of Mail.app

Mail.app had some nice features and some frustrating features. It worked very well in offline mode, at least for me. I do miss the ability to disable one account. That is, it's nice to disable checking for my work account at 5:01 p.m. on Friday afternoon and not enable it again until 8:59 a.m. Monday morning.

The open Command

... but I made my own.

Things I Just Don't Care About

Some of the Mac advocates I know have their own happinesses with their systems. I'm sure they're nice features, but I don't use them, so I don't miss them. I include a few only to forestall some criticisms along the lines of "Did you try program X? It's worth switching away from an operating system you find usable to an operating system you find otherwise frustrating!"

XCode

I know how to use gcc from the command line and I'm happy with Vim as my text editor. For example, I never could figure out how to make the Mac OS X linker do what I wanted... but the solution doesn't seem to be switching text editors or writing Makefiles visually.

(My specific problem was trying to load the SDL libraries from Perl and Parrot. Even after reviewing the code and how it worked on every other Unix-like platform, I couldn't figure out what went wrong, nor if Mac OS X couldn't find the libraries or couldn't open them correctly.)

$129 OS Upgrades

I'm sure Spotlight is wonderful. I doubt I'll ever use it.

I'm sure GarageBand is amazing and fantastic and superlative. I doubt I'll ever use it.

Maybe Aqua would have been faster if I'd stood in line at midnight for a $129 t-shirt and a "free" OS upgrade, but emerge and apt-get work, for me at least, much better, cheaper, and faster. Sure, I don't get the t-shirt, but I can hold off on installing things that I absolutely do not need.

Proprietary Software

I don't care about running Microsoft Office. I have AbiWord and Gnumeric, and if I really need it, OpenOffice.org.

Okay, I wish I could play some games... but most of the computer games I have are old enough to run really well under Wine/x86 or have native Linux ports.

Media Applications

I don't edit many photos or any movies. I don't care about iTunes. I have applications for everything I really need to do.

Lickable User Interfaces

Some people call Aqua shiny. I don't really care (except that the brushed metal interfaces are amazingly ugly). My Linux desktop looks just fine, with muted colors, anti-aliased fonts, and nothing I didn't put there. I don't miss little launching poofs or minimizing animations. I don't miss an infinite-height per-application menu bar. I usually use the keyboard shortcuts.

Conclusion

Some people will likely say "But you have to spend so much time tweaking Linux to get it the way you want!" To that I respond that I don't even have the option of tweaking Mac OS X to work the way I want. I have a handful of important shortcuts and configuration files that work on just about any Linux or free Unix system I will ever use.

The real issue is I feel, well, hampered every time I try to do serious work on Mac OS X. Again, that's just a personal preference. I know plenty of other programmers who produce good code happily within the system. For whatever reason, it just doesn't fit the way I work.

I tried Mac OS X. I think I gave it a fair trial. I recommend it to people if I think it will work for them. It's not a bad system. It couldn't displace Linux on my desktop, though.

chromatic manages Onyx Neon Press, an independent publisher.


Return to the Linux DevCenter.

Copyright © 2009 O'Reilly Media, Inc.