Wine (acrónimo recursivopara WINE Is Not
anEmulator, isto é, WINE Não é um Emulador, em tradução livre) é
um camada de compatibilidade para sistemas UNIX que tem como objetivo
a implementação da API do Microsoft. Desta forma, em teoria, o Wine
permite a execução de aplicações desenvolvidas para ambiente Windows
nativamente noutros sistemas operativos. Wine, traduzido literalmente do
inglês para o português, significa vinho, o que levou à escolha de uma
taça de vinho como logotipo do Wine.
Por reimplementar as bibliotecas do Windows o Wine não é
um emulador, não fazendo qualquer emulação para executar software para Windows.
A implementação da API do Windows faz-se através da utilização de APIs e
funções específicas de ambientes UNIX, sendo apenas necessária a implementação
adicional de um carregador de aplicativos no formato PE, capaz de os
converter para o formato ELF em run-time.
O WINE atua, então, algo como um "tradutor":
toda vez que ocorre uma chamada para a função desenha Cubo que estava
implementada na DirectX.dll, por exemplo, o Wine traduz esta chamada para uma
de suas próprias bibliotecas em que alguém escreveu uma função similar para
realizar exatamente o mesmo, desenhar um cubo na tela. Por isto às vezes os
jogos que rodam em cima do Wine geram erros, pois executam chamadas a funções
que o Wine não sabe como interpretar, isto é, chamam bibliotecas ou funções
muito novas que os desenvolvedores do Wine ainda não programaram. No entanto, o
Wine permite a utilização de bibliotecas nativas, apesar de, dado o facto de
ser uma aplicação em user-mode num sistema operativo UNIX, nem todas
funcionarem. Por exemplo, a utilização do DirectX da Microsoft é uma
impossibilidade técnica (e legal).
O Wine ainda disponibiliza a sua própria biblioteca (Winelib)
por forma a que o código-fonte dos programas concebidos para Windows
possa ser compilado no ambiente UNIX. Assim, programas desenvolvidos para
Windows podem ser portados para plataformas UNIX e, inclusivamente, para outras
arquiteturas, desde que exista o código fonte. No entanto, os programas
compilados com Winelib precisam ser executados sempre no Wine e, em particular,
sempre na mesma versão.
O nome Wine era inicialmente um acrónimo
de WINdows Emulator. Seu significado mais tarde deslocado para
o Acrônimo recursivo, Wine Is Not an Emulator. Embora
o nome às vezes aparece sob as formas WINE ewine, os desenvolvedores
decidiram padronizar para Wine.
O Wine foi também um dos alfas mais longos de
todos. Levou cerca de 12 anos desde o início de seu desenvolvimento em 1993,
por Bob Amstadt e Eric Youngdale, até a versão 1.0, lançada em junho de 2008.
O projeto está atualmente na versão 1.7.53, desde 16
de outubro de 2015. Já executa muitos programas, entre eles Adobe
Photoshop,DreaMule, Filezilla, Macromedia Flash, Microsoft
Office, Corel Draw (até versão 8), Microsoft Internet
Explorer, mIRC, uTorrent, Ares Galaxy,Shareaza, Firefox (versão
do Windows) e Winamp. O projeto também é capaz de executar diversos e
conhecidos jogos como Need for Speed Underground, Warcraft III, Starcraft,
Max Payne, Max Payne 2: The Fall of Max Payne, Counter Strike, Half-Life,
Half-life, World of Warcraft, Resident Evil 4, Tetris Zone,
entre outros.
O líder do projeto é Alexandre Julliard.
História
Bob Amstadt e Eric Youngdale iniciaram o projeto Wine
em 1993 com o objetivo de rodar programas Windows noLinux.
O projeto foi inspirado por dois produtos da Sun Microsystems,
oWabi para Solaris e a Public Window Initiative — uma
tentativa de ter a Windows API totalmente reimplementada
como domínio público e um padrão ISO, mas que foi rejeitada por
pressões da Microsoft em 1996. O Wine originalmente tinha como
alvo os programas para Windows 3.x (16-bit), mas depois passou a focar também
em 32-bit e 64-bit. O projeto ganhou corpo em discussões na Usenet no
grupo comp.os.linux em junho de 1993. Alexandre Julliard assumiu a liderança do
projeto em 1994, e o conduz desde então.
O projeto mostrou-se difícil e demorado para os
desenvolvedores, principalmente por causa de documentação incompleta ou
incorreta da Windows API. Enquanto a Microsoft documenta extensivamente a
maioria das funções, áreas como formato de arquivo e protocolos possuem
vários pontos obscuros, ou nenhuma especificação pública oficial. O Windows
também possui funções de baixo nível e comportamentos não documentados que o
Wine precisa replicar precisamente de modo que alguns programas funcionem
perfeitamente. Consequentemente, o time do Wine fez engenharia
reversa em várias chamadas de função e formatos de arquivos. Mais
recentemente, alguns desenvolvedores sugeriram táticas como examinar
o código fonte de programas de código aberto.
O projeto Wine foi lançado originalmente na mesma licença
MIT que o X Window System, mas devido ao receio de surgirem
versões proprietárias que não contribuiriam com o projeto principal, em
março de 2002 ele foi relançado sob a licença LGPL.
O projeto lançou oficialmente uma
versão beta 0.9 em 25 de outubro de 2005. A versão 1.0
foi lançada em 17 de junho de 2008, após 15 anos de
desenvolvimento. A versão 1.2 foi lançada em 16 de
julho de 2010, e versões de desenvolvimento continuam a serem
lançadas geralmente a cada duas semanas.
Patrocinadores e Colaboradores
A principal empresa que patrocina o Wine é
a CodeWeavers, da qual Alexandre Julliard é empregado; outros
desenvolvedores, tanto do Wine quanto do CrossOver, também são empregados
da CodeWeavers.
A Corel se envolveu durante um tempo, dedicando
um time de desenvolvedores para trabalhar no Wine sob o comando de Julliard. O
interesse da Corel era em portar o Corel WordPerfect Office para o
Linux. Posteriormente, a Corel cancelou seus investimentos em projetos
relacionados ao Linux após investimentos na empresa feitos pela Microsoft,
cancelando inclusive a colaboração com o Wine.
Outro patrocinador inclui a Google, que contratou a
CodeWeavers para corrigir bugs do Wine que afetavam o Picasa no
Linux; a Google ainda contratou serviços de melhorias para o Adobe
Photoshop CS2. O Wine também se beneficia regularmente do
programa Google Summer of Code.
O projeto ReactOS é feito em conjunto com o
Wine, ou seja, melhorias do Wine são colocadas no ReactOS e vice-versa.