Slashdot Log In
Run Mac OS X Apps On Linux?
Journal written by Anthony Baby (1015379) and posted by
kdawson
on Mon Jul 30, 2007 07:36 AM
from the must-be-a-layer-somewhere dept.
from the must-be-a-layer-somewhere dept.
I have the urge to commit my 24" Core 2 Duo iMac to a single Linux operating system, thus giving up the goodness of my beloved Mac OS X. I am not a stranger to Linux, but I am a stranger to running Mac apps on Linux. On my PowerPC I can use SheepShaver to run Classic apps. The Mac-on-Linux project can run OS X apps, but it requires a PowerPC, not an x86. Virtualizing and emulating are inefficient, especially given the wonderful results the WINE project has had in getting Windows apps to run on Linux. What I would like is an equivalent: a software compatibility layer that will allow Linux to run Mac OS X apps at native performance. I believe there is some additional complexity in accomplishing this. Mac OS X apps aren't just Mac OS X apps. They are Carbon. They are Cocoa. They are universal binaries. They are PPC code with Altivec. Does such a project exist yet? If not, why not?
This discussion has been archived.
No new comments can be posted.
The Fine Print: The following comments are owned by whoever posted them. We are not responsible for them in any way.
Full
Abbreviated
Hidden
Loading... please wait.
Cocoa and Carbon (Score:5, Insightful)
Wine has taken years to get as far as it has. I suspect that an 'OS X Wine' would take as long.
Re: (Score:3, Informative)
An OS-X Wine would probably not take as long I suspect, due to the techniques developed in writing Wine and the fact that OS-X has BSD roots. Still, not exactly a simple project.
Re:Cocoa and Carbon (Score:5, Insightful)
Correct. I'm operating under the assumption that Cocoa and Carbon use Unix APIs at some level, since they sit on top of a Unix core. So as Wine is an implementation of the Win32 API, the Win32 API is just a fairly low-level API that lets you make windows and buttons and pull-down menus, access the filesystem, access task and memory management, etc., but if you want any of the niceties of newer Windows applications, like toolbars, reconfigurable menus, fancy controls, Windows media, etc., you need Windows/Microsoft DLLs that aren't a core part of the Win32 API proper. Sure, Wine provides open source implementations of some of these, but in most cases you need them provided from the application or from a copy of Windows. The analogy is not quite the same, with Cocoa and Carbon, but I think you get my point.
Parent
Re:Cocoa and Carbon (Score:5, Funny)
Well now I just find that hard to believe.
Parent
Re:Cocoa and Carbon (Score:4, Interesting)
There is already something iBCS, which lets Linux run binaries from other x86 unix-like systems (SCO, Xenix etc... old stuff), and various BSD's have the ability to execute Linux binaries...
You only need to emulate the kernel interfaces, and then the user mode programs/libraries should run atop a Linux kernel just like they run on OSX's existing kernel. Then you can begin reimplementing the proprietary libraries one by one. Those libraries which are BSD licensed you can directly port the source.
All in all, a much easier job than wine.
Parent
Re:Cocoa and Carbon (Score:5, Informative)
The Cocoa API is based on the OpenStep API, which has a full open specification [gnustep.org]. We've had a FOSS implementation of the OpenStep API for years: GNUstep. GNUstep has even implemented some of the Cocoa additions. Producing a Cocoa compatibility layer should be much easier than producing a Windows compatibility layer.
Parent
Re:Cocoa and Carbon (Score:5, Informative)
If you did this, you could run applications that just used Cocoa. Unfortunately, a lot of OS X applications also use Carbon. There is no open source version of Carbon, although a few people have written GNUstep wrappers for the parts of Carbon which are toll-free bridged with Cocoa. You would also not be able to run anything that depends on WebKit (unless you use GNUstep's SimpleWebKit as a stop-gap), QuickTime, or any of a number of other frameworks that have not yet been added to GNUstep.
WINE has had a lot of time and effort put into it because there are a huge number of proprietary Windows-only applications that would be useful on other platforms already deployed. There are far fewer essential applications for the Mac (90%+ of computer users don't use any OS X apps, after all), and so no one has bothered. For the few apps that would be worth supporting, it is probably easier to re-write them from scratch than it is to write a general purpose compatibility layer.
Parent
Mac on Linux on PPC yes, Intel? Nope Won't Work. (Score:3, Informative)
I'm pretty sure Mac On Linux (MOL) won't work for intel machines, but if it did it would more or less do what you want. A short search shows it probably doesn't work, maybe someone should look at porting it to intel hardware (if its doable).
The feature list for processors http://mac-on-linux.sourceforge.net/wiki/index.php
I think for now the
Re:Cocoa and Carbon (Score:5, Informative)
Nice troll, but Wine aims for compatibility with Win32 code, not some specific version of the OS. It already supports more than 90% of the API.
Parent
Re:Cocoa and Carbon (Score:5, Funny)
Parent
Re:also (Score:5, Insightful)
Parent
Re:Cocoa and Carbon (Score:4, Insightful)
Quit with your trollish BS already Anonymous - I really wish you'd get a job and stop posting what seems like thousands of comments a day on
Parent
Re: (Score:3, Insightful)
That you want to run Windows software does not imply that you want to run Microsoft software. Thus, you are not undermining the business models of companies whose software you want to run. Or is the fact that their software only runs on Windows integral to their business models?
Re:Of course you can't (Score:5, Funny)
Damn. This stuff must be expired!
Either that or I'm not using enough of it...
Parent
You're not doing it right... (Score:5, Funny)
Parent
Simple reasons for this. (Score:4, Insightful)
The second reason would be that the people who might work on it are already too busy trying to do the same thing for Windows applications, and unfortunately that has a long way to go as well.
Re: (Score:3, Informative)
10 years (Score:5, Insightful)
I can guarantee you it would take at least that long to reverse-engineer Carbon from scratch. However, Cocoa is really nothing more than OPENSTEP v2. Linux already has an OPENSTEP implementation (GNUStep), so a portion of the work is done.
iTunes (Score:4, Insightful)
This will probably not happen in the near future, though. I think Apple is afraid that a linux port would get reverse-engineered and their DRM would be cracked in a week. But with their apparent success in locking down the iPhone, I find that unlikely.
Re:iTunes (Score:4, Insightful)
Parent
Re:iTunes (Score:5, Interesting)
Now, if there is a nice FOSS "iPod Restore" tool, that would help. Integration into Amarok as a plugin or something would be even better.
Parent
Purpose. (Score:4, Insightful)
Why?
It seems sort of silly to deliberately kneecap yourself like this. Generally, you only see this behavior in serious FLOSS zealots. They're the ones not trying to run closed-source Mac OS X applications.
--saint
Re:Purpose. (Score:5, Funny)
The guy refers to "my beloved Mac OS X" and then goes on and on about how he wants to get rid of it, but can't leave behind the application support. Why?
"Dear Slashdot, I've got this urge to kill my beloved wife. Could you please tell me how to do it, and how to simultaneously make her sister as hot as she is and have her marry me instead?"
What the fuck is he trying to gain?
--saint
Parent
Re:Purpose. (Score:5, Funny)
Please stop the Hans Reiser bashing right now.
Parent
Re:Purpose. (Score:5, Funny)
Didn't Hans Reiser submit that story?
Sorry, that was in poor taste
Parent
Purposes (Score:3, Informative)
If you need OS X applications, why not run Linux through Parallels or some VM? If Linux is your primary OS, use BootCamp to allow access to OS X. These approaches make sense depending upon your needs. Want access to everything
Resist the Urge (Score:3, Insightful)
Re:Resist the Urge (Score:5, Interesting)
I've run *nix on the desktop for roughly 17 years. Last year, after we had a baby and I had essentially no time, I finally got tired of maintaining my system, and thought the "just works" aspect of MacOSX might be a nice change. I've been running 10.4.x on my Core 2 Duo iMac since last October. I've found that after more than a decade and a half of being able to customize my desktop behavior, I just can't adjust to the MacOSX gui. I hate the menu bar at the top, I hate not being able to define *MY* hotkeys for resize, move, and iconify, I miss the easy X11 1-click cut and 1-click paste, etc. To get around some of this, I run most of my shells via xterm. However, X locks solid every few weeks (usually when I scroll too much or too fast in some window).
I also find that the only MacOSX application I ever use is iTunes. I started out using Mail and Safari, but I moved back to Thunderbird and Firefox for the plugins. Specifically, the external editor plugin for Thunderbird so that I can edit messages in xemacs, and the noscript and adbplockplus extensions for Thunderbird.
I also hate that my 4 USBserial connectors are flaky, and have to be re-plugged before they'll all show up on boot. Neither Linux nor FreeBSD had this problem.
At any rate, how is the codeweavers support for playing iTunes videos? That's really the only thing I use iTunes for is video.
Parent
Re: (Score:3, Informative)
"darwinux" (Score:3, Informative)
There's "darwinux" (http://lwn.net/Articles/229088/ [lwn.net]), but this far away from being usable.
You Answered Your Own Question (Score:5, Insightful)
Why? (Score:5, Insightful)
What do you hope to gain by installing Linux as the full-time OS? Please don't flame me, I'd like some logical points, or even a "just because".
Some rationales for an OSX-Linux 'switch'. (Score:3, Insightful)
Re:Why? (Score:5, Informative)
That's a good question. For me, my move from OS X to Linux is motivated by several reasons.
1. Portability
OSX runs on Apple Hardware. It can be hacked, sure, to run on some non-Apple systems, but widescale hardware compatibility is lacking (just look at the difficulties in getting a GeForce 8x00 series card running). With Linux, I have a much wider choice of hardware vendors.
2. Flexibility
Linux gives me a lot more control over my OS. While this is pointless for 90% of users, for me, it is very nice to be able to custom compile a kernel with the options I need, recompile any given app for the characteristics I need, and so on. I can enable, disable, theme, customize, and otherwise hack my environment to suit my needs much more easily than in OS X.
3. Security
OSX is pretty good, but I'm a little worried at Apple's highly negative response to security concerns (anyone remember the wireless driver exploit fiasco?). Also Linux offers some features that OSX doesn't currently offer, such as MAC. 10.5 is supposed to have MAC, but I can't find any info on it. While both systems are good, I perceive the Linux market as responding more credibly to security issues.
4. Software Ecosystem
OSX software is great. However, Linux offers me a great deal more choice, and that choice tends to be much more configurable to my needs. While I love the Cocoa API and what it allows apps to do, Linux is catching on fast, and I find that good GNOME or KDE apps perform most, if not all, the functionality I care about in OSX, while being beer free, and offering me more choices (i.e. Anjuta, Geany, Eclipse, KDevelop vs XCode, Eclipse). There's also a lot of software I like to use that aren't available on OSX yet. I'm starting to learn CUDA, for example, and that is not yet offered for OSX. Also, VMWare workstation offers some nice features targeted at developers (such as host-to-VM project deployment & debugging) which I haven't seen offered yet on OSX.
5. Usability
I know a lot of people disagree with this, but I find a lot of OSX's UI broken, at least for how I use my system. I find the window management to be frustrating, the Dock to be very limited, and the lack of decent app launching & management to be very frustrating (although QS does manage to solve app launching in a pretty nice way). GNOME's clean usability and massive customization have allowed me to create a Linux system that I actually find to be more usable for me than OSX.
I guess I could summarize all of that by one word: choice. For my needs and uses, I find the flexibility of Linux far more convenient.
If OSX's behaviors work well for you, and you are happy with Apple's hardware offerings, then you have the choice of OS X instead!
Isn't freedom of choice a great feeling?
Parent
Re:Why? (Score:5, Interesting)
I can agree with you on Linux being an easier to use server platform, but OS X runs almost all of the same tools so that may change if I used it as a server more often.
Parent
Funny you should mention this... (Score:5, Funny)
Re:Funny you should mention this... (Score:5, Funny)
Parent
You can't (Score:5, Insightful)
You're trying to do something stupid here: a Mac is only good as Apple sold it to you. They've went to thoroughly extensive work to ensure it is so, trying to get something production ready with OSX apps under Linux is begging for problems.
You bought a Mac, use OSX (you can dual boot still, or virtualize).
Why not? (Score:5, Insightful)
It's a fair bet the real answer is one or all of those.
Re: (Score:3, Interesting)
You might need to download a "dodgy" version to do it, but as far as the legal implications go, you *do* have a legal copy and you *are* running it on apple hardware, the license agreement doesn't state that you must run it on the bare hardware and not under a virtualization environment.
Huh? (Score:4, Informative)
Honestly though, Mac OS X really isn't that bad -- in fact, I think it's pretty nice, especially if you come from a Linux background. You do realize that you can run pretty much any Linux app (as long as it doesn't do any funky OS-specific things) natively on Mac OS X, right? You could even run a full-fledged Linux installation via Parallels if you so desire.
Re: (Score:3, Interesting)
I will never understand why someone would buy a $2000 iMac and negate the entire reason for purchasing from Apple -- to run Mac OS X.
The word "never" is a reliable marker for silly thinking.
.DS_STORE droppings everywhere. Network br
OS X is not the sole reason for buying Apple hardware. Some Apple hardware is very nice. The Mac Mini is a great little computer, period; I run Linux and Windows on mine. I have never owned an iMac, but I assume that the Intel generation hardware offers no obstacles (except Apple Bluetooth for non-XP Windows).
Although I like OS X and think it's better than Windows, it isn't perfect. The Finder in OS X leaves
Use VMWare or similar (Score:3, Insightful)
is your best bet right now. I am not sure if OS X can be properly virtualized, since it seems to check whether you are running it on Apple hardware - of course, if you are going to use an iMac, then you are indeed using Apple hardware, but it doesn't seem so to the OS. You'd need to use a hacked version I guess - oh the irony!
If you asked me, I would advise the contrary: run Linux in a virtual environment under OS X. Less trouble to get it running, no need to use hacked versions, and there is a good possibility that features such as Coherence from Parallels or the equivalent in VMWare Fusion might be available for Linux guests someday.
Why not Linux apps in OSX? (Score:4, Informative)
Then be certain you're only running systems with SSE3 or above, since all the intel binaries are optimized for that.
Whoops- also gotta build a compatible CoreAudio system.
Oh no, looks like you're now Apple.
If you're using Mac OS X, you're already using a NeXT compatibility layer on top of a streamlined X and a really high end specialized desktop unix. The question is- why are you trying to run linux? You're using a much higher end unix system that supports X11 and has a full BSD layer, with package managers available. Why don't you just run linux apps in OS X?
Making an OS X "compatibility layer" would essentially just require you to create a shoddy set of OS X libraries- something Apple's already done better.
Take advantage of your resources.
Let me repeat this - OS X is a "mac compatibility layer" running on top of a unix kernel already- it's a totally insane waste of time to re-implement it. If you're that interested in making OS X, you should work for Apple.
Re:Why not Linux apps in OSX? (Score:5, Insightful)
If Apple goes bankrupt, or drops it, then your left out in the cold.
Similarly if Apple don't move it in the directions you want, then your stuck. (think very cheap lowend hardware, or very tiny laptops)
I run Kismac, it's a very nice wireless sniffer similar to Kismet on Linux, but graphical and with good gps integration including downloadable maps. I would like to run this on a tablet or a PDA, but Apple don't make such devices, so i have to run Kismet instead (text based) and then import the data into a mapping program later.
Parent
Funnily enough (Score:5, Insightful)
In short, you aren't going to gain anything by running Linux, except some nebulous feeling of self-satisfaction about something or other, and you are going to lose an awful lot. Running Windows on a Mac makes the Baby Jesus cry; running Linux exclusively gives him slight heartburn.
Market Share (Score:5, Insightful)
The real reason that these companies exist, is that there isn't THAT much of a demand for Mac apps on Linux. There is a large demand for Windows apps on Linux because there are so many Windows developers and subsequently applications that run on Windows. That's why we have WINE.
It would be possible I guess to do Carbon and Cocoa on Linux, re-implement the APIs, but for the amount of applications that there are on Mac that aren't on Windows, there isn't much point.
If Apple opensourced Carbon and Cocoa (Not likely) then I guess they would get ported to Linux by someone, but till then, someone isn't going to do this as the amount of developers out there just isn't high enough. There isn't the interest.
Thoughts (Score:5, Insightful)
- The Officially Sanctioned API (TM) for OS X apps is Cocoa. This is basically an extension of OpenStep. So is GNUStep [gnustep.org]. GNUStep even aims to implement Cocoa's extensions so as to allow Cocoa apps to be linked with GNUStep. However, for the time being, compatibility is incomplete and only at the source level. You might have some luck compiling GNUStep apps on Cocoa/OSX, but not running compiled Cocoa apps on GNUStep/Linux.
- Some people tried to get Darwin binary compatibiltiy into NetBSD [netbsd.org]. However, the project is now dead [hcpnet.free.fr], purportedly due to lack of user interest. This is the only Darwin binary compatibility project I am aware of. What this means is that, at the moment, you can only run Darwin (AKA OS X) executables on Darwin.
- QEMU [bellard.free.fr] is a fast and open source emulator that can be used to emulate, among others, x86 PCs, AMD64 PCs, and Power Macs. This should allow you to run OS X as a guest OS. If you use QEMU to emulate an x86 on an x86, or an x86 or AMD64 on AMD64, it should run close to native speed. That is, as far as the CPU is concerned. Other hardware, graphics hardware in particular, will not have native performance.
- I've been a GNU/Linux user for over ten years. I also used Mac OS X for a couple of years. Eventually, I got frustrated with it and installed Linux on my iBook. I've never looked back. Of course, I am primarily a GNU/Linux and BSD user, which causes the little (sometimes significant) oddities of OS X to frustrate me. If you're primarily an OS X user, this will likely work the other way around.
- GNU/Linux does have some definite advantages over OS X. Just throwing down a few: more customizability, easier maintenance (given a decent package manager, such as apt-get), better compatibility with open-source software, and several possible advantages that depend on your choices: lower memory usage, lower latency, lower disk usage.
- Given that you have a Mac, OS X also has some advantages over GNU/Linux. Among others: it supports your hardware (what you get from Apple, anyway; Linux has the edge when it comes to third-party hardware), companies are more likely to support it (think software, hardware, and manuals), and
- As for why there is no compatibility layer yet: probably just because it's a monumental task. Think about how old Wine [winehq.com] is and how well it works. Then think about Apple's yearly OS upgrades. Then consider that Apple has also moved architectures (PPC -> x86) since the introduction of OS X, and probably will again (x86 -> AMD64 - they ship that hardware, but the OS is still at least mostly x86). Then look at GNUStep and the instructions for building it (you're allowed to shiver at this point). A Mac OS X compatibility layer won't happen anytime soon.
If not, why not? (Score:5, Insightful)
Because it's a terrible, terrible idea. The Mac software stack is *large*, with API compatibility going back 20 years. 3 full-size APIs are supported (bsd, carbon, and cocoa), and they're all constantly being improved by apple. Any such project, while also being an absurd waste of time, could never catch up. Not to mention all the GPU stuff they're doing these days, integrated into the window server (Quartz Extreme, CoreAnimation, etc.). Feel like extending X11 to get decent performance? I don't, and neither does anyone else.
You've already gone past the hurdle that keeps most from using Linux: buying a Mac. If you want all the linux software, just download port from http://www.macports.org/ [macports.org] and let it download prebuilt binaries of traditionally linux applications for your mac. The website is crap but the tool's good and the repository is active and well maintained. They run just like the linux side, only you don't have to start hating your life by using Linux as your desktop OS. Switching back from OS X to Linux is about as painful as shoving a screwdriver in your eye. There's no point.
Some corrections:
* Parallels/VMWare aren't emulating anything. They're using newish x86 instructions to let the system run 2 OS's simultaneously
* Ever consider recompiling? I mean, it's called open source for a reason.
Also, if you're gonna tinker, consider Solaris. It's free and Parallels supports it with nice X11 extensions for mouse sharing, etc. Also, it's BrandZ lets you run Linux binaries.
Linux on Mac (Score:3, Interesting)
There are a couple of Mac apps I'd miss. Number one is Omnigraffle [omnigroup.com]. Really handy for making diagrams. There's nothing close on linux as far as I can see (although I've just tried the OpenOffice Draw program and there's potential there). Second one is Keynote. OSX also has PDF built in as a native format, which is really nice, and the drag and drop support is unparalleled.
I use Linux in a virtual machine on Mac for college. It's about a 2GB code base (or something ridiculous) so I won't be trying to recompile for mac any time soon. It works, but native would be much nicer.
I think the Apple hardware is pretty decent. They cram a lot of good stuff into a small space. I've been hard pressed to get all the same features in a Dell for the same price last time I tried (and it's usually twice the size/weight).
So I think Linux on Mac makes sense for some of us.