Darling: Wine for OS X Applications
The latest in the "interesting, but perhaps misguided" department, Darling is a project that aims to build a WINE-like environment for running OS X applications on Linux. As with many projects that deal with reverse engineering proprietary systems, Darling faces significant challenges. However, if Darling is successful, the Linux desktop would have access to some of the best desktop applications available. Darling is still in very early stages; if you believe in this vision, I'm sure there is a place for you to help in moving the project forward.
I have to admit that my first reaction to the project was "why does this exist?" Common logic would say that the development efforts that Darling requires would be better spent improving native Linux applications and environments. Apple's OS X is a fast moving target too. Desktop developers are constantly needing to update their code to remove or replace deprecated API calls or add support for new functionality their customers will expect. I like to think that anything is possible in code, but Darling faces an uphill battle.
To see why this is, conceptually at least, possible, we need to take a brief (extremely brief) look at the history of OS X. OS X development is based on the combination of the Objective-C language and the Cocoa APIs. Objective-C is a strict superset of C inspired by SmallTalk developed in the 1980's. Cocoa is a collection of Objective-C libraries that originated as NeXTSTEP, the operating environment that shipped on NeXT computers, created by the company of the same name started by Steve Jobs when he was ousted from Apple. In 1993, NeXT collaborated with Sun to build a smaller version of NeXTSTEP for Solaris, which was dubbed OpenStep. The OpenStep specification was released in 1994, and open source enthusiasts rewrote their existing NeXTSTEP compatibility library, which eventually became GNUstep. GNUstep has tried to maintain compatibility with the evolution of Cocoa over the years, but Apple releases as little code as they can, so many things that developers use on OS X are not available on GNUstep. So, while the possibility for OS X applications to run on GNUstep exists, the reality is that there will almost certainly be calls to methods in frameworks that do not exist, which will cause the application to crash, if it starts at all.
On the other hand, if Darling is able to fill the gaps left by GNUstep, and provide the interface enhancements required to recognized the OS X ".app" directory bundles as applications, the benefit to the Linux desktop would be fantastic, and make Linux more attractive to the public. Darling is not an emulator or a virtual machine, so the applications should run at native speed. If they can run reliably without crashing, Darling could open up Linux to a thousands of carefully crafted applications.
After thinking the project through, I changed my mind and now feel that it is a worthy, if lofty, goal. What I am not sold on is if it is actually possible. I ran through the installation steps posted on the Darling wiki, but ran into several issues compiling libraries and dependencies. I do like to think that anything is possible in code, so maybe there are more creative developers out there than I am who would like to take a crack at it. It would be something else to be able to drop an OS X app on a Linux desktop and run it flawlessly at native speed.