Darling: Execute Aplicações do Mac OS X em Linux !

Arucard1983

Power Member
Uma extraordinária novidade para quem utiliza o Linux! :o:001::D

Foi apresentado um novo projecto open-source que pretende a execução de software do Mac OS X em sistemas Linux, de forma similar ao Wine que correr programas do Windows em Linux, ao implementar as bibliotecas respectivas no Linux.
Este novo software foi baptizado de Darling e consiste numa implementação open-source de uma extensão do kernel Linux para compatibilidade de módulos do Darwin, e um conjunto de ABI e frameworks que as aplicações do Mac OS X utilizam. :)

http://darling.dolezel.info/en/Darling

Por agora a compatibilidade de software é reduzida, mas para quem queira experimentar basta (por agora) transferir o código-fonte e compilar, tendo em atenção as dependências de pacotes, obtendo um mini-Mac OS X userland open-source apto a correr algum software do Mac OS X sem necessitar de instalar uma máquina virtual com o Mac OS X (e violar os termos de contrato de licença da Apple! :002::joker:).
 

Arucard1983

Power Member
Este projecto só tem quatro meses, mas o autor principal (
Luboš Doležel) afirma que sem ajuda da comunidade open-source a implementação de frameworks mais complexas como o Cocoa será bastante complicada. Por agora, a sua prioridade foi criar as extensões de kernel para correr directamente (algumas) aplicações gráficas e de linha de comando (a maioria), e trabalhar na primeira fase de um cross-compiler que permita compilar programas em Objective-C em programas híbridos que seriam assim executados em Linux (com a ajuda da framework do Darling).

Até aqui nada de novo (o Winelib também tem um fim similar). A respeito do Darling, os componentes implementados foram até ao momento (em parte!):
Um loader Mach-O e MacBinary
Um tradutor Objective-C Runtime
Um instalador MacArchive
(Futuramente Instalador dmg e CoreData)
Core Services
Core Security
Apple Event
IOKit
LLVM-GCC

E daí até ao Cocoa ainda faltará um bom bocado! Mas se este projecto tiver pernas para andar, será possível correr algum software do Mac OS X em Linux!
 

Arucard1983

Power Member
Ao ler com atenção o site do autor é bem provável que utilize a excelente implementação do Cocoa API utilizando o GNUstep, que permite compilar código Objective-C e Cocoa, como um dos módulos do Darling.
Desta forma, a primeira fase é a implementação dos módulos do kernel para o suporte Mach-O Darwin, e depois a implementação das classes Cocoa API será feita ao combinar o GNUstep no projecto. (E aí deverá correr e instalar as primeiras aplicações do Mac OS X em Linux :))

A respeito do iOS e do Carbon API, o autor considera esta parte menos prioritária, dado a necessidade de implementar emuladores ARM e PPC para a execução deste gênero de programas (embora existam programas x86 escritas em Carbon no catálogo da Apple :002:).

Vai ser bonito (conforme os comentário do Phoronix) quando for possível instalar e correr o Final Cut Pro 7 :001:, ou o Autocad 2013 (versão Mac) :001: em Linux. :o
 

Arucard1983

Power Member
Se a Apple tentasse lançar algum processo, ela simplesmente não teria qualquer cabimento legal porque:
O Gnustep e o Darling implementaram independentemente as API do sistema Mac OS X, da mesma forma que o Wine implementou as API do Windows NT :-D
(Então porque diabo, projectos como o Cocotron ou o GNUstep que implementaram a esmagadora parte do Cocoa API, faltando o Darling implementar o Mach-O loader, que duram desde 2005 :-D nunca foram importunados pela Apple ?)
Algumas porções do código-base do Mac OS X é open-source e utiliza tecnologias utilizadas pelo GNU/Linux, a criação do Darling/GNUstep é basicamente o retorno do investimento ao criar pelo menos um ambiente cross-plataform para portar programas Mac OS X para Linux e vice-versa (e vários programas do Mac OS X foram portados para o GNUstep sem que a Apple mandasse ao barulho).
O que a Apple poderia fazer em termos legais, era manter o Mac App Store fechado e autenticável pelos sistemas Mac OS X "genuínos", se bem que esta loja não tenha o monopólio absoluto da venda de software para Mac. :002:
O objectivo do Darling é correr aplicações Mac OS X que não estejam tão dependentes da Apple, mas não deixa de ser curioso é que muitos antigos utilizadores da plataforma Mac (que mudaram devido à evolução actual da plataforma) sempre gostariam de correr determinados softwares da era Mac pré-Store em máquinas Windows/Linux (O GNUstep já foi portado para o Windows :002:, mas portar o Darling para Windows só seria possível com o muLinux com o MinGW, e se....)

