# Wine

Wine is een opensourceprogramma om software die voor Windows geschreven is te gebruiken op andere besturingssystemen waaronder Linux en Mac OS X. Wine implementeert zowel de Win16-, Win32- en Win64-API en kan bijgevolg 16 bit-, 32 bit- en 64 bit-Windowsprogramma's draaien. Wine kan Windows als besturingssysteem zelf niet uitvoeren. De naam Wine is een recursief acroniem dat staat voor Wine Is Not an Emulator.
Wine werkt op het 32 bit (x86)-, 64 bit (x64)- en ARM-platform.

## Werking

Een programma in Windows maakt veel gebruik van standaard bibliotheken die bij Windows horen. In Wine zijn deze bibliotheken opnieuw geschreven zodat ze ongeveer hetzelfde doen. Hoe beter een programma geschreven is en hoe meer de standaardbibliotheken gebruikt worden, des te groter de kans dat het programma ook in Wine zal werken.
De code van een programma wordt eerst door Wine nagekeken op aanroepen van de bibliotheken. Deze aanroepen worden vertaald, zodat de bibliotheken van Wine worden aangeroepen. Vervolgens wordt de code van het programma op volle snelheid uitgevoerd. Er wordt dus geen code geëmuleerd, maar enkel de aanroepen van de bibliotheken worden vertaald.
In theorie zou een programma daarom ongeveer net zo snel moeten werken als in Microsoft Windows. In de praktijk kan het programma langzamer zijn, vanwege de vertaalslag die gemaakt wordt. Maar een programma onder Wine kan ook sneller werken, omdat de bibliotheken van Wine eenvoudiger zijn en omdat de schijftoegang in Linux vaak sneller is.
Omdat in Linux OpenGL gebruikt kan worden, werkt een programma dat OpenGL gebruikt vaak goed in Wine. In Linux is echter geen DirectX te gebruiken. Toch kunnen spellen met DirectX in Wine werken, omdat de aanroepen naar DirectX door Wine vertaald worden naar OpenGL.
De database met compatibele programma's bevatte anno 2015 ongeveer 22.000 items.

## Emulator of niet?

Volgens de ontwerpers kan Wine geen emulator genoemd worden. Deze stelling veroorzaakt op internet vaak lange discussies. De ontwerpers definiëren een emulator namelijk als een virtuele machine en aangezien Wine geen virtuele machine is, is het dus geen emulator, zoals VMWare Player. Bij een ruimere definitie van emulatie, zoals "het simuleren van een omgeving boven op een bestaande omgeving", kan Wine wel degelijk een emulator worden genoemd.

## Langdurig project

Het Wineproject loopt al sinds 1993. Wine was echter lange tijd steeds maar beperkt effectief: veel programma's waren niet onder Wine aan de gang te krijgen. Dit hoewel veel bedrijven grote investeringen in Wine gedaan hebben.
Een belangrijke reden hiervoor is dat de Windows-API erg complex is en Microsoft deze regelmatig verandert. Zo werd met de introductie van Windows 95 de bestaande 16 bit-API vervangen door een 32 bits-API. Met de introductie van Windows NT werd deze API nog eens flink uitgebreid. Bij Windows 95 werd een grafische interface DirectX geleverd. Bij de introductie van DirectX-versie 3 werd deze echter compleet vervangen door een nieuw systeem. De volgende versies waren minder radicaal, maar nog steeds werd iedere keer een flink stuk van de functionaliteit vervangen.
Een andere reden hiervoor is dat het Wineproject erg ambitieus is; het wil een Windows-implementatie tot stand brengen zonder afhankelijk te zijn van externe componenten. Het gevolg is dat behalve de Windows-kernel ook de bij Windows bijgeleverde bibliotheken herschreven moeten worden. Verder wil men bijvoorbeeld dat Windows-programma's van X11-lettertypen gebruik kunnen maken en men mikt niet alleen op Linux, maar ook op andere besturingssystemen.
Na jaren ontwikkelen heeft Wine in maart 2008 aangekondigd versie 1 uit te geven. Op 17 juni 2008 is uiteindelijk versie 1.0 uitgegeven. Op 16 juli 2010 is versie 1.2 vrijgegeven. Er was na de stabiele release van 1.2 een nieuwe 1.3.x branch begonnen waarbij naar een stabiele Wine 1.4 toegewerkt werd. De Wine 1.5-reeks was bedoeld voor ontwikkelaars. Er werden 31 bètaversies uitgebracht van deze reeks. Uit Wine 1.5 vloeit 1.6 voort. Deze versie werd uitgebracht op 18 juli 2013.
Door Wine werd OpenGL al ondersteund, maar ook DirectX van Microsoft wordt vrij goed ondersteund (intern wordt Direct3D-code omgezet naar OpenGL-code). In 2009 wordt er ook gewerkt aan ondersteuning voor USB. Steeds meer programma's gaan gebruikmaken van de Microsoft .NET-bibliotheken, en deze zijn nog niet eenvoudig onder Wine werkend te krijgen.
In Wine 1.7.55 werd PulseAudio-ondersteuning toegevoegd.

## Commerciële edities

* Crossover Office is een commerciële versie van Wine, gericht op het draaien van kantoortoepassingen en dan met name Microsoft Office.
* Cedega, voorheen WineX, is een commerciële versie van Wine gericht op het draaien van spelletjes.
Beide pakketten leverden in hun doelmarkt een iets betere compatibiliteit en werkten het normaal vrij ruwe, gebruiksonvriendelijke Wine af tot een verkoopbaar product. Crossover gaat hiermee door, maar met Cedega gaat het nu slechter dan met Wine zelf.

## Licentie

Aanvankelijk werd Wine onder een BSD-licentie verspreid. Tot ongenoegen van de Wine-ontwikkelaars gaven bedrijven die commercieel met Wine bezig waren hun wijzigingen niet terug aan het Wine-project. Daarom werd in maart 2002 de licentie veranderd in de LGPL-licentie, zodat het nu verplicht werd wijzigingen vrij te geven.