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 ?"
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
, 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
), 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
)
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
). 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
), 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
, 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:
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
: 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.