Why MacOS X is what I want
Why MacOS X is better where it should not.
Warning 1: this was written during June 2005. This kind of information decays quickly.
Warning 2: subjective thoughts ahead. I do not like proprietary operating systems. I like to read the source code of my system and applications at breakfast. This to say that MacOS X being a closed-source operating system really hurts my feelings, especially the trust I feel towards my computer. In fact, I would really use something else to run Vodka-Pomme (that's the name of my iBook). I've been using FreeBSD, Debian GNU/Linux and Knoppix for a very long time (8 years) on a multitude of computers, and I am still using them. But right now MacOS X is my main desktop operating system. Only because it offers features I was lacking when using the other systems, and I just cannot afford to spend time to wait for these features to appear in open-source distributions or develop them myself.
Actually, I do not care about fancy graphics, integrated Java support, universal PDF support, Exposé, file metadata, and all these fashionable business keywords. However, usual free software Unix distributions make me feel like I'm stuck in the 90's. Apple makes me feel like it has successfully put a step in the twenty-oneth century. Why?
Here is the list of things I am waiting for to appear in other free operating systems to get rid of MacOS X.
User-level disk images
I want to be able to package stuff into a mountable disk image files. I do not want to need administrator priviledge to mount disk image files.
MacOS X allows any user to create and mount disk images.
Easy-to-use filesystem encryption
I want to encrypt my files. That's easy enough for most systems. Afterall, GnuPG works pretty well. However...
I want transparent, filesystem-level encryption. I do not want to explain to my applications that my files are encrypted. I want my files unreachable when I am not logged in.
I want to be able to save my files encrypted easily. I want to be able to restore them on another computer temporarily in minimum time.
For this, I use Apple's FileVault which puts my home directory in an encrypted disk image file. The system mounts (unix-wise) the file when I log in, and unmounts it when I log off. I can copy this file and mount it on any other MacOS X system.
I can even create encrypted image files wherever and wheneven I want for distribution to other people.
FreeBSD and Linux allow for filesystem encryption. But it works over block devices, not files. And using it requires administrator priviledges.
Linux' kernel CryptoAPI is great, but it's very low-level and I do not know of any working user-level integration tools that work on all distributions.
CFS (user-level NFS server to encrypted files) looked promising. However it provides poor encryption and seems deprecated.
PPDD looks promising too, but is not mature.
EncFS does not count. It requires custom and non-standard kernel extensions.
Filesystem-level charset conversion support in filenames
I want all my filenames stored using UTF-8 by default. I want all applications to see UTF-8 in filesystem operations, even if the underlying filesystem does not use UTF-8 for storage.
I want all my application to display filenames in file dialog boxes correctly, even those filenames with non-ASCII characters in them.
I want mounted foreign filesystems to use UTF-8 for filename encoding, even when the source filesystem encodes filenames with another charset. Automatically, i.e. without having to provide arcane options to a command-line mount tool.
MacOS X does all that by default.
User-level fault-tolerant remote filesystem mounts
I want to mount remote filesystems without administrative priviledges.
I want to be able to mount WebDAV, FTP, SMB (CIFS) and NFS remote filesystems and use the files within as if they were local. That is, real mounts (not that KIO crap from KDE), so that applications without specific support can use the files.
Of course, I don't want filename charset encoding issues with filesystems mounted remotely, even if the remote filesystems does not use UTF-8.
I want to be able to choose between telling my system to forget the mount when the remote server or the network link fails, or to hold the mount until I reconnect.
I want my applications to behave properly when the files they access become unreachable. In the worst case, I want to be able to kill them completely.
MacOS X's Finder does all that.
User-level fault-tolerant removable device handling
I want my system to mount floppy, CD-ROMs, DVDs, USB, Firewire and PCMCIA disks automatically.
I want to be able to unmount the removable filesystems without administrative priviledges.
I want my system to forget the mounts completely and keep sane when I remove a device without unmounting the filesystems.
I want my applications that are able to use the scanners, printers and photo cameras I plug in, to behave correctly when the devices are unplugged without warning the applications first.
MacOS X does all that.
Universal and extensible printing API
I want all my applications to use the same subsystem when I print.
I want to be able to choose to export the printed data to a file in a reusable format, for each print. I want to be able to choose the printer I'm printing to for each print, too.
Other unix distribution do all that already: the "lpr" command is intended to be the universal printing service. When an application knows how to output PostScript data, the "lpr" command allows to choose the printer (one parameter), redirect to a file (command-line pipe filter). However, few applications allow to choose arguments to pass to "lpr" at each print.
Besides I want to be able to set up advanced printer settings differently for each application. Like the type of paper, resolution, number of pages per sheet, margins, print quality, and so on.
Also, I want to be able to configure my printers in only one place. I want to be able to configure them without administrative priviledges.
All that "lpr" does not allow.
CUPS does, and is even used by MacOS X for low-level print handling. However CUPS is hard to install, and the standard configuration interface of CUPS just plainly sucks.
MacOS X takes the power of CUPS and integrates it to every application with a slick user interface. That's what I want.
Automatic font selection for Unicode display
I want all my application to display Unicode properly. I want them to use another font to display characters that the current font does not define.
I want the fallback font to be as close as possible in shape to the current font.
That's done by default in MacOS X.
Multimedia clipboard and drag-and-drop
I want to be able to cut-and-paste and drag-and-drop files, images, sounds, bookmarks and rich text.
I want all applications that support multimedia data to be able to exchange data with each other through the clipboard.
Most Mac applications do that already.
Universal password and certificates database
I want all my passwords and sensitive data stored in a unique database. I want to be able to control what application can access this database, and when. And the database should be encrypted with state-of-the-art algorithms.
I know that Mozilla derived products already have such a database. But I want that feature for all applications.
MacOS X provides the Keychain Access utility, and most applications talk to it to manage passwords and other sensitive data. That's what I want.
User-level network configuration switcher
I want to be able to globally change all my network settings when I move my laptop around.
I want my system to handle such switches for network interfaces, network address configuration and proxy settings.
I do not want to restart my applications to take this kind of change into account.
MacOS X does all that, already.