It's summer again, people have more time on their hand, and they think about switching operating systems:

I think that's great. A Windows monoculture is not healthy. Judging from my students' crapware-infected laptops, it is actually extremely unhealty.

In the last five years, I regularly used Windows XP, Mac OS X, and Linux (Fedora and Ubuntu). In my experience, Windows XP is just fine when well-tuned, but not easy to keep that way, and totally wretched when it is not. Mac OS X is pretty if you are into blue and brushed metal and the mouse and Java 1.4.2--as you should be if you are a right-thinking citizen. I much prefer Linux, particularly for Java development. I'd like to convince you to switch to Linux as well. My motivation is simple and selfish. If lots of programmers work on Linux, then Java support will for Linux will get even better.

I often hear the argument "I saw the (caution: oxymoron ahead)coolest dudes at a tech conference running Macs, so I should get a Mac too". There are three simple reasons to switch to Linux instead.

  1. Java. In the reality distortion field, "Apple has optimized Java on Mac OS X to look great and perform superbly, making Mac OS X the ultimate platform for developing and deploying cross-platform Java applications." It just ain't so. Sun releases the latest and greatest versions of Java simultaneously on Linux, Solaris, and Windows. The Mac port is done by Apple. After much delay. With interesting bugs. And, if you use Eclipse plugins, you have SWT bugs too.
  2. Keyboard shortcuts. This is what drove me away from the Mac. On Thunderbird, I check my mail with Alt-F W G (File -> neW -> Get all messages). I start a new message with Alt-M N (Message -> New message), save it with Alt-F L (File -> send Later) and send it with Alt-F D (File -> senD unsent). I really hate to do that with the mouse. M o v e t h e m o u s e t o t h e m e n u b a r t h e n l o c a t e a n d c l i c k t h e m e n u t h e n l o c a t e a n d c l i c k t h e s u b m e n u t h e n l o c a t e a n d c l i c k t h e m e n u i t e m. . . I did give the Mac the good try for a month or two, three years ago, and I just couldn't take the constant mousing.
    Now I know what the Mac zealots will say: 
    • All programs have keyboard shortcuts. Sure, but look at NetBeans. At most half of the menu options have shortcuts, and most of them are impossible to remember (Ctrl + Shift + F8).
    • You can get a third-party program. Ok, but you'd have to laboriously define hundreds of menu accelerators by hand, separately for each program, and they too would be hard to remember.
    • Research has shown that people delude themselves thinking that the keyboard is faster. Studies, in which people from all walks of life have been asked to solve the same task with the mouse or keyboard have conclusively demonstrated that the mouse is faster, even though power users have the illusion that they save time with keystrokes. Well, a programmer isn't a person from all walks of life. We need both of our hands on the keyboard most of the time.
    • You can turn on accessibility features. This one really galls me. Nowhere is the difference between Apple's blowhard marketing and the reality more apparent. Indeed, you can activate an accessibility key to get into the menu. Once you are in the menu, you have to use the arrow keys. What happens if you hit E? Will it open the Edit menu? No, sir. The all-knowing keepers of wisdom in Cupertino know that this would not be good for you. The key is silently and unobtrusively ignored. "Apple’s commitment to accessibility is evident throughout the Mac OS X operating system which is by design, easy to use, but also includes a wide variety of features and technologies specifically designed to provide accessibility to users with disabilities."
  3. Freedom. I run Mac OS X 10.3 on my aging PowerBook, and I like it just fine. Can I try out Java 5.0? Not without paying for and installing Mac OS 10.4.

Ok, you want good Java support, keyboard shortcuts, and freedom. Who doesn't? But isn't Linux hard to use?

For my needs, Gnome seems on par with the Mac OS X and Windows GUIs. In the bad old days, laptop suspend and USB stick mounting worked poorly, but those issues have been fixed. The remaining difficulties are (1) wireless and (2) external displays. Wireless with an external $20 card works beautifully, but some of the built-in adapters can cause grief. Get a $20 card. External display switching is not as easy as it should be. Practice it at home before you give that presentation.

If you are considering switching, do yourself a favor. Stay on your old platform a little longer and switch to cross-platform applications first. For mail, use Thunderbird, not Outlook or Mail.app. You don't want your mail trapped in some proprietary format. Use OpenOffice for word processing and spreadsheeting. You increase your chances of being able to read your files twenty years from now. Use Eclipse or Netbeans or JEdit or Emacs for your Java programming. On Windows, use the bash shell (Cygwin), not the DOS shell. After you are comfortable with the cross-platform applications and tools, make the switch. It'll be easy. And if you don't like your new OS, you can switch again.

???After you switched to Linux, there is one remaining problem--the coolness factor. Nobody can see that you aren't running Windows. The solution is, of course, a Linux sticker. Pick up a garish one at a trade show, or print one from here, here, or here, and slap it on your laptop.