Wine

Wine er et frit tilgængeligt program der tillader programmer, skrevet til at køre på Microsoft Windows, at køre på Unix-lignende styresystemer. Wine indeholder endvidere et softwarebibliotek kaldet Winelib, som udviklere kan anvende til at lave Windows-programmer, som skal overføres til Linux.

Wine er ikke en emulator, men et kompatibilitetslag, der har alternative implementeringer af dynamic link libraries (DLL-filer), som Windows kalder, når de køres. De skal fungere som en substitut til Windows NT kernen. Udviklingen af Wine er sket gennem Black-box testing for at undgå copyright-spørgsmål.

Oprindeligt betød Wine WINdows Emulator, men det skiftede til betegnelsen Wine Is Not an Emulator. Nu og da kaldes programmet WINE og wine, men udviklerne har besluttet at anvende betegnelsen Wine.

En undersøgelse gennemført af desktoplinux.com blandt 38.500 Linux-brugere viste, at 31.5% af respondenterne brugte Wine til at køre Windows-programmer. Det var betydeligt flere end dem der kørte x86 virtualiseringsprogrammer samt dem, der slet ikke kørte Windowsprogrammer.

Historie 
Bob Amstadt (den oprindelige projektleder) og Eric Youndale startede Wine projektet i 1993 som en måde, hvorpå Windowsprogrammer kunne afvikles på Linux. Programmet var inspireret af to Sun Microsystems programmer, Wabi for Solaris styresystemet, og Public Windows Initiative. Wine var oprindeligt målrettet Windows 3.x, men siden 2010 fokuserer det på 32-bit og 64-bit programmer. Projektet opstod oprindeligt på Usenet i comp.os.linux i 1993. Siden 1994 har Alexandre Julliard ledet projektet.

Projektet er yderst tidskrævende og vanskeligt for udviklere, eftersom dokumentationen til Windows APIen ikke er komplet. Microsoft har dokumenteret langt de fleste Win32 funktioner, men områder så som filformater og protokoller har ingen officiel Microsoft specifikation. Microsoft Windows indeholder også udokumenterede funktioner og obskure fejl, som Wine skal duplikere præcist for at få programmer til at fungere ordentligt. Som konsekvens har Wine-holdet gennemført reverse engineering for at få dette til at virke. En anden teknik som er ved at brede sig i Wine-miljøet, er analyser af åben software projekters koder.

Wine projektet blev oprindeligt udgivet under en MIT licens ligesom X Window System, men grundet stigende bekymringer om private projekter baseret på Wine der ikke gav deres viden tilbage til miljøet, blev licensen i 2002 udskiftet med en LGPL licens.

Wine blev officielt udgivet som en betaversion i 2005. Version 1.0 blev udgivet i 2008, 15 år efter udviklingen startede. Version 1.2 blev udgivet den 16 juli, 2010. Udviklingsversioner udgives cirka hver anden uge.

Firmasponsorart 
Wines hovedsponsor er CodeWeavers, der har ansat Julliard og mange andre af Wines udviklere til at arbejde på Wine og CrossOver, der er CodeWeavers supporterede version af Wine. Crossover inkluderer nogle applikationsspecifikke tweaks, som ikke anses for at være i overenstemmelse med WineHQ versionen såvel som nogle ejendomsretligt baserede komponenter.

Corel havde en interesse i projektet i det det ønskede at porte dets kontorprogram WordPerfect Office til Linux og særligt Corel Linux. Senere opgav Corel alle sine Linux projekter efter Microsoft investeringer i Corel. Dermed stoppede Corel også sit engagement i Wine.

Andre firmasponsorer inkluderer Google, der hyrede CodeWeavers til at porte deres Picasa program direkte til Windows ved at bruge den samme binære kode som på Windows. Google betalte senere for en forøget understøttelse af Adobe Photoshop CS2. Wine modtager også bidrag fra Googles Summer of Code program.

Arkitektur 
Wine implementerer Windows APIen i sit user space i stedet for som et kernemodul. De opgaver som Windows' kernel normalt tager sig af, håndteres i stedet for af en daemon kaldet wineserver. Wineserveren implementerer basal Windows funktionalitet så vel som integration med X Window System, der håndterer langt de fleste Unix styresystemers grafik. En central opgave er oversættelse af signaler til Windows undtagelser.

Selvom Wine implementerer nogle aspekter af Windows-kernen, er det ikke muligt at anvende oprindelige Windows drivere grundet Wines underlæggende arkitektur. Dette forhindre at nogle programmer fungere.

Wine er primært udviklet for Linux, men kan også køre på Mac OS, FreeBSD og Solaris. Wine er også tilgængelig for brugere af OpenBSD og NetBSD gennem OpenBSD og Net BSD pkgsrc. Siden 2010, har Wine også fungere på ARM-platformen som Winelib, der tillader brugere at kompilere Windows kode på Linux. Nogle versioner af Wines DLL'er er også tilgængelig for Windows, men Wine kan stadig ikke afvikles på Windows.

Funktionalitet 
Fra 2011 kører Wine programmer med god stabilitet og andre med mindre problemer. Udviklerne af Direct3D delene til Wine har fortsat med at udvikle egenskaber så som pixel shaders i forsøg på at øge understøttelsen af spil. Wine kan også køre oprindelige DLL'er direkte, hvilket også er med til at øge funktionaliteten. Problemet opstår når der er krav om en Windows licens. Her er det nødvendigt at programmet selv forsyner Wine med de nødvendige DLL'er.

winecfg er et grafisk konfigurationsværktøj, de er inkluderet i Wine. Winecfg gør det muligt at konfigurere Wine hurtigere end gennem registrene. Dette kan dog gøres med en register editor, der minder om Windows' regedit. Wine tillader også egen åben source implementeringer af andre Windowsprogrammer så som notepad, wordpad, control, iexplorer og explorer.

Bagudkompatibilitet 
Wine sikrer god kompatibilitet med tidligere programmer, og dækker dermed stadig Windows 3.1. Wine kan imitere Windows versioner tilbage til version 2.0. Denne bagudkompatibilitet overgår den, som nyere versioner af Windows har. Det er dermed muligt for Wine at køre 16-bit Windows-programmer på et 64 bit system, som bruger en x86-64 eller 64-bit CPU.

AppDB 
Wine Application Database eller AppDB indeholder information om programmers kompatibilitet med Wine. Her kan brugere bidrage med oplysninger om et givent programs evne til at køre på en Unix-platform via Wine. Dette sker gennem et rating-system, der skal give brugeren en ide om det pågældende programs chance for succesfuld afvikling. Programmer, der får kategorien "garbage" kan ikke anvendes, hvor programmer, der har store problemer bliver kategoriseret som bronze software. Sølv software er software med små problemer mens guld og platin software, er software som kører (stort set) uden fejl. 

Når en bruger indsender test data, skal programmets navn, version og licens beskrives såvel som hvad virker, hvad virker ikke og hvad der ikke var testet. Endvidere skal brugeren specificerer Wine version såvel som hvilken type operativsystem, der er anvendt til testen. Derudover kan brugeren angive yderligere kommentarer, der typisk omhandler små fejl eller tweaks, der er krævet for at få programmet til at virke. Steams version af Civilization 3 kategoriseres som guld-software. Det kører uden væsentlige problemer, men der er små problemer med musikken. Derudover skal spillet ikke blot installeres, der skal også omdøbes nogle filer for at få det til at virke. 

Blizzards World of Warcraft er rangeret som platin software og fungerer uden problemer. Endvidere anslås latency til at være bedre end på Windows. FPS eller frames per sekund, er det samme. Imidlertid er der nogle krav til at få det til at virke så som en NTFS partition samt en særlig mounting af partitionen. I skrivende stund indeholder AppDB mere end 16500 programmer af forskellig kvalitet.

Sikkerhed 
Idet Wine kan køre binær Windows kode, kan blandt andet malware dermed trænge ind i Unix-systemet. Disse er dog begrænset til Unix-brugerens rettigheder. Det vil sige, at selve Unix-kernen typisk er beskyttet, eftersom adgang til den kræver, at man er logget på eller giver Wine super-bruger rettigheder. Dette frarådes.

Wine og Unix 
Netop fordi Wine eksisterer, spekuleres det i, at producenter af programmer hellere vil lave programmer der passer til Wine, i stedet for at lave dem til Unix. Dette er dog snarere spekulation end bevist. Wine forsvarer sig med at sige, at Wine kan løsne Microsofts greb om brugeren ved at gøre det muligt for brugere at anvende enkelte Windows programmer på Unix.

Microsoft og Wine 
Microsoft kommenterer generelt ikke på Wine, men Microsoft Update blokerer opdateringer til Microsoft programmer, der kører på Wine. Dermed har Microsoft indirekte sagt, at de ikke acceptere at deres programmer eksekveres på andre platforme end deres egne. Dermed siger de også, at de anerkender eksistensen af Wine.

Noter 

Fri software
Etableret i 1993
Emuleringsprogrammer til Linux
Styresystemer