- You should pay strong attention to getting the syscall layer correct. If you implement the syscall layer well, it should be possible to use Mac OS X's userland on top of the lower level layers. That would enable you and others to compare the Mac OS X userland against the OSS userland components. That should make this significantly easier. It would also enable you to try a userland from Apple's Darwin images.
- You can use Gentoo Prefix to assist you in development. It is a userland package manager that lets you build a fairly large body of existing UNIX software for Mac OS X. What should be particularly interesting to you is that its dependencies are fairly light. Installing it should require only standard UNIX utilities, a toolchain, libc and the system headers. Once it is installed, it depends on only libc and the system headers. There might be a few other libraries that I missed, although they would be things like libm and libdl.
- If you are interested in seeing widespread adoption, it might be better to pick a less restrictive license. The WINE project uses the LGPL, which would probably work well for you. It is important to make a decision on this before you start receiving contributions, because it will be a pain to switch should you change your mind afterward. This is especially true with the GPLv3 because people tend to be very litigation-happy when things involve it.
- This is an awesome idea. Ignore people that say that this is a waste of time. Their opinions are not worth your attention.
I doubt that Darling would result in making Linux into a perfect replacement for Mac OS X, but I think Darling would make Mac OS X development on Linux easier. If Darling can obtain near perfect operation when paired with Mac OS X's actual userland, that would be a nice bonus.
Last edited by ryao; 12-08-2012 at 08:16 PM.
Great project, congratulations on the progress you've made.
To prevent some duplication, here's another project with similar goals (apologies if you've already aware of it):
Using these you can build both iOS and OSX software using either gcc or llvmgcc on either Linux or Windows. You need to bring your own SDK of course. I've not yet looked into the feasibility of building Darwin libc or any of the other system libs (nor the legality of distributing these). I think there's definitely a gap for the OSX/iOS equivalent of MinGW-w64.
My build scripts and patches are a bit untidy, I'm currently engaged in an effort to merge this work into crosstool-ng which will force me to clean things up.
Another project that's fairly closely related is Cocotron, an effort to make open versions of Cocoa for Windows:
I've a feeling that with all these bits lying around, something really cool could be cobbled together.
There is a problem with the OS/2 approach: unlike what you believe, it requires a *huge* investment of time in developing all the layers, which leads to basically recreating the original system. And that doesn't integrate very well with a Linux (desktop) environment. There will always have to be a line where you stop immitating and start integrating with "standard Linux layers".
Also given how much Apple's APIs rely on Mach kernel stuff, this is certainly not something I'd like to be putting into the Linux kernel. Not to mention how crappy Mach is. In certain synthetic tests, programs for OS X run faster under Darling than on the original system and Mach is to blame for that. We're talking orders of magnitude faster. But before anyone starts saying "Darling is faster than the original system", everything that comes from GNUstep seems to be way slower actually.
With the Wine approach, the similarities between the OS X and Linux userspace are in my favor. In my loader, OS X binaries are being dynamically linked against native ELF libraries where applicable.
Also, note that I am not doing this for any specific OS X applications. I think GNU/Linux is a very good platform when it comes to application availability and quality. By the way, I use Wine only like couple of times a year for stuff I could absolutely do without.
I'm doing this to give people a choice and to make Linux an even more "universal" operating system. I also do this because it's *not* something that exists in ten different variants and has been done by hunderds of people before.
As for LGPL/BSD: I do not use the BSD or similar license for a purpose. You wan't to make money off this? You either give me a cut or share your code with others. I find it fair.
Anyway, have fun with your effort. It will be nice if it results in something.
I think this is fantastic and I think it will become a greater success than wine and in less time, as long as enough people pitch in. Keep in mind, it shouldn't take as long for this project to work because Mac uses OpenGL, it can run X11 programs, it is BSD based, and there's just overall more similarities to the 2 OSes than there are with Windows. That being said, many games that are on Mac (which there are actually a lot of now) should run much better on linux than running the windows version of that game in Wine. It could get programs like the Adobe CS to operate nearly flawlessly, whereas getting the Windows version to work has overall been a complete failure. Programs like iTunes or Xcode could be used, which would be handy for any iOS developers.
While I'm sure some of you may disagree with me on this, just note that comparing Windows to Linux is like comparing a fish to a rodent. They're both animals, they both have circulatory, digestive, nervous, sexual, etc systems, but they're otherwise nothing alike. Mac vs Linux is like comparing a cat to a rodent. Still blatantly different but far more comparable than a fish. Comparable to the point that a rodent could wear a cat costume as a disguise and get away with it.
Somewhere down the line, I think it'd be cool if there was a PPC version of this that could run the old mac programs. I would only expect this to work on a PPC processor of course.
Last edited by schmidtbag; 12-08-2012 at 09:17 PM.
http://transgaming.com/cider . I believe cider might actually have been a fork of wine (like cedega, which si from the same company) from when it was BSD licensed.
Awesome! I looked around a few years ago for a project like this, and was surprised when I couldn't find anything. Good luck - I really hope this project takes off.
But none of those things are related to the reasons people are interested in running apps from OS X.... it shouldn't take as long for this project to work because Mac uses OpenGL, it can run X11 programs, it is BSD based ...
Yes, you can run X11 and OpenGL programs on a Mac. But guess what? As far as I know, every one of those programs already runs on Linux. The reason people wanted X11 on Macs was so they could run open source applications!
BSD, X11 and OpenGL aren't going to help you, however, if what you want to do is run an app that uses Quartz and/or any of the other Mac-specific frameworks.