Se a Apple começasse a armar em carapau de corrida, acabaria por dar publicidade gratuita ao Linux, ou até a Canonical que poderia lançar um panfleto publicitário do gênero: "Download Ubuntu, and execute everything... For free!"
(O mais curioso é que o autor do Darling acredita que este projecto tornaria o Linux no Desktop, um sistema operativo universal ao correr aplicações do OS X, Windows e Linux! Falta é o Android :-D:002:)
E depois a União Europeia ou outra agência reguladora concluiriam que o Darling não violaria a propriedade intelectual da Apple, porque o projecto simplemente não usurpou nenhuma das suas patentes!

A questão actual é que aplicações do Mac OS X valerá a pena correr no Linux com o Darling. Tirando os ports directos do Linux/X11 para Mac OS X, os jogos aparentemente seriam um grande benefício porque o OS X utiliza o OpenGL, OpenCL e OpenAL da mesma forma que o Linux (embora o OS X criou frameworks do Cocoa de ligação designadas Core Graphics, Grand Central Dispatch (Que é open-source :joker:), Core Audio, respectivamente). No entanto, uma boa parte destes ports foram feitos através do Winelib ou do Cider (uma versão proprietária do Wine, designado Transgaming Cedega), e verifica-se em muitos casos que mais valeria correr o jogo Win32 em Mac OS X pelo Wine padrão (e que já implementou 80% da DirectX 10, mas a parte que falta são as funções de inicialização que somente agora estão a ser implementadas! :)) porque têm melhor performance!
Já os jogos nativamente desenvolvidos em OpenGL já são mais aceitáveis, mas desconfia-se que teriam melhor performance em Linux com o Darling que o sistema operativo original (Devido à aquiescência do kernel Mach, que foi ultrapassado em desempenho pelo Linux 3.x).
Mesmo os programas compilados para consola do Darwin correm muito melhor (até várias vezes!) no Linux!

No entanto, a primeira fase após a conclusão do kernel space (emulação do Mach no Linux) é implementar o Cocoa API (juntar o GNUstep) e torná-lo compatível com software do qual não existe equivalência para Linux (ou quando a versão Windows no Wine tende a provocar problemas), como o Final Cut Pro 7 ou até o Autocad 2013 (corre mal ou não corre de todo no Wine, actualmente :() que teria melhores hipóteses de funcionar no Linux a versão OS X. (Ou talvez corria-se as duas versões no Linux para comparação! :002:)
Com programas do Mac OS X como o Autocad, o Photoshop (a última versão executa bem no Wine) , o SolidWorks e outros a funcionarem no Darling com Linux, isto seria quase uma grande revolução no Desktop Linux :002:.
Isto também significa que com uma grande participação da comunidade open-source será possível correr num período relativamente pequeno de tempo o cliente Steam para Linux, OS X e Windows no mesmo sistema Ubuntu (ou outra distro Linux) em simultâneo :001:

De qualquer forma este projecto provocou uma estranha tempestade em fóruns na Internet, do qual existem até pessoas que queriam que o Darling também suportasse aplicações PPC e o Carbon API (algo que o autor afirma que a seu tempo serão feitos, nem que se utilize no início o QEMU-PPC para este fim, ou criar um emulador userland mais optimizado, ao estilo da biblioteca Houdini que executa aplicações Android ARM em sistemas Android x86 ).

O Darling promete bastante, e espero que tenha sucesso porque possui até um maior potencial para ser mais compatível que o Wine em software de topo :). No entanto, a primeira aplicação que deverá ter o estatuto de Platina será o compilador LLVM-GCC que permitirá compilar código para o iOS e OS X a partir de máquinas Linux comuns (porque está quase funcional), e somente este passo será fundamental para a aceitação deste novo sub-sistema de compatibilidade para o Linux.
 

