The distinction that Wine is Not an Emulator but rather an implementation of the Windows API (Application Programming Interface) is not trivial. When using a Windows emulator, you must have an MS Windows license. However, since Wine (and therefore CrossOver Office) simply provide MS Windows-like APIs rather than emulate MS Windows, there is no need to have a MS Windows license in order to run MS Windows applications under Wine or Crossover Office on a GNU-Linux-based computer.

Windows API implementations for GNU-Linux do things very differently than do Windows emulators for GNU-Linux. Two examples of Windows emulators are Win4Lin and VMware. Crossover Office and Wine are two examples of Windows API implementations. However, the Windows emulators and the Windows API implementations all let you run MS Windows applications on the GNU-Linux platform.

Comparing Windows emulators and API implementations

Simply put, theoretically the Windows emulators let you run just about any MS Windows application or accessory hardware on a GNU-Linux platform. On the other hand Windows API implementations for Linux allow only a selected sub-set of MS Windows applications to run on a GNU-Linux platform.

System Resources Note: For the most part, this article was written using MS Word 2000 running under Crossover Office 2.1 on a 300-MHz AMD K6 system with only 128-MB of RAM and a 256-MB Linux Swap File. The OS is SUSE Linux 9.0 Professional. It is very doubtful that this could be done with a Windows emulator on a system with such meager resources. Please see Figure 1.

(You can run a GNU-Linux desktop distribution with only a 128-MB RAM and a 256-MB Swap space. Nevertheless, we recommend that any Linux desktop system have at least a 256-MB RAM and a 512-MB Swap space.)

Update: NeTraverse spokesperson Dewey Gaedcke said in an e-mail today: the senario you describe will run just fine with Win4Lin using Windows 95 or 98SE

The primary advantages of Windows API implementations for Linux such as Crossover Office are that they (1) do not require a license or serial number from Microsoft in order for you to use them, (2) do not require the installation of the MS Windows operating system on your Linux-based computer, and (3) they add only a very small system-resources overhead footprint when running MS Windows applications on your Linux-based computer system.

On the other hand, the Windows API implementations for Linux such as Crossover Office can run only a limited subset of MS Windows applications on your Linux-based computer system. Please see Schedules 1 and 2 on page 3.

The primary advantage of Windows emulators such as Win4Lin and VMware are that theoretically they can run just about any MS Windows application on your Linux-based computer system.

On the other hand, Windows emulators such as Win4Lin and VMware (1) require the installation of the MS Windows operating system on your Linux-based computer, (2) thus they require a license and serial number for MS Windows from Microsoft in order for you to use them, and (3) they add a large system resources overhead when running MS Windows applications on your Linux-based computer system.

Figure 1. Memory allocations with two documents open in MS Word via Crossover Office while also running three terminal windows (Konsole terminal program), one Konqueror browser window, KSnapshot, LinNeighborhood, the KDE Info Center, and the KDE desktop. Please see System Resources Note, above.

Jeremy White compares Windows emulators and API implementations

In an April 2003 e-mail discussion with Jeremy White, we asked: How does CrossOver Office differ architecturally from Win4Lin, VMware, and other such Windows emulators?

Jeremy White: Both Win4Lin and VMware are emulators, because they provide the emulation of a PC, with all of its BIOS and hardware. Hence, with Win4Lin and VMware, you actually install a copy of Windows onto the 'virtual machine' emulator. This has performance consequences, and means that you still have to have a Windows license. You're really running Microsoft code; you've just created a virtual PC [within the Linux-based computer system] that is capable of installing and running Windows.

Wine, in contrast, is an alternate implementation of the Windows API . . . Thus, with Wine, we provide all of the things that a typical Windows .exe file expects to find on the operating system (the API). Thus, when Quicken runs in CrossOver, it is running with the use of no Microsoft code.

Virtual Machine (VM) Note: In general terms, a virtual machine in computer science is software that creates an environment between the computer platform and the end user in which the end user can operate software . . .

Specifically, the term virtual machine has several distinct meanings . . .

Original Meaning

The original meaning of virtual machine is the creation of a number of different identical execution environments on a single computer, each of which exactly emulates the host computer. This provides each user with the illusion of having an entire computer, but one that is their "private" machine, isolated from other users, all on a single physical machine . . .

Operating System Virtual Machine

The term virtual machine is now also used to refer to the environment created by an emulator, where software is used to emulate an operating system for the end user, while the computer runs its own native operating system.

Excerpts from Virtual machine, Wikipedia (Link in Resources section at the end of this article.)

Wikipedia's full discussion of virtual machines is excellent. Check it out!

In further, more recent, e-mail discussions about Windows emulators for GNU-Linux and Windows API implementations for Linux:

MozillaQuest Magazine: Altogether, it appears that Crossover Office takes less resources than do the emulators such as Win4Lin and VMware, is that correct?

Jeremy White: Yes, absolutely. We take about 1.3-MB over and above what the Windows app takes; VMware and Win4Lin require you to dedicate large chunks of extra memory to them (Win4Lin less than VMware).

Not all MS Windows applications run under Crossover Office

In our April 2003 e-mail discussions with Jeremy White, we asked:

MozillaQuest Magazine: Why are there not more MS Windows-based applications that can run with CrossOver Office?

Jeremy White: Well, as you can imagine, completely re-implementing the Windows operating system is *hard*. Doing this work requires experts in Linux internals, X internals, Windows internals, and a willingness to not only do this crazy mission, but also live in a debugger all days. Suffice it to say, it takes rare talent to be a Wine hacker, and the work is quite hard.

Jeremy White: With all that said, I think Wine has made amazing progress, and is truly accomplishing some astonishing things. Further, I think the next few years are going to be mind blowing in terms of what Wine can do.

MozillaQuest Magazine: From reading over the various materials on the CrossOver Office Web site, I get the impression that you have to write/add specific code to CrossOver Office for each MS Windows-based application that will run on CrossOver Office. Why is that?

Jeremy White: Well, we tune Wine to make sure each application works properly. For example, we might have to add a hack to Wine to make Office work properly that Alexandre would never accept into the main Wine tree (Alexandre is very rigorous about ensuring that Wine contains only correct fixes). [Alexandre Julliard is the CodeWeavers CTO and maintainer of the Wine Project.]