What X11 Support Means
Originally posted by MacManiac1224
I am pretty sure the linux/unix files do not have to be recompiled to use in the X11 implentation
Incorrect. Any x86 Linux app will need to be recompiled for OS X. Also, almost any PPC Linux app will have to be recompiled for OSX (actually for the Mach kernel instead of for the Linux kernel).
Explanation: of course, x86 and PPC processors use different, incompatible instruction sets. Machine code for the x86 processor will simply not function on a PPC processor. In addition, all but the simplest of applications will make use of shared code and kernel-supplied facilities. The ABI (binary interface) between shared libraries is different on Darwin/OSX than it is on PPC Linux systems. Thus, even though the PPC Linux code is written for the PPC processor, it is written with a binary interface to the Linux kernel, and that is incompatible with the OSX/Darwin/Mach kernel.
On the other hand, apps are not compiled against any particular instance of X11 client. One can fairly easily switch between an Apple X11 implementation and a Fink X11 implementation without having to recompile all the X11 apps.
What X11 support buys OSX is not binary compatibility with Linux. It buys simple-recompile compatibility with many (but not all) GUI-based Linux apps. The vast majority of Linux (and other Un*x systems, including Solaris) apps are written using the X11 windowing system. Many newer apps also use features from the Qt library (KDE-native and not cross-platform without a substantial licensing fee) or the GTK library (Gnome-native, and I believe this has been compiled on OSX without problem given some of the titles which are currently cross-platform like OpenOffice and Mozilla). Those which use Qt are most likely not going to be ported to OSX unless there is significant demand (note: KHTML, the basis of Safari, uses Qt, but Apple "cheated" and re-implemented the Qt calls they needed to use in pure Cocoa in the WebCore framework).
X11 allows a significant portion of apps written for Un*x to be recompiled on OS X with only minor modifications (same as modifications required to run on any other new Un*x).
Of course, Apple's X11 isn't the only implementation out there. It's just the most polished, the most native, and of course the most officially Apple-supported. That's why this X11 client app is an important project: it gives Un*x refugees an official sanctuary. On the other hand, X11 apps, by the very nature of X11, must necessarily be relatively ugly. Apple's X11 implementation hooks into Aqua and Quartz services as much as possible, making the apps a little "better" looking and performing, but still they don't quite fit into the rest of the system as true OSX apps do.
Thus, it is vital that the more "mainstream" apps pull on a Cocoa skin to replace their other-Un*x X11 skin for OSX, but little apps and in-house utilities can of course just keep X11 for ease of maintenance across platforms. And, of course, apps which require X11 peculiarities (run on one machine, display on a different one, for instance) can always stay in the confines of X11.