take a bite

It's been a long time since I started using computers. I can clearly remember the thrill of my first VIC-20, and then the eventual onset of frustration with how long it took to load programs from tape. Through the years I've had various kinds of computers, slowly getting ones that were faster and faster. Like most people, for the past decade or so I've been running Windows on various types of PC hardware. And like many people, I've hated Microsoft the entire time. I pirated a lot of software because it felt wrong spending money on products that could only run on an OS I hated. Of course I got into the open source movement with the hopes of escaping the dismal Microsoft world. I learned all about the UNIX Way, C programming, system administration and many other skills which are now part of my professional career. Many times I tried to rid myself of Windows completely, by running Linux or NetBSD on my desktop. But every time it ended in frustration and an eventual switch back to Windows.

See, the problem with open source software is that its grass-roots nature and freedom for programmers to change software to suit their needs breeds not only freedom of choice for users, but also confusion and lack of standard ways of doing things. The sheer number of styles used in even simple things like config file formats is daunting. This is manageable on servers, because the interface to programs and configuration is usually be way of a shell and an editor. If you like vi and tcsh, you can pretty much control everything on your system with them. The feel of the system doesn't really depend so much on all the software you have installed, but the way in which you interact with it. Users and system administrators can choose their own adventure, because the front-end to the software is very simple, and consists only of your shell and editor of choice.

When it comes to graphical environments and user interface designs for desktop applications, however, things get a lot more complicated. Instead of simply interacting with programs through an editor and a shell, now there is a GUI attached to every program. And each program uses specific types of widgets and themes, and these differ between programs. Now the the lack of consistency starts to rear its ugly head a lot more than the confusion associated with a number of config file formats. Now, the work flow and the integration between programs becomes difficult, and what originally seems like a great idea: the ability to make programs that behave and work any way the programmer desires, now becomes more of a hindrance than a help. Many open source advocates will, at this point, suggest that I use KDE or Gnome as my desktop environment and be done with it. They will tell me that all programs work seamlessly together, and that I can have a system that is just as good as any other desktop. But I've been there and done that, and I've tried so many systems over the years, searching for my computing utopia in open source. And some have come pretty close, but none have really been good enough to warrant switching away from Windows on my desktop.

Recently I installed FreeBSD on my laptop. I thought that I would give it a try and see how much progress has been made on the GUI side of open source lately. I must say that I was impressed by the hardware support. I was able to get most of the hardware in my laptop working reasonable well. But the desktop and applications were the same crap that I had run countless times before. Mozilla Firefox and Thunderbird made the system incredibly more useful than years gone by when finding a decent web browser and graphical mail client were impossible. I know, I'm a sucker for clicking with the mouse. I did use mutt for my mail for about 4 years, and it was great. But sometimes you need to realize that you're living in the 21st century. I still love my shell, but not for everything. I was pretty happy with my FreeBSD lappy, as it did a lot of things that I wanted. But it was sorely lacking in a few major areas. I love to compose music, listen to music, watch DVDs, and lots of other multimedia sorts of things. In all of these areas, the open source offerings were either incomplete rip-offs of actually good commercial software, or they just sucked. For a web server, file server, database server, or anything-server, I would choose FreeBSD or NetBSD over any commercial product, but for the desktop, open source really just doesn't cut it.

And it's more than just the lack of consistency. There are a few other reasons why open source can't compete on the desktop. First of all, graphical programs are really hard. I know from my own software development efforts that GUIs are the hardest part of software design. Not only laying them out but making them work right as well. Sometimes commercial software is the only way, because in a commercial project, there is at least someone calling the shots and forcing consistency. And also in commercial projects people do the non-fun jobs that are often left unfinished when people are just doing it for fun as is often the case with open source. But the main reason why I think that open source sucks on the desktop is our old friend and enemy: X11. I used to love X, but you know, it really sucks ass! It's an enormous mess that should have died in the 80s, but somehow still seems to be an integral part of the UNIX way when it comes to anything more than the text console. And after all these years, there are so many video cards supported, and so many native drivers, but for some reasons programs still feel sluggish, and configuration still feels like making DOS video games work in about 1994. It really is a thorn in the side of the open source movement, and the sooner that X11 can go away, the sooner the open source community will even have a hope of making a usable desktop computing environment.

But I think that there is hope yet for the utopian computing environment. It's not completely open source, but it feels to me like the best of both worlds. I'm talking of course about Mac OS X. I recently took the plunge and bought a Macbook. Surprisingly I didn't pay more for a slower computer, as seemed to be the case with prior Apple computers. I compared the price of the Macbook with similarly priced PC laptops, and it seems like the Macbook is a better deal. When you factor in OS X and all the included software that comes with the computer for the advertised price, you really do pay less for more, compared with PCs.

As a new Mac user part of me wishes that I'd switched to a Mac a long time ago. But another part of me is glad that I waited until now. It seems as though Apple is just on the dawn of a new era where PCs and Windows really won't be competitive in terms of price and ease of use most users. The applications and hardware support available on modern Macs really is in line with PCs. Perhaps for gaming the Mac lags behind, but that is starting to change.

To me, Apples seems to have combined the best aspects of open source and UNIX thinking with a good GUI and desktop environment. I leave two terminals open at the bottom of my screen. In Windows I used to do this by running Exceed, which is a completely horrible X server, and connecting to my FreeBSD server so that I could do UNIXy things. But with OS X, I can do UNIX stuff right on my main computer. Perl, php and apache are all included. Why reinvent the wheel? But the best part of OS X is that the graphics and sound layers really are second to none. I bought a Fire-wire audio interface and it just worked without any 3rd party drivers. The video subsystem is super performant, and dual monitor support works like a charm and is much easier to configure than in Windows. And best of all, programs like iTunes and the other iLife apps (which are really quite good) come pre-installed and ready to go. The DVD player is excellent, and there are many commercial applications available as well. Strangely, I don't feel hesitant to buy software instead of pirating it, because it seems like a better investment now that I have a computer that I actually like.

And the ability to run Windows on the Intel Mac? It seemed like a neat feature but is now completely uninteresting to me. I have a few specific Windows-only applications for work, but generally there seems no need to even venture into the dual-boot or virtual PC world.

I once had a friend that said he could write poetry about xfig. I'm not sure I'm going to write poetry about my Mac, but it certainly makes me feel like I've finally found something that satisfies my needs, and makes me proud to use. As an open source advocate I must say that I hope the open source world can make software this good some day. But I think it's highly unlikely. Just like Java took the commercial efforts of Sun to make it a great language and software platform, it might take the likes of Apple to direct good desktop design. And who really cares if it's not all free? Richard Stallman would probably balk at a comment like that, but I don't think that free software always works, just the same way that I don't think commercial software always works. But Apple seems to understand the difference, and they've fused together both free and commercial software in a way that is usable, effective and fun. So if you haven't made the switch to a Mac yet, give it a try. It's the closest to computing utopia that you can get, at least in 2006.