Wine (software)

From Wikipedia, the free encyclopedia

Jump to: navigation, search
Wine
Wine logo

Screenshot of Wine Configuration, used to configure Wine settings
Design by Alexandre Julliard
Developed by Wine authors
(1,076)
Initial release 1993-07-04; 5755 days ago
Stable release 1.0.1  (2008-10-17; 171 days ago) [+/−]
Preview release 1.1.18  (2009-3-27; 10 days ago) [+/−]
Written in C
Operating system Unix-like systems and Microsoft Windows
Platform Cross-platform
Size 7-9.5 MB (compressed)
Development status Active
Type Compatibility layer
License GNU Lesser General Public License
Website www.winehq.org

Wine is a free software application that aims to allow Unix-like computer operating systems on the x86 or x86-64 architecture to execute programs written for Microsoft Windows. Wine also provides a software library known as Winelib against which developers can compile Windows applications to help port them to Unix-like systems.[1]

The name 'Wine' derives from the recursive acronym Wine Is Not an Emulator. While the name sometimes appears in the forms "WINE" and "wine", the project developers have agreed to standardize on the form "Wine".[2]

Wine is predominantly written by means of enhanced “clean-room” techniques[citation needed] to ensure hygienic code, with some developers advising against the use of certain information obtained via documentation or tools present in proprietary SDKs (for example, the Platform SDK or Windows Driver Kit). In most circumstances Wine developers use black-box testing to uncover specific behaviour, and code added to Wine is generally required to be accompanied by test cases.

The project lead is Alexandre Julliard.

Contents

[edit] History

Bob Amstadt (the initial project leader) and Eric Youngdale started the Wine project in 1993 as a way to run Windows applications on Linux. Inspired by two Sun Microsystems' products, the Wabi for the Solaris operating system and the Public Windows Initiative[3] (an attempt to get Windows API fully reimplemented on the public domain as an ISO standard, rejected by the entity due pressure from Microsoft in 1996[4]), it originally targeted Windows 3.x (16-bit) application software, although it currently focuses primarily on the dominant 32-bit applications. The project originated in discussions on Usenet in comp.os.linux in June 1993.[5] Alexandre Julliard has led the project since 1994.

Rather than acting as a full emulator, Wine implements a compatibility layer, providing alternative implementations of the DLLs that Windows programs call, and processes to substitute for the Windows NT kernel.

Wine is primarily developed for Linux, but the Mac OS X, FreeBSD and Solaris ports are currently well-maintained.[6] 1999 versions of Wine are available for OpenBSD and NetBSD through the ports collection of OpenBSD and NetBSD pkgsrc respectively. Although outdated, Wine DLLs are also available for Microsoft Windows[7] (the full application does not yet compile or run for Windows[8]).

The project has proved time-consuming and difficult for the developers, mostly because of incomplete and incorrect documentation of the Windows API. While Microsoft extensively documents most Win32 functions, some areas such as file formats and protocols have no official Microsoft specification. There are also undocumented low-level functions and obscure bugs that Wine must duplicate precisely in order to allow some applications to work properly. Consequently, the Wine team has reverse engineered many function calls and file formats in such areas as thunking.[9]. More recently some developers have suggested enhanced tactics such as examining the sources of extant open-source and free software.

The Wine project was originally released Wine under the same MIT License as the X Window System, but owing to concern about proprietary versions of Wine not contributing their changes back to the core project, work as of March 2002 has used the LGPL for its licensing.

The first release candidate for version 1.0 was released on May 9, 2008. After four additional release candidates, version 1.0 of Wine was released on June 17, 2008.[10]

[edit] Architecture

Wine implements the Windows API entirely in user-space, rather than as a kernel module at the time of writing. Services normally provided by the kernel in Windows are provided by a daemon known as wineserver. Wineserver implements basic Windows functionality, as well as providing extra functions such as X Window integration and translation of signals into native Windows exceptions.

Although Wine implements some aspects of the Windows kernel, it is not possible to use native Windows drivers with it, due to Wine's underlying architecture. This prevents certain applications from working, such as some copy-protected titles.

[edit] Corporate sponsorship

