Corel Corporation's Contributions to the Wine Project White Paper June 1999.
An Introduction to the Wine Project The Wine Project Defined
Wine is an open source implementation of the Microsoft© Windows© 95/Microsoft Windows NT© application programming interfaces (API) that runs on X Windows and Linux©. Wine provides libraries for porting existing applications from Windows to Linux and provides a program loader that lets Windows applications run on a Linux system without having to be recompiled. While most of the development effort is directed toward the Linux platform, UNIX© variants, such as FreeBSD, OpenBSD, NetBSD, and SolarisZ are also supported and some development work has been done for SCO© UNIX OpenServer, SCO UNIXware, and IBM© OS/2©.
The History of Wine
The Wine project was initiated by Bob Amstadt in 1993 to let Windows 3.1 applications run under Linux. The project leadership was later passed to Alexandre Julliard who continues to lead it, with the programming emphasis on supporting Microsoft Windows 95/Microsoft Windows NT applications. The open source project has grown to over 350,000 lines of code written by more than 140 developers worldwide. While statistics are difficult to determine, an estimated 90,000 people currently use Wine. Understanding How Wine Works Wine takes a two channel approach to the program loader and code libraries. As the program loader matures, it will let developers make their existing Windows applications available on x86-based Linux systems immediately without having to recompile. An application running on Wine should perform the same way as an application running on Windows because the Wine program loader provides the API facilities that a Windows application expects using the same hardware as Windows. The program loader provides developers with a quick method for making applications available under Linux; however, this approach alone does not take full advantage of the features and strengths of the Linux operating system. The second channel of Wine development includes libraries that provide the required API functionality that is expected from Windows libraries. The Wine libraries let developers recompile their Windows applications to create native Linux applications from the original code base without having to make major modifications to the code. Once compiled as native Linux applications, the applications can make use of Linux features, such as enhanced performance, compatibility across different processors, and, eventually, increased native user interface integration, which lets the applications use graphic user interface calls to desktops, such as KDE and GNOME.
The Current Status of Wine
Wine currently supports more than 90% of API calls by the ECMA-234 and Open32 specifications but is still under development. Support for new API calls continues to be added and new releases of Wine are frequently made available. Despite the extensive support that has been developed, considerable work needs to be done to support the diversity of applications that are available for the Windows platform. Since Wine is being developed by both volunteer and paid developers, it is impossible to predict when the task will be complete. However, it is important to note that completion is not necessary in order for Wine to be useful to developers. As more APIs are supported, more applications can become fully functional using Wine. While complex applications will use more API calls, and as such require that a greater percentage of the APIs be supported, it is likely that Wine will provide the facilities necessary to run applications as complex and diverse as WordPerfect© and CorelDRAW©. Because Wine is a work in progress, it is not ready for use by non-technical users. The speed with which the Wine API expands and the number of applications it supports is dependant on the number of contributing developers. Since Wine is being developed under the open-source model, contributions by additional developers are always welcomed and encouraged.
Corel Corporation's Contributions to the Wine Project
Myths and Rumors about Wine
Wine has been the subject of extensive discussion in the Linux community yet remains misunderstood. Many believe that Wine is an emulator and automatically assume it will perform poorly. Traditionally, emulation has meant emulating one computer and its operating system on another computer with another operating system. For example, developers have tried emulating an x86 machine and the Windows operating system on a PowerPC Macintosh with the Macintosh operating system. Such emulation typically yields poor performance. Because Wine is simply an alternate implementation of the Windows API, rather than the emulation of a full machine and operating system, it can provide application performance that is comparable to the applications running on Windows on the same computer. 1 There has been some discussion as to whether Wine is a good approach to making Windows-based applications available under Linux. It is argued that nonnative Linux applications running through a program loader make Linux an inferior platform to Windows because the applications will not optimize strengths of Linux, they do not look like native Linux applications, and they potentially perform poorly. While the ability to use the program loader to run Windows applications may provide a useful solution, many see the program loader as a temporary solution until applications can be recompiled using the Wine libraries to create native Linux applications. Once the Wine libraries provide the functionality comparable to the Windows API, there is little reason for developers not to simultaneously release native Linux versions of their Windows applications. To be accepted as a desktop operating system, Linux must have a variety of commercial applications for users to choose from. The program loader makes Windows applications immediately available to Linux users. The Wine libraries make releasing native Linux versions of applications a simpler task for developers. Rather than putting extensive effort into porting every application that developers want to release under Linux, Wine consolidates the effort so that many more applications can be ported with less effort. The last myth that must be addressed is that Wine will never be able to run all Windows applications. This myth may be true in an absolute sense, but may not be true in a practical sense. In an environment with the complexity and history of DOS and Windows, there will inevitably be applications that Wine does not support. However, the vast majority of modern, commercial applications that follow standard Windows programming techniques should eventually recompile and run without difficulty through Wine. It is not necessary to support all APIs for an application to run successfully because most applications use only a subset of the full Windows API. In addition, since Wine is completely open source, developers can easily modify the code to solve specific problems with individual applications.
Using Wine
Once Wine's development reaches the level where most Windows applications are supported, its use in mainstream computing is relatively straightforward. The hardware requirements for processor speed and memory are comparable to the same application running on Windows. Installing a Windows application to run on Linux requires users to run the familiar SETUP.EXE program. Users can send a command to start Wine and point it to the Windows .EXE file they wish to run. For example, to run the Windows version of Quattro© Pro using Wine requires a command line that resembles the following: /usr/local/corel/quattro/qpw.exe. This command line can be added to an icon on the desktop or on the menu of a Windows manager, which makes accessing the application as easy as any native Linux application.
Corel's Contributions the Wine Project
Corel dedicated a team of paid engineers to the Wine project in January 1999. 2 This team has focused on adding functionality to Wine that will let Corel applications, such as WordPerfect, CorelDRAW, and Quattro Pro run on Linux and be ported to native Linux applications. In the past, Corel relied on conventional porting techniques to move some of its applications (Corel WordPerfect 8) to Linux. This provided a fast way to get these applications to Linux, but meant that porting had to be repeated with each new version. Otherwise, development had to be maintained on two separate code bases, which required considerably greater resources. Although there is an up-front investment in time and energy required to make Wine viable, once it reaches a high enough level, the facilities it provides can be used repeatedly to port many applications with minimal engineering effort. The time and cost savings to Corel will be tremendous. The Wine technology is a complement to Corel's forthcoming venture into the Linux distribution market.
Visit Corel's Web site at www.corel.com or Corel's Linux Web site at linux.corel.com. For general media inquiries, contact Corel's public relations department at the following email address: media@corel.ca
For more information about Wine technology, visit the following Web sites: www.winehq.com or winebin.netpedia.net.
To participate in discussions about Wine, visit the news group at: comp.emulators.ms-windows.wine.newsgroup. Copyright ¸ 1999 Corel Corporation.
1 Current releases of Wine include debug code that slows performance 2 Corel's engineers have extensive experience porting applications to other platforms. In the past , they have ported Windows applications to Macintosh platform and Java. |