Nicholas Studt

WINE 15 January 2001

It's not a Burgundy, it's not a Bordeaux, and it's not an emulator. It's WINE, an implementation of the Microsoft Windows API for Unix variants. Alexandre Julliard and the WINE development team have been getting a lot of press as they approach their 1.0 release. WINE could propel Linux into the desktop market and lower the barrier for small businesses to switch operating systems. It can even help those of us whose only tie to Windows is games. And yes, it even runs Solitaire.

What is WINE?

In a nutshell, WINE is a program that allows you to use Windows applications in a more stable environment. One of the benefits of WINE not being an emulator is that it cages Windows applications into a "safe" area, more so than Windows itself, leaving you with a useable operating system even after your application crashes. WINE is an implementation of the Windows API, which allows it to run unmodified Windows 3.1/95/98/NT binaries under Linux, FreeBSD, and Solaris. It does not require Windows to be installed, but can use the native Windows DLLs to supplement its own functionality. WINE currently implements 90% of the popular API calls, and new features are being added to each release. It also includes a development tool kit and multilingual support. WINE is not distributed under the GNU Public License, but under one similar to X11.

A Brief History of WINE

In 1993, Bob Amstadt began developing a program to bring the Windows 3.1 API to Unix. Shortly after development started, Alexandre Julliard took over as project coordinator. Development has continued under his leadership during the past eight years. Recently, several companies have taken an interest in helping further the development of WINE. Among them are Corel and CodeWeavers. There are now over 300 developers working to get WINE past the developer-only phase. The complete Change Logs for WINE, starting in 1993, can be retrieved from the WINEHQ online source tree.

How's It Do That?

Just as the acronym states, WINE is not an emulator. Instead, it is an alternate implementation of the Windows API. This makes WINE more like GTK than VMWare or Plex86, which makes the jobs of the developers a little harder. WINE has been developed through study of the spartan Microsoft documentation of its own APIs, and through a lot of reverse engineering. This gives WINE the ability to match Windows bug for bug. Being a bug-for-bug match enables the user to see all of the error messages that would have been missed if they were running Windows (though they do seem slightly out of place in the Unix environment). An example would be the message received while trying to install Microsoft Explorer 5.5 on a Microsoft free installation: "A previous program installation was never completed. You need to restart your computer to complete that installation before running Internet Explorer Setup. Setup will now close. [OK]" Because WINE implements the API—just the DLLs and not the VXDs—it does have some limitations: it cannot use devices that the base operating system does not know how to handle. Of course there are exceptions to this rule; some parallel devices that do not have Linux drivers are known to work. Applications also run slightly slower under WINE than they do in Windows at this time, mainly due to the debugging code in the current source. Once the debugging is removed, however, applications are expected to match their native Windows speeds.

What's Happening Now?

Generally, older Windows 3.1 applications have a better chance at running under WINE than newer ones, though some of the newer applications like Internet Explorer 5.0 and parts of the Microsoft Office Suite run just as well. At WINE Headquarters there is an Application Database that lists all of the applications that people have successfully operated under WINE. Linux Games has a section for Windows Games that run under WINE, notably StarCraft, Myth, and Heretic II. WINE will also run the Windows 95 tour, which never looked as good as it does under Linux.

WINE is currently moving toward its 1.0 release. Snapshots are made of the development tree every three to four weeks. If the absolute latest source is needed, the developers also provide access to their most recent CVS tree. New features and fixes are being made weekly. The current priorities are to get to 1.0 as soon as possible, make the installation easier for the average user, and finish implementing the API.

CodeWeavers, Inc. is currently making WINE easier for the average desktop user to install and use. Jim Graham, the project coordinator at CodeWeavers, and his team have released a 1.0 preview of WINE. The preview contains a TK-based configuration wizard and a program launcher, as well as tighter integration with Gnome and KDE. You can find the preview release at their site along with an overview of the usability they have added. The preview version doesn't have all of the functionality that the newer bi-weekly releases have, though the configuration tool takes a lot of the work out of getting WINE set up.

TransGaming Technologies recently released patches for WINE, helping to complete the support for Direct X. Their first patch was released on December 27, 2000. TransGaming is operating under a version of the Street Performer Protocol. Users who subscribe to their service get to vote on which games they will work on first. Once one game is completed, they move to the next. TransGaming plans to release all of their code under the same license as WINE when they reach 20,000 subscribers.

Conclusion

With its first non-developers-only release, WINE may become the new killer application that brings Linux to the forefront of the desktop market. Even now, WINE is useful for many applications and can help you waste just as much time as your Windows friends by playing games from the Entertainment Pack.


Originally published in Unix Review, January 2001.

posted in *nix