Let’s start our comparison by analyzing the quality of hardware support under each OS. In order to be efficient, a desktop OS needs to handle most of the machine’s hardware out of the box with no user intervention. It also has to deal with hotplug events transparently so that pen drives, cameras, MP3 players, etc. can be connected and start to work magically. We can’t forget power management, which is getting more and more important lately even on desktop systems: being able to suspend the machine during short breaks instead of powering it down is extremely convenient.
So far Ubuntu has behaved very well in all the machines I’ve installed it. As regards my desktop machine, it did the job just fine except for some minor glitches; if ignored, though, the machine was still perfectly usable. For example, the TV card does not work—but really no other OS is able to automatically configure it due to deficiencies in the hardware itself—nor does suspension. This last item is worrisome because it did work in the past, but I haven’t found a solution to it yet.
On the other hand, the GeForce 6600GT video card works flawlessly after manually installing the NVIDIA video drivers, which is a simple matter of installing the nvidia-glx package and running the nvidia-glx-config enable command as root. I can’t say this is ready for the end user—a tiny GUI for the overall process wouldn’t hurt—but I’m happy with it. Anyway, if I hadn’t done this, the desktop would still be usable with the free nv driver, but it does not perform as well.
Somewhat related to the video card, there were problems with the resolution configuration. For some reason the screen was configured to 1024x768 and there was no way to go higher from the Screen Resolution control panel. If I recall correctly this was possible under a previous Ubuntu version (before it had a graphical installer). To solve this I had to resort to
dpkg-reconfigure xserver-xorg, go through all the annoying questions, select the appropriate resolution (1680x1050) and reenable the NVIDIA driver. This is definitely not for the end user.
At last, hardware hotplugging works fine as far as I can tell. There is a lot of people working on HAL, the GNOME Volume Manager, the kernel and all other related components, so this feature works as expected. Even the photo camera is instantly recognized when plugged and a window pops up asking whether all the photos should be transferred to the computer or not.
Mac OS X, on the other hand, behaves much better with the hardware provided with the machine: everything works as intended. Of course this is because the same people developing it are the same people that build the hardware, so they know exactly how to write the drivers. Simply put, it would not be acceptable if some pieces were not supported. I personally like the Apple hardware, so I don’t mind getting their hardware if I feel the need to run this OS (as I did with the iBook G4!); many people won’t agree here, though.
Hotplugging also works in a similar way to every other desktop OS. I don’t have much external hardware to try it with, though, but the basic things simply behave correctly. Now, conjecturing a bit: I bet Mac OS X will behave better than Ubuntu with more advanced multimedia hardware (MIDI keyboards, video cameras, webcams, etc.) but I don’t have such things to try them.
Summarizing: Mac OS X has got it right and Ubuntu is on the right track. For my purposes, both of them are in par.