Gaugamela

Power Member
Epá tem é que haver mais gente a contribuir para esse projecto. É algo brutal. Na minha cabeça sempre fez mais sentido um Wine para Mac que para Windows e hoje em dia ainda mais sentido faz porque todas as companhias suportam MacOS práticamente ao mesmo nível que Windows.
Vamos ver o que sai daí.
 

Arucard1983

Power Member
Até ao momento corre apenas programas simples, especialmente programas de linha de comando do Mach/Darwin sem grande problema. Programas que usam a interface gráfica do Mac OS X, até ao momento só arriscaria pequenos demos ao estilo "Hello World", mas é possível fazer um slipstream das bibliotecas do GNUstep para correr alguns programas simples. :) O autor está a tentar implementar o Cocoa API de forma controlada, tendo em conta a parte do Darwin do qual quase todo o OS X depende dele. (Outra alternativa seria o Cocotron, que também suporta boa parte do Cocoa API): http://www.cocotron.org/
Um artigo do Phoronix exemplifica a compilação de um pequeno programa em Cocoa API no Mac OS X, e depois a sua execução do mesmo programa no Linux (repare o uso do GNUstep runtime!):

http://www.phoronix.com/scan.php?page=news_item&px=MTI0Njc

Entretanto, a sua maior prioridade é completar os módulos do kernel para Linux, de modo a que resto da implementação do sistema não provoque dores de cabeça...

Para os mais curiosos, corajosos que queiram experimentar, devem visitar o site do projecto:
http://darling.dolezel.info/en/Darling

Mas para compilar o software deverão ainda visitar o site:
http://www.gnustep.org/

Portanto, só terão que transferir e compilar o GNUstep em primeiro lugar, e depois transferir e compilar o Darling para habilitar a execução de binários Darwin/Mac OS X. (Na lista de dependências do Darling existe ainda um libbsd que refere a uma camada de compatibilidade do BSD para Linux :))

Não devemos esquecer que este projecto só tem quatro meses e ainda está por definir convenientemente a estrutura básica desta camada de compatibilidade. Ao ler os comentários e artigos escassos (aparentemente, o lançamento oficial só foi ontem!) creio que a estrutura do Darling é o seguinte:

Linux kernel + libc + X.org/Wayland
libbsd + Mach-O + Darwin layer (uma extensão do kernel Linux)
App Loader
GNUstep Cocoa API libraries (Core Data, Core Security, ... )
Programa Mac OS X/Darwin
 

Arucard1983

Power Member
Eu creio que o melhor trocadilho seria imaginar a estória de dois programadores que queriam baptizar os respectivos programas para correr programas do Windows e do OS X no Linux. Enquanto um deles fala da portabilidade desses dois programas, o outro programador meio distraído lembra-se de abrir uma garrafa de vinho tinto para um copo como o logótipo do Linux, e sugere:
"Wine, Darling ?"
:-D

Anedotas aparte, eu pesquisei a história da emulação do Mac OS ao longo dos tempos, e encontrei no meio de muita confusão os seguintes projectos/programas concretos que tiveram alguma relevância.

A execução de programas Mac OS Classic/X noutros sistemas ocorreria por três maneiras:
1º Criar um máquina com hardware compatível para correr o sistema operativo da Apple com o menor número de modificações possível.
Aí temos a evolução dos Mac Clones que foram até licenciados pela Apple na altura do OS 6/7 até que o Steve Jobs terminou o licenciamento a tempo de lançar o OS 8. Curiosamente, a Apple ainda participou num projecto promovido pela Datalight para portar o Mac OS 7 para PC em 1992 8|, do qual correria em cima de uma versão de 32-bit do DR-DOS (uma versão melhorada do MS-DOS que até suportava nativamente multitasking cooperativo :002:), mas passado um ano, acabou por se tornar mais uma curiosidade acessível a poucos. (A Apple abandonou o projecto devido a um estudo interno que desaconselhava seguir este caminho)
Noutro extremo, estão os Hackintosh que correm versões modificadas do Mac OS X.

