%include "default.mgp" %default 1 bgrad 0 0 256 0 1 "black" "blue" %page %nodefault %center, size 7, font "standard", fore "white", vgap 20 Wine: Where it came from, how to use it, where it's going %center, size 5, font "standard", fore "white" Scale 4x 10 Feb 2006 %center, size 7, font "standard", fore "white", vgap 20 Dan Kegel www.kegel.com %page Wine What's Wine? Wine Is Not an Emulator It is an implementation of win32 on Unix It lets you run Windows apps on Linux BSD Solaris Mac OS X etc. Project's benevolent dict^H^H^H^Hmaintainer is Alexandre Julliard %page Wine Wine's Innards Wine consists of: An .exe loader A control panel Notepad, regedit, explorer, wcmd Core DLLs (that know about Unix) User DLLs (eg riched20.dll, not Unix specific) A few essential fonts In short, everything needed to run a Windows app %page Wine Wine is already useful I read my email with gmail in Firefox 1.5 on Wine So far, I've only found four bugs! Several companies use Wine to ship commercial apps As we fix Wine to handle each new app, it makes it easier to fix the next app Thousands of people run MS Office with Wine %page Wine A little Wine history - Before Wine 1991: IBM says OS/2 2.0 will run Windows apps 1991: Bristol ports Win apps to Unix with Wind/U 1993: MS promises "Windows Everywhere", Mac "Windows Compatibility Library", showcases Wind/U 1993: Sun announces WABI and PWI 1993: Users want "PWI for Linux", start Wine %page Wine A little Wine history - First Usenet Message From: bob@amscons.com (Bob Amstadt) Subject: Re: Impressions of WABI/Univel vs Linux Date: Fri, 2 Jul 1993 Of course, for those of you who are interested in running Windows programs there is an effort in progress to create something similar to Sun's WABI. There is an activists channel, "WABI", for discussion of this project. There is need for many volunteers to complete this project. %page Wine A little Wine history - Early Days 1994: Alexandre Julliard becomes maintainer 1994: Solitaire runs 1996: Wine adds win32 support 1997: Word 95 starts working %page Wine Word 95 first light From: Martin Boehme Subject: Wine and Word95 - Success! Date: 1997/11/18 Wine-971116 has been one of the most exciting releases of Wine for me... I tried $ wine -dll -shell32 -winver win95 winword I stared. I goggled. I gaped. Shock. Disbelief. Amazement. There was Word 95. On my Linux desktop. Word 95. A mainstream 32-bit application. To whoever made this possible: You are my God. %page Wine A little Wine history - WineHQ Era 1997: winehq.com created 1999: Corel hires engineers to improve Wine 1999: Codeweavers funded to improve Wine 2000: Alexandre moves to Codeweavers 2000: Borland hires Codeweavers to improve Wine 2000: Address Space Separation 2001: Lindows hires Codeweavers to improve Wine 2002: Wine switches to LGPL 2002: Codeweavers releases Crossover Office 2002: Wine starts Conformance Test Suite 2003: Disney pays to fix Wine to run Photoshop 7 2005: COM, MSI implemented; DLL separation complete %page Wine What about Microsoft DLLs? Wine does not need or include any Microsoft code If apps install copies of VB/VC++ runtime libs vbrun, msvcrt, and mfc40 they will be used by the app under Wine. This is ok; check the VB/VC++ EULA. %page Wine What about Microsoft IE? IE provides the IWebBrowser interface to let apps embed web browser windows Wine now includes an implementation of IWebBrowser based on Mozilla's ActiveX plugin %page Wine What about fonts? Wine only includes a few basic fonts Linux doesn't include many, either Apps look better if you install good fonts Fortunately, MS provided redistributable free fonts You can download them from http://corefonts.sf.net This is ok; check the fonts' EULA. %page Wine What about the C: drive? Wine maps the Z: drive to Unix's root by default This lets Windows apps access all files on system Wine is currently a single-user application Each user gets their own "fake" C: drive in ~/.wine/drive_c Registry stored in ~/.wine/{system,user,userdef}.reg %page Wine Winecfg, wcmd, regedit, notepad winecfg is an applet to tell Wine: use a different audio driver act like an older version of Windows wcmd is Wine's DOS commandline processor regedit, notepad are just like in Windows %page Wine Shipping a Windows App for Linux Windows apps can be packaged as RPM or deb It's easiest with a "zero-footprint install" like winzip Bundle Wine in the RPM if you want a standalone app %page Wine Wine is not finished Still not feature-complete Doesn't run most Windows apps well yet e.g. OpenOffice 2.0 File/Open dialog has trouble COM, Database support still need work %page Wine Wine is "easy" to contribute to Six juniors in CS at UCLA are implementing one RichEd20.DLL feature each this term A Summer of Code student implemented IWebBrowser last year, and continues to improve it Easy to find some missing feature to add Easy to verify it works like Windows Hard because you have to be a C programmer and convince the maintainers your code is good %page Wine Porting an app to Linux with Wine Wine can run any app... if you want it bad enough The first step is free: use the app daily under Wine, and file bugs at winehq for any problems you find. Include a recipe for how to reproduce it! Easy to reproduce bugs often fixed by volunteers Otherwise you can hire someone to fix them fixing 2-3 bugs: $5K implementing major new functionality: $50K and up %page Wine Demo This page intentionally blank %page Wine Performance - first run Measured by rebooting system, then measuring how long it takes to start each app 416MB RAM Firefox native 5, wine 12 OOo2.0 native 11, wine 22 96MB RAM Firefox native 11, wine 15 OOo2.0 native 51, wine 73 %page Wine Performance - second run 416MB RAM Firefox native 2, wine 4 OOo2.0 native 4, wine 6 96MB RAM Firefox native 4, wine 6 OOo2.0 native 35, wine *30* Michael Meeks' -Bdirect may reduce native load time %page Wine Questions Slides online at http://kegel.com/wine/scale4 More info at http://kegel.com/wine The views presented in this talk are my own personal views, and do not represent the views or positions of my employer