So I’m wandering around a bit until I arrive at a strange house where people are drinking tea and saying even stranger things. I listen a moment hearing all kinds of weird stuff like gtk, gnome, X11 but there comes something that makes me startle a bit

"X11 rocks on my MacII"

What do you mean? I interrupt. You can’t have unix apps on a Mac II !

Oh ! Reaaaaly can’t I? And why please, sir ?

Well Mac OS X only …

Ha ! Mac OS X, that crap for people who can afford PowerPC chips ! You have a lot of nerve young boy to interrupt our most metaphysical discussion !

Sorry, but then how do you run unix on a Mac II your honor (I thought I’d better get polite)

Oh ! Your honor eh? Come have a cup of tea, I’ll explain a bit young boy. I use A/UX.

What is that ?

It’s a commercial unix for macs by Apple, with mac gui and everything. Fritter will tell you about it.

Who ?

Fritter! Are you deaf young boy ?

This was getting pretty laborious. And anyway, that’s not what I wanted to tell you about. I wanted to talk to you about what it means to get into open source with MacOSX. What you need, what you use, what’s in there. First of all, you have to leave Cocoa and Aqua behind. This is the world of command line but also and mostly X11. All *nix windowing is based on X11R6 window server and client. XFree86 being the most popular one, as it is an open source project. Torrey Lyons’ XonX project does the trick of making it run inside Mac OS X with window client : either full screen or rootless, that is having both the aqua desktop and the X11 desktop at the same time. Basically, what we have here is windows with a mouse. This is almost nothing but it means a lot because we now can run any window manager on top of it or at least have many shells (XTerms) open at the same time.

In other words, that’s just the beginning. The window manager is something that will give your X11 desktop some look and feel and some functionality. There are lots of them but among all, Enlightenment is surely the most gorgeous with its cool themes and effects while WindowMaker is something closest to Mac OS X with its Dock. As a matter of fact, it is part of the GNUStep project which aims to make an open source version of NeXTStep which happens to be the mother of MacOSX (I think BSD is the father but who knows for sure). I tried a few others but WindowMaker remains my choice for its ease of configuration and overall performance and stability, much like aterm as my X terminal application. It is very responsive and can have a very nice looking transparent background like now does in 10.2. One very cool feature of X is the possibility of having many "virtual" desktops at the same time so you can switch to either one instead of cluttering windows on top of one another.

OroborOSX goes in another track by providing an aqua look and feel to rootless X11 and provides its own version of XDarwin. If however you want to immerse yourself in a totally linux type of experience, there are complete desktop environments like GNOME and KDE with a toolbar that will make any Windows95 user feel right at home. While they make big packages to install, they also offer the possibility to run many applications built on their frameworks, although you will only need either gnomelibs or kdelibs to use most of them.

Which brings us to another point. While in Mac OS X you get everything you need to run your applications, you will need to get everything to run your open source applications because everything here is pretty much organized in a "I provide this service and I use this service" bunch of libraries and utilities. There is glib which is used by many applications, gtk+, tk, motif and qt as major sets of (very roughly said) toolkits / gui elements. For graphics rendering, libraries such as jpeg, png, tiff, libungif, for multi-languages and character sets support there is gettext and libiconv, you have freetype for true type fonts rendering, esound and audiofile for sound support, libxml for xml support and others as you and your applications have more needs (note that you still don’t have a single application in all this). Some programming languages are also platform-independent and rather need a platform-specific virtual machine to interpret their code. While perl and java come built-in, and tcl too since 10.2 (often used in the tcl/tk combination), you might also need python, ruby or php.