Verwijderd schreef op zondag 10 juni 2007 @ 19:24:
Ik gebruik ubuntu en ik vroeg me af of het mogenlijk is om programma's die gemaakt zijn voor mac. Bijvoorbeeld photoshop op linux te instaleren. Het os van mac is toch gebaseerd op linux. dus zou het toch mogenlijk kunnen zijn?
Zoals anderen reeds gezegd hebben: Mac OS X heeft een UNIX-achtige core, gebaseerd op een hybride mach/BSD-kernel en BSD userland, maar heeft voor de rest niets gemeen met Linux, wat op zich slechts een kloon van UNIX is. De "echte" UNIX met nog appreciëerbaar marketshare zijn Solaris (SunOS5) en in mindere mate AIX en HP-UX.
Op zich kunnen alle (ja, zelfs Windows) operating systems "mac software" draaien. Het is maar hoe je "mac software" wil definiëren. OS X is een radicale wijziging in vergelijking met Mac OS 9, verder bouwend op het NeXTSTEP systeem, gebouwd door NeXT, dewelke dan weer opgericht werd door Jobs wanneer ie door Apple de laan was uitgestuurd. Nu, NeXTSTEP maakte net als Apple vandaag hardware om samen met hun OS (NeXTSTEP dus) aan de man te brengen. Evenwel was NeXT niet zo protectionistisch als Apple heden ten dage, en was het de
bedoeling een open standaard te maken op basis van hun operating system, wat culmindeerde in OpenSTEP (dat oorspronkelijk zelfs door SUN zou worden gebruikt in plaats van hun verouderende OpenLOOK). Mac OS X maakt gebruik van deze OpenSTEP specificatie maar heeft
véél extensies.
GNUstep is een implementatie van OpenSTEP. OpenSTEP definiëert de "libraries" (= de herbruikbare code om zowel het visuële als niet-visuële van het operating system te programmeren) voor een NeXTSTEP-achtig systeem. Apple heeft hun implementatie van deze library interface de nickname "
Cocoa" gegeven. Een van de doelen van GNUStep is het herimplementeren van Cocoa als vrije software. Apple levert hun implementatie van Cocoa echter niet als open source of met de APL licentie, dewelke niet combineerbaar is met de op Linux veel meer gangbare GPL. Dus het GNUstep project dient Cocoa dan ook te reverse engineeren (denk maar een beetje zoals
Wine, maar dan voor de Win32 API van Windows), zodat er verre van 100% compatibiliteit gehaald wordt.
Als je een "mac programma" dus definiëert als zijnde eentje die énkel gebruik maakt van de OpenSTEP specificatie en de stukken van Cocoa die door GNUstep zijn geherimplementeerd dan zal dit programma draaien op elk operating system waar de GNUstep libraries naar geport zijn (Linux, *BSD, Solaris, Windows, zelfs Mac OS X zélf). Om bovenvermelde redenen is dit slechts mogelijk voor de meest triviale applicaties, zodat in de praktijk een Mac programma énkel op Mac OS X draait; of beter gezegd, elk operating system waar Cocoa beschikbaar is (Mac OS X dus). Zeker gigantische programma's zoals Photoshop zullen dus niet en ook niet op korte of lange termijn op de GNUstep libraries draaien (met die opmerking dat Photoshop eigen libraries gebruikt en in veel mindere mate Cocoa, maar die libraries dienen echter ook geporteerd te worden).
Een voorbeeld van zo'n 'OpenSTEP'-applicatie die zowel op GNUstep als Cocoa draait is
GNUMail. Het toont aan hoe applicaties die naar de OpenSTEP specificiatie zijn geschreven perfect op Windows, GNU/Linux en Mac OS X draaien. Zoals eerder aangehaald zijn de features die Apple aan Cocoa over de jaren toegevoegd heeft echter te verleidelijk om links te laten liggen en enkel de OpenSTEP APIs te gebruiken.