discuss-gnustep
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Compiling GNUstep vs. Cocoa?


From: David Chisnall
Subject: Re: Compiling GNUstep vs. Cocoa?
Date: Wed, 19 May 2010 00:02:22 +0100

On 18 May 2010, at 23:48, Jay Phelps wrote:

> David, you rock. Now that's a great answer.
> 
> The justification of running OS X apps under Linux is that there isn't a 
> wide-spread retail distribution for Linux applications, and there's certainly 
> a lot of holes in quality apps.  An astoundingly impressive collection, but 
> for a lot of people (i.e. idiots) they just simply aren't easy and clean 
> enough to use.  Although, this is definitely an arguable statement.

The problem with OS X apps on Linux is that they would look and feel like OS X 
apps.  You'd either need a complete suite of OS X apps - in which case there 
isn't much point in running Linux at all, just buy a Mac - or they'd look and 
(more importantly) feel weird and out of place.  

Making OS X apps run on Linux won't improve Linux usability, it will make it 
worse.  Improving the UIs of native apps will, and is a lot less effort.

> The other reason would be to try and force Apple to be more open with their 
> OS.  If a true OS X alternative could arise that gets the best of both 
> worlds; Linux apps and some Mac apps; if their proprietary APIs and OS are no 
> longer proprietary (sort of), then I think it might convince Apple to jump on 
> the band wagon. I realize this is totally wishful thinking, and probably not 
> likely, it is one of my reasons anyway.

If you've paid attention to Apple at all since Steve Jobs came back, you'll 
know that forcing them to do anything... doesn't work.  Apple makes products 
for Steve Jobs.  That is their one and only purpose.  Fortunately for their 
shareholders, Steve has pretty good taste, so stuff made for him generally has 
a large secondary market.

If anything, an open competitor would give Apple less of an incentive for 
openness.

> Although crazy, it is my goal to learn and implement this compatibility.  
> Obviously over my head, but that's always what I like.

Good luck.  Check out the NetBSD Darwin compatibility layer and the Mach-O 
documentation on developer.apple.com.  Getting something that can load trivial 
OS X programs (no ObjC) on Linux is probably six months or so of work for an 
someone with some C and x86 asm experience.  Once you've done that, you need to 
start working on ObjC ABI compatibility.  

> Are there any major project based off Darwin that have made significant 
> headway? I could only find PureDarwin.

Darwin is a waste of space.  Almost nothing in the kernel is interesting (well, 
I quite like IOKit, but nothing aside from that) and the open source code is 
missing some very important bits.  The entire sound stack is missing, so if you 
want to use Darwin you'd need to write a replacement for CoreAudio, among other 
things (a lot of the drivers are also closed).

Of course, if you're using Darwin, then there's a slightly easier approach - 
you could compile GNUstep for the Mac Objective-C runtime.  I don't think this 
works currently, but it's much less effort to make it work than it would have 
been a year ago, now that we are using the Apple-defined APIs for the ObjC 
runtime.  You'd still need some stuff, like support for Core Foundation strings 
(Objective-C strings on OS X are CF strings, not ObjC strings), but it might be 
possible to create a Darwin distribution that could run (some subset of) OS X 
apps under X11 with GNUstep.

Someone said a year or two ago on the Étoilé list that they were trying this, 
but didn't make any progress.

> Thank you very much for taking the time to help shed some light. SO cool.

No problem, although I'd rather see high-quality GNUstep applications than 
effort spent on projects to run proprietary apps on Linux.  If you're willing 
to use proprietary apps, I'm not sure why you wouldn't be willing to run a 
proprietary OS.

David

-- Sent from my Apple II




reply via email to

[Prev in Thread] Current Thread [Next in Thread]