Software Spotlight: Well Darling, Shall We Dance?
Well Mac OS X, we meet again…You sinister Unix-like system, wrapped in showgirl makeup. To be honest, we could have had more compatibility between Mac OS X and Linux, had it not been for the major changes made on top of Darwin’s Unix layer and the XNU kernel, including vast changes to the DE and handling of file types. Enter “Darling,” a project aimed at emulating Mac OS X software, much in the same vein of the popular Wine software for Windows binaries. What does this entail? Read on to find out. (image credit: http://darling.dolezel.info)
Admit it, there has been a time or too where you saw an application online only for Windows and Mac, and wished to run it. Proprietary software is very tempting, and a complete no-no for Free Software purists. Why? You have no control over it, lacking “freedom” to examine, distribute, change, and even sell the software as you see fit. Proprietary companies hate this idea, and relegate it to being a “hippie,” arguing there is no place for software in which the developer is not always paid. Remember Bill Gate’s open letter to hobbyists? Yea, that was a bombshell alright. Thankfully there are people out there, such as myself, who hold the viewpoint in which I would gladly use all free software, if all functionality I was looking for was there for said program. Take YNAB (you need a budget for example). I love that software, and how it works. Now, I did switch to GnuCash, albeit with a few functional sacrifices, but boy would I have liked to have that natively on Linux (at one time it was). I don’t believe in sacrificing functionality if that program can be emulated on my system, even though 90 percent of my applications are either Open Source or Free Software now.
Enter Darling, the upcoming OS X emulation layer for Linux. Developed by Luboš Doležel, a native of Prague, the application layer aims to bridge that gap, in the same way Wine has (mostly) done for Windows (Xp) applications. Luboš has intelligently delved into Darwin, OS X’s core system, and rooted out just how to do this. Darling parses executable files for the Darwin kernel, loads them into memory, and executes them to the top layer of Linux. The Objective-C runtime is being heavily focused on, enabling Darling to locate Objective-C metadata and translate that along with GNUstep’s libobjc2 runtime, another area that provides a great base for Darling to be built upon. GNUstep follows closely to the Coccoa framework that OS X makes use of, and you can read more about that here. Apart from all this, the Darling implementation itself is coded in C++11 (as well as Objective-C of course), due to the feature set of C++ greatly helping reduce the amount of code needed to develop features, abvoid bugs, and other duplication of code.
That’s great! Wait a minute…
Darling is not yet ready for primetime, there is much left to be done. Lacking in large part is an ABI-compatible (application binary interface) set of libraries and frameworks, akin to OS X’s. This is possible by mapping those functions to what Linux has, or putting this on top of an existing native Linux APIs. What does work at the moment, is a few console applications, but not much else. Darling must be compiled from source, which isn’t hard, but challenging to new users of Linux. What is very neat, is Darlings ability to mount .dmg (compressed HFS+ images) image files, with the promise of .pkg file compatibility on the way. Native HFS+ support under some libraries is still a buggy mess at the moment.
The innards of Darling are an interesting hodgepodge of dependencies. Notably still required at the moment is GCC for header files, GNUstep for Coccoa and the core of Darling, as well as various libraries for codecs and such. Luboš has kindly put together easy instructions for Ubuntu users, making that distro a good starting point if you wisht to test Darling. Other bits and bobs of the site reveal work being done with the Apple keychain file format, as well as information regarding how Darling interfaces with the Mach kernel portion of XNU. Despite the missing pieces still needed, the functional package has very good performance marks, when comparing to the native Darwin system.
Darling is still meant for hackers, as the project page notes, and not intended for full use just yet. Thankfully Luboš has kept any trace of proprietary OS X code out of the project, complying with Apple’s EULA. Because the project is so new (about a year), little is known about any real compatibility list of what runs and what does not. What is interesting is the projects aim to also support even the ARM platform, but that does not necessarily include iOS devices. It is possible though, requiring a bit of assembly code to be written for that ARM architecture, as well as some kind of support for the UIKit framework. I don’t see this being a priority though, with Android dominating the mobile space, which runs the Linux kernel (albeit still a little modified).
Keep an eye on this project, should be intesting to watch how Darling unfolds as time progresses. If you are a Free Software purist, and still made it this far, thanks for reading. Again, I love Open Source and Free Software, but trying all sorts of neat things in Linux is what I love about Linux in the first place. Being able to test and fiddle with OS X applicaions is, without a doubt, an interesting prospect.