2º Correr o sistema operativo da Apple numa máquina virtual/emulador.
Temos os exemplos do Basilisk II, e Sheepsheaver que tentam correr o Mac OS 7/8/9 em máquinas modernas e vários sistemas operativos.
No caso do Mac OS X PPC, o único emulador realmente funcional (e cujo desenvolvimento foi abandonado, porque a Apple mudou de arquitectura) é o PearPC que corre algumas versões do Mac OS X, e determinados sistemas Unix/Linux PPC. Este programa contêm pelo menos um excelente emulador PPC/X86 porque suporta multicore e com um i5/i7 é possível emular um G4 a 1 GHz, com melhor performance que o qemu-ppc. Curiosamente, o PearPC poderia ser utilizado legalmente caso este programa fosse executado num Mac X86, com vista a correr o software antigo.
As versões actuais do Mac OS X correm em máquinas virtuais x86 sem grande necessidade de modificações (e problemas de licenciamento adicionais).

3º Criar uma camada de compatibilidade das bibliotecas do Mac OS Classic/X para outros sistemas operativos.
Existiram pelo menos três/quatro programas que contornavam o problema de licenciamento ao implementar as API, embora num dos casos foi obra da própria Apple! (E até tem reminescências do Star Trek Project :002:)
O primeiro exemplo foi o software Executor (inicialmente proprietário, mas passado vários anos foi liberado como open-source, em 2008) que em 1990 até 1995 permitiu a instalação de algum software Mac OS 6/7 em máquinas DOS/Windows e posteriormente Linux (foi um dos primeiros programas comerciais a ser portado para o Linux :joker:). Este programa simulava o desktop do Mac OS e implementava uma parte das API do Mac OS Old World (antes do System 7.1), permitindo a execução de algum software que não necessita-se de funcionalidades adicionais que o programa não tinha. Como foi abandonado após a versão 2.1, hoje em dia não têm maior utilidade que uma mera curiosidade histórica.

O próximo pacote foi obra da Apple (aproveitando a primeira incursão no mundo Unix, ao criar a versão AUX para determinados Mac que podiam arrancar quer o Mac OS Classic, ou lançar o Unix a partir do momento de arranque) que foi um port da versão 7.5 para vários UNIX (Linux não foi o contemplado :002:), num programa designado por Machintosh Application Environment do qual até durou três versões (até ao regresso de Steve Jobs) principais.
O MAE era na verdade mais parecido com o Darling do que outra coisa qualquer :002:, porque consistia num conjunto de ferramentas e bibliotecas de compatibilidade que permitiam a execução de software Mac OS 7 em sistemas Unix (como o HP-UX, Solaris 9,...), contendo um emulador 68k, um modo Desktop compacto inspirado na versão 7.5, em algumas ferramentas de portabilidade (como a integração do clipboard, embora exigisse o uso de um conversor que podia ser utilizado a partir de um conjunto de utilitários situados na borda da janela do Desktop virtual:
8.png


Com a passagem para o Mac OS X que era ele próprio baseado em Unix, derivado do OpenStep, criou pelo menos dois projectos que pretendiam compatibilizar o kernel Mach/OpenBSD (Darwin) com outros sistemas Unix/Linux.

O exemplo mais antigo foi um projecto que criou uma camada de compatibilidade que permitiu a execução directa de programas Darwin (especialmente programas para a linha de comando) no BSD, e funcionou adequadamente até à versão OS X 10.3 (sem gráficos!), embora o projecto acabou por descarrilar dado a reduzida aceitação quer do projecto, ou do BSD em si.
Um projecto similar para Linux foi o SoftPear que era mais um emulador PPC para correr programas Mach-O/Darwin em sistemas Linux.

Por outro lado, surgiram dois projectos que optarem por uma segunda via: criar um cross-compiler para portar software Mac OS X (escrito em Cocoa e Carbon) para sistemas Linux/Windows: Os dois melhores exemplos são o GNUstep, Ringo e o Cocotron.
O verdadeiro segundo exemplo (e para Linux) é o "pai" do Darling :joker:: O primeiro cross-compiler (incompleto) e Mach-O loader designado por Maloader, escrito por Shinichiro Hamaji, que seria o ponto de partida para a criação do Darling por um croata (Dolezel).

Existindo o Darling, o GNUstep e Cocotron com o potencial para criar uma aplicação que habilite a execução de ssoftware OS X em Linux, era bem vindo se existisse maior contribuição da comunidade e um verdadeiro site para o projecto similar ao Wine (incluindo uma base de dados de aplicações!) :)
Este programa só ganhará visibilidade quando suportar os principais programas da plataforma, como os CAD's, Photoshop e companhia limitada. Por agora, terminarei o discurso para separar do outro assunto que seriam os problemas da implementação das API. :002:
 

SimplyFCB

Power Member
Eu também espero que dê certo, embora não precise desta nova "habilidade".

Acho que se for bem desenvolvida (tal como o wine pderia ser, mesmo nao tendo muita razão de queixa) poderá "abrir os olhos" às grandes empresas... As pessoas passavam a conhecer a soluçao LINUX para desktop e haveria muito mais interesse a nível de suporte de aplicações como Photoshop, AutoCAD, etc.

Assim não teriamos que pagar o valor absurdo de uma licença do Windows + Office + tretas da MS ou mesmo ainda mais absurdo como dar mais 500 paus por ter uma maçã atrás...
 

Arucard1983

Power Member
A primeira grande aplicação do Darling será precisamente a compilação de software dependente do framework Cocoa/Carbon para aplicações Linux nativas, de forma mais funcional que o GNUstep, e inclusive a compilação de software Linux/OS X para binários Darwin directamente a partir do Linux (cross-compiling), o que significa que torna-se possível escrever software para o Mac OS X e iOS a partir de máquinas Linux. :)

Outro teste que a comunidade open-source sonha é que fosse possível testar o Steam das três plataformas numa máquina Linux, do qual traduzo o seu comentário:
"Com isso poderia usar no Ubuntu as três versões do Steam. Utilizo a versão Linux (nativa) para correr bons jogos e ajudar a comunidade FOSS (software livre e open-source), a versão OS X para solidariedade :-D e a versão Windows para o resto."
 

Gaugamela

Power Member
Se existem pessoas que dão 500 paus para ter uma maçã atrás não é por causa do software. É para ter algo bonito, brilhante e que funciona sem ter que andar com mil e um tweaks.
 

Arucard1983

Power Member
Certos softwares instalados no Mac OS X podem provocar problemas de estabilidade, não é por ser um Mac que garanta estabilidade garantidamente. As últimas versões do Linux e do Windows já são tão robustas com o OS X, mas nenhum deles é à prova de tudo, basta um driver mal feito para provocar o desastre.
 

Dogzilla

Power Member
Se existem pessoas que dão 500 paus para ter uma maçã atrás não é por causa do software. É para ter algo bonito, brilhante e que funciona sem ter que andar com mil e um tweaks.

Eu cá adoro Mac OS X e se não tenho um é porque o dinheiro nestes tempos não chega para tudo. Se o comprasse, seria certamente pelo meu gosto por Mac OS e não porque o portátil é bonito. Há muitos bonitos actualmente.
 

Gaugamela

Power Member
Mas tu és um daqueles que conhece tecnologia. Vai perguntar a uma míuda qualquer que mal saiba mexer em computadores se gostava de ter um Mac e porquê.
Tens imensa gente que compra Mac por ser Mac. O MacOS é interessante óbviamente. Mas comparado com Linux? Em termos visuais e de funcionalidades não fica á frente embora óbviamente tenha mais dedveloper support.
 
Topo