Corel's Contributions to the Wine ProjectJun 23, 1999, 00:20 (38 Talkback[s])
(Other stories by Corel)
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 Solaris 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.
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.
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.
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 to the Wine Project
Corel dedicated a team of paid engineers to the Wine project in January 1999. 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.
About Corel Corporation
Corel Corporation is an internationally recognized developer of award-winning graphics and business productivity applications. Since its foundation in 1985, Corel has developed products known for excellence and value that follow emerging trends in the software industry. Committed to performance, compatibility, and value. Corel develops products for MicrosoftÂ® WindowsÂ®, MacintoshÂ®, UNIXÂ®, and LinuxÂ® platforms and Java . Corel is renowned for comprehensive, competitively priced products that have powerful core applications and value-added utilities. Corel develops market-leading products, such as the CorelDRAWÂ® suite of graphics applications and the WordPerfectÂ® Office of business tools, while continuing to meet the demands of the corporate, retail, and academic markets.
Corel is headquartered in Ottawa, Canada. Corel's products ship in over 17 languages through a network of more than 160 distributors in 70 countries. Corel maintains several offices throughout Canada and the United States. In addition Corel has offices in over 18 countries worldwide. Corel's common stock trades on the NASDAQ Stock MarketK under the symbol COSFF and on the Toronto Stock Exchange under the symbol COS.
Where Do I Get More Information?
Corel Corporate Headquarters
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: email@example.com
To participate in discussions about Wine, visit the news group at: comp.emulators.ms-windows.wine.newsgroup.
Copyright Â© 1999 Corel Corporation. All rights reserved.
INFORMATION IS PROVIDED BY COREL ON AN "AS IS" BASIS, WITHOUT ANY OTHER WARRANTIES OR CONDITIONS, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO, WARRANTIES OF MERCHANTABLE QUALITY, SATISFACTORY QUALITY, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, OR THOSE ARISING BY LAW, STATUTE, USAGE OF TRADE, COURSE OF DEALING OR OTHERWISE. THE ENTIRE RISK AS TO THE RESULTS OF THE INFORMATION RECEIVED IS ASSUMED BY YOU. WE SHALL HAVE NO LIABILITY TO YOU OR ANY OTHER PERSON OR ENTITY FOR ANY INDIRECT, INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES WHATSOEVER, INCLUDING, BUT NOT LIMITED TO, LOSS OF REVENUE OR PROFIT, LOST OR DAMAGED DATA OR OTHER COMMERCIAL OR ECONOMIC LOSS, EVEN IF WE HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES, OR THEY ARE FORESEEABLE. WE ARE ALSO NOT RESPONSIBLE FOR CLAIMS BY A THIRD PARTY. OUR MAXIMUM AGGREGATE LIABILITY TO YOU AND THAT OF OUR DEALERS AND SUPPLIERS SHALL NOT EXCEED FORTY DOLLARS CANADIAN($40.00CDN). SOME STATES/COUNTRIES DO NOT ALLOW THE EXCLUSION OR LIMITATION OF LIABILITY FOR CONSEQUENTIAL OR INCIDENTAL DAMAGES, SO THE ABOVE LIMITATIONS MAY NOT APPLY TO YOU.
Published June 1999
Corel, CorelDRAW, WordPerfect, and Quattro are trademarks or registered trademarks of Corel Corporation or Corel Corporation Limited.
Microsoft, Windows, and NT are registered trademarks of Microsoft Corporation.
Macintosh and Power Macintosh are registered trademarks of Apple Computer, Inc.
UNIX is a registered trademark of the OpenGroup.
Linux is a registered trademark of Linus Torvalds.
Java is a trademark of Sun Microsystems, Inc.
OS/2 is a registered trademark of IBM.
Copyright Â© 1999 Corel Corporation and Corel Corporation Limited. Reprinted by permission.