The main corporate sponsor of Wine is CodeWeavers, who employ Julliard and many other Wine developers to work on Wine and on CrossOver, CodeWeavers' supported version of Wine, which includes some app-specific tweaks not considered suitable for the WineHQ version and also utilizing some additional proprietary components.[citation needed]

The involvement of Corel for a time assisted the project, chiefly by employing Julliard and others to work on it. Corel had an interest due to the porting of WordPerfect Office, its office suite, to Linux, especially Corel Linux. However, after Microsoft made major investments in the company, Corel cancelled all Linux-related projects and the company's Wine effort stopped.[11]

Other corporate sponsors include Google, which hired Codeweavers to fix Wine so Picasa ran well enough to be ported directly to Linux using the same binary as on Windows; they later paid for improvements to Wine's support for Photoshop CS2. Wine is also a regular beneficiary of Google's Summer of Code program.[12][13]

[edit] Functionality

Progress in application compatibility according to test results from Wine AppDB.
     Software that runs flawlessly      Software that runs flawlessly with configuration      Software with minor Issues      Software with major Issues      Unusable software

As of 2009, Wine runs some software packages with good stability and many others with minor issues.[14] The developers of the Direct3D portions of Wine have continued to implement new features such as pixel shaders to increase game support.[15] Wine can also use native DLLs directly, thus increasing functionality, but then a license for Windows is needed unless the DLLs were distributed with the application itself.

winecfg is a GUI configuration utility included with Wine. Winecfg makes configuring Wine easier by making it unnecessary to edit the registry directly, although, if needed, this can be done with regedit. Wine also includes versions of several other Windows programs, such as notepad, wordpad, control, iexplore and explorer.

AppDB is a community-maintained database of which Windows applications work, and how well they work, with Wine.

[edit] 64-bit applications

Preliminary support for 64-bit Windows applications was added on December 5, 2008.[16] This currently requires experimental patches to gcc and the Wine developers expect that it will take significant time before support stabilizes. However, as almost all Windows applications are currently available in 32-bit versions and as support for 32-bit Windows applications is handled by linking with 32-bit versions of Wine's shared library dependencies on 64-bit platforms, this is seen as a non-issue.

[edit] Usage

In a 2007 survey by desktoplinux.com of 38,500 Linux desktop users, 31.5% of respondents reported using Wine to run Windows applications.[17] This plurality was larger than all x86 virtualization programs combined, as well as larger than the 27.9% who reported not running Windows applications.

[edit] Third-party applications

Wine-Doors can install many popular Windows software titles

Some applications require more tweaking than simply installing the application in order to work properly, such as manually configuring Wine to use certain Windows DLLs. The Wine project does not integrate such workarounds into the Wine codebase, instead preferring to focus solely on improving Wine's implementation of the Windows API. While this approach focuses Wine development on long-term compatibility, it makes it difficult for users to run applications which require workarounds. Consequently, many third party applications have been created to ease the use of these applications which don't work out of the box within Wine itself. The Wine wiki maintains a page of current and obsolete third party applications.[18]

  • Winetricks is a small script to install some basic components (typically Microsoft DLLs and fonts) required for some applications to run correctly under Wine. The Wine project will accept bug reports for users of Winetricks, unlike most third-party applications. It is maintained by Wine developer Dan Kegel.[19]
  • Wine-Doors is an application-management tool for the GNOME desktop which adds functionality to Wine. Wine-Doors is an alternative to WineTools which aims to improve upon WineTools' features and extend on the original idea with a more modern design approach.[20]
  • IEs4Linux is a utility to install all versions of Internet Explorer, including versions 4 to 6 and version 7 (in beta).[21]
  • PlayOnLinux is an application to ease the installation of Windows games using Wine. It uses an online database of scripts to apply to different games that need special configurations and if the game is not in the database, a manual installation can be performed. Aside from games, any other programs can also be installed and each one is put in a different container (WINEPREFIX) to prevent interference of one program in another and provide isolation, the same way that CrossOver's bottles work.[22]

[edit] Other versions of Wine

The core Wine development aims at a correct implementation of the Windows API as a whole and has sometimes lagged in some areas of compatibility with certain applications. Direct3D, for example, remained unimplemented until 1998,[23] although newer releases have had an increasingly complete implementation.[24]

CodeWeavers markets CrossOver specifically for running Microsoft Office and other major Windows applications including some games. CodeWeavers employs Alexandre Julliard to work on Wine and contributes most of its code to the Wine project under the LGPL. CodeWeavers also released a new version called Crossover Mac for Intel-based Apple Macintosh computers on January 10, 2007.[25]

CodeWeavers has also recently released CrossOver Games, which is optimised for running Windows computer games. Unlike CrossOver, it doesn't focus on providing the most stable version of Wine. Instead, experimental features are provided to support newer games.[26]

TransGaming Technologies produces the proprietary Cedega software. Formerly known as WineX, Cedega represents a fork from the last MIT-licensed version of Wine in 2002. Much like Crossover Games, TransGaming's Cedega is targeted towards running Windows computer games and is sold using a subscription business model.

TransGaming has also produced Cider, a library for Apple-Intel architecture Macintoshes. Instead of being an end-user product, Cider (like Winelib) is a wrapper allowing developers to adapt their games to run natively on Intel Mac OS X without any changes in source code.

Other projects using Wine source code include:

  • ReactOS, a project to write an operating system compatible with Windows NT down to the device driver level. (Although ReactOS uses Wine source code considerably, because of architectural differences, ReactOS code is not generally reused in Wine. There are also licensing and code hygiene issues.)
  • Darwine, a port of the Wine libraries to Darwin and Mac OS X. Darwine originally aimed at compiling Windows source code to Mach-O binaries. With the advent of Apple-Intel architecture, Darwine began running Win32 binaries in x86 Darwin and has approached version parity with the Wine trunk. The Darwine project also continues progress on PowerPC by combining Wine with the QEMU x86 emulator.
  • Odin, a project to run Win32 binaries on OS/2 or convert them to OS/2 native format. The project also provides the Odin32 API to compile Win32 programs for OS/2.
  • E/OS, a project attempting to allow any program designed for any operating system to be run without the need to actually install any other operating system.
  • Rewind, a defunct MIT-licensed fork of the last MIT-licensed version of Wine.
  • Parallels Desktop 3 for Mac, a proprietary product that uses some Wine code for its DirectX handling.

[edit] Microsoft and Wine

Internet Explorer 6 running under Wine.

Microsoft has generally not made public statements about Wine. However, the Microsoft Update software will block updates to Microsoft application software running in Wine-based environments. On February 16, 2005, Ivan Leo Puoti discovered that Microsoft had started checking the Windows registry for the Wine configuration key and would block the Windows Update for any component. Puoti wrote, "It's... the first time Microsoft has acknowledged the existence of Wine."[27]

The Windows Genuine Advantage (WGA) system also checks for existence of Wine registry keys. The WGA FAQ states that WGA, by design, will not run in Wine, as Wine does not constitute "genuine Windows".[28] When WGA validation detects Wine running on the system, it will notify users that they are running non-genuine Windows and disallow genuine Windows downloads for that system. Despite this, some reports have circulated of the WGA system working in Wine,[29][30] although this loophole has now been closed with the next WGA component update. In the case of Internet Explorer 7 and Windows Media Player, Microsoft has since removed the WGA requirements.

[edit] References

  1. ^ "Winelib". Wine HQ. http://winehq.org/site/winelib. Retrieved on 2008-06-29. 
  2. ^ "Why do some people write WINE and not Wine?". Wine Wiki FAQ. Official Wine Wiki. 2008-07-07. http://wiki.winehq.org/FAQ?action=recall&rev=217#head-8b4fbbe473bd0d51d936bcf298f5b7f0e8d25f2e. Retrieved on 2008-07-13. 
  3. ^ Bob Amstadt (1993-09-29). "Wine project status". comp.windows.x.i386unix. (Web link). Retrieved on 2008-07-13.
  4. ^ "Sun Uses ECMA as Path to ISO Java Standardization". Computergram International. 1999-05-07. http://findarticles.com/p/articles/mi_m0CGN/is_1999_May_7/ai_54580586. Retrieved on 2008-07-13. 
  5. ^ Byron A Jeff (25 Aug 1993). "WABI available on linux or not". comp.os.linux.misc. (Web link). Retrieved on 2007-09-21.
  6. ^ "Under what hardware platform(s) and operating system(s) will Wine(Lib) run?". Wine FAQ. http://www.winehq.org/site/docs/wine-faq/index#UNDER-WHAT-PLATFORMS-WILL-WINE-RUN. Retrieved on 2009-01-03. 
  7. ^ Wine Win32 Packages
  8. ^ http://wiki.winehq.org/WineOnWindows
  9. ^ Loli-Queru, Eugenia. Interview. Interview with WINE's Alexandre Julliard. 2001-10-29. Retrieved on 2008-06-30.
  10. ^ "Announcement of version 1.0". Wine HQ. 2008-06-17. http://winehq.org/announce/1.0. Retrieved on 2008-09-01. 
  11. ^ Vaughan-Nichols, Steven J. (February 25, 2002). "That's All Folks: Corel Leaves Open Source Behind". NewsForge. http://www.newsforge.com/article.pl?sid=02/02/25/1449229. Retrieved on 2009-01-03. 
  12. ^ Kegel, Dan (2008-02-14). "Google's support for Wine in 2007". wine-devel mailing list. http://article.gmane.org/gmane.comp.emulators.wine.devel/56872. Retrieved on 2009-01-03. 
  13. ^ "Open Source Patches: Wine". Google. http://code.google.com/opensource/wine.html. Retrieved on 2008-09-07. 
  14. ^ "Wine Application Database". WineHQ.org. http://appdb.winehq.org/. Retrieved on 2009-01-03. 
  15. ^ "DirectX-Shaders". Official Wine Wiki. http://wiki.winehq.org/DirectX-Shaders. Retrieved on 2009-01-03. 
  16. ^ Lankhorst, Maarten (2008-12-05). "Wine64 hello world app runs!". wine-devel mailing list. http://www.winehq.org/pipermail/wine-devel/2008-December/070941.html. Retrieved on 2008-12-15. 
  17. ^ "2007 Desktop Linux Market survey". 2007-08-21. http://www.desktoplinux.com/cgi-bin/survey/survey.cgi?view=archive&id=0813200712407. Retrieved on 2007-10-08. 
  18. ^ "Third Party Applications". Official Wine Wiki. http://wiki.winehq.org/ThirdPartyApplications. Retrieved on 2009-01-03. 
  19. ^ "winetricks". Official Wine Wiki. http://wiki.winehq.org/winetricks. Retrieved on 2009-01-03. 
  20. ^ Wine doors
  21. ^ IEs4Linux
  22. ^ Play on Linux
  23. ^ Vincent, Brian (2004-02-03). "WineConf 2004 Summary". Wine Weekly News (WineHQ.org) (208). http://www.winehq.com/?issue=208. Retrieved on 2009-01-03. 
  24. ^ "Wine Status - DirectX DLLs". WineHQ.org. http://www.winehq.org/status/directx. Retrieved on 2009-01-03. 
  25. ^ "CodeWeavers Releases CrossOver 6 for Mac and Linux". Slashdot. http://linux.slashdot.org/article.pl?sid=07/01/10/1924235. Retrieved on 2009-01-03. 
  26. ^ Crossover Games site
  27. ^ Puoti, Ivan Leo (February 18, 2005). "Microsoft genuine downloads looking for Wine". wine-users mailing list. http://www.winehq.org/pipermail/wine-users/2005-February/016988.html. Retrieved on 2006-01-23. 
  28. ^ "Genuine Windows FAQ". Microsoft Corporation. http://www.microsoft.com/genuine/downloads/FAQ.aspx. Retrieved on 2006-01-30. 
  29. ^ "Ubuntu Linux Validates as Genuine Windows". Slashdot. http://linux.slashdot.org/article.pl?sid=07/06/18/0037223. Retrieved on 2009-01-03. 
  30. ^ "WGA running in Wine". http://forums.bit-tech.net/showthread.php?t=95654. Retrieved on 2009-01-03. 

[edit] See also

[edit] External links

Personal tools