FRAMINGHAM (07/31/2000) - For many people in the computing industry, the fight card for the next several years is dominated by one colossal battle for supremacy: Windows vs. Linux. At first glance, the issues seem simple.
Microsoft Corp. will offer software compatibility and stability, while Linux will counter with low cost and full access to everything under the hood. Some see it as a battle between being coddled (or regulated) and being free.
When the issue is framed in these terms, it's often very easy for some information technology managers to choose sides. Retraining staff to use another word processor or spreadsheet application would be expensive. Microsoft Word and Excel run on the PC and the Macintosh. So choosing to stick with Windows seems to be a simple and safe decision.
Hidden in the shadows, outside the spotlight of hype, however, is a serious open-source software project that is aiming to give Linux, Unix and other operating systems the chance to provide 100 percent software compatibility with Windows applications. This project, known as Wine, could give Linux the chance to offer both freedom and coddling to the world.
What Is It?
The Wine project is an open-source initiative designed to clone the most important functions that the Windows operating system offers to programmers.
These features, known as the Win32 application programming interface (API), include all the basic functions for standard tasks like accessing disk drives and memory, interfacing with peripherals such as printers and scanners, moving data across the Internet and the thousands of other tasks a modern operating system does for its programs.
Wine is a recursive acronym for "Wine Is Not an Emulator," an inside joke that revolves around the basic design elements of the project. The group is cloning Windows by rewriting raw source code instead of simply emulating it. Several companies already make Windows emulators, programs that run noticeably slower because they must translate each instruction. Connectix Corp., for instance, sells Virtual PC, which lets a Macintosh run Windows software by painstakingly translating every x86 instruction into something the Macintosh can understand.
It also requires a license from Microsoft.
The Wine project is turning out native x86 code written in C language. Anyone can compile it and link it with a program to produce working Dynamic Link Libraries and other libraries. The group aims to produce a package just like Windows.
When the Wine group is finished, ordinary Windows programs will run on any computer with an Intel x86 chip, even if there's no software from Microsoft on the machine. Many project members are concentrating on combining Wine with Linux, but the work could be combined with other operating systems. One related project, named Odin, is aimed at making Wine work with OS/2. Software destined for other platforms like the Mac will be much easier to translate using the Wine libraries.
Programmer Robert Coeyman, who donates time to the Wine project, says such tools let "the Windows-only programmers start supporting alternate operating systems with limited effort. You can almost develop two products in the same time now, and when the project is completed, you will be able to create one code base for many operating systems."
The open-source project draws on a wide range of volunteers, including some who are paid by their employers. Some are in it for the technical challenge. Some want to save the cost of a Windows license. Some just want to see Microsoft cut out of the loop.
Corel Corp. in Ottawa is one of the highest-profile corporate contributors to the project. The company wants to port its graphics and productivity software to the Linux platform, so its programmers are contributing new code to Wine as the most efficient route. Corel has been a leader in many areas of the project, including making sure that Wine correctly handles database calls made through Open Database Connectivity. The project's leaders say these details are done - at least until Windows is revised again.
Dave Hawkes, a software engineer at CADLink Technology Corp. in Boylston, Mass., says he's experimenting with Wine because his company's product is often run on stand-alone machines where users rarely access the features of Windows.
If CADLink can save its customers the cost of a Windows license, they can pass the savings on to their customers.
"We're very much in a vertical market, so the platform isn't as important to us. They use our software to run a business, and Windows or Linux is a small part of the cost," says Hawkes.
Wine performs "surprisingly well," he adds. "Our software has a surprisingly long history. Its roots go back to Windows 2. It's a medium-size project.
You're probably talking about 500k lines of code. There are a number of issues."
Many companies are experimenting with using Wine to save costs. One programmer, who asked not to be identified, said he was working on replacing the Citrix Systems Inc. server with Linux boxes running Wine. In the current setup, the central Citrix Windows NT server runs the software and displays the results on client machines. With more than six or seven users, however, the server is too slow. This programmer says he wants to save the cost of the NT licenses for all the client machines. Putting Wine on the low-cost Linux machines saves the price of these licenses and offers better performance at peak times.
Right now, the Wine project is far from finished, but participants can report some startling successes. Many popular programs like Microsoft Word and Internet Explorer run well, if not perfectly. Almost all the features are available. In many cases, games are also well supported, largely because many developers in the project care about games and frequently test the system with games, using the results to look for new sections of Wine that must be improved.
Wine participants track the project's success with a central database of reports on how well Wine runs each application. Programs like Autodesk Inc.'s AutoCAD, Napster and Starcraft Broodwars receive a rating of 5, which means they run almost perfectly.
Not all reports end as well. Some users can't get Microsoft Word running.
Others find strange glitches. One report said, "Adobe [Acrobat] opened up fine.
[But] after opening a PDF file, the page was horribly rendered. Text was small and highlighted in blue, no graphics were shown for this document."
Many reports fall in between. "Getting it installed meant holding your nose just right, etc., and there are occasional screen glitches, but that is usually fixed by minimizing and restoring the window," one person wrote. "I only use limited facilities [in Quicken], though. I don't use the Web or inventory stuff or the address book, just use the accounts and some reports. For those things, it's been working perfectly!"
Wine developers use these reports to decide what to work on next. Often, the people who find a bug are the ones who try to fix it. And each contributor has a personal reason for being on the project. George Boutwell, a developer, says, "My next goal is to get a little less-known accounting program to work nice in Wine. If I can get that working, my wife and I would be quite happy to never boot Windows again."
Judge Jackson's Part
The Wine project is also caught up in the breakup of Microsoft ordered by Judge Thomas Penfield Jackson. One proposed remedy for the case would force Microsoft to make its source code and APIs available to competitors that want to ensure compatibility. Wine is one such group. One member of the Wine group, who requested anonymity, says the decision could "be a great victory for the Wine project. . . . And it would remove the need to illegally reverse-engineer parts of Windows to get the answer."
Coeyman says, "It depends on what Microsoft really does as opposed to what it promises. Complete, open and honest documentation would help us." But no one seems to think this help will come soon.
The Wine group isn't waiting, in part because it wants to write cleaner software. It gets the benefit of hindsight when programmers clone the architecture, and this makes it much easier to create something better. The Wine code is consistently smaller than the corresponding code from Microsoft.
The group can't claim it's less buggy, since it aims to duplicate the bugs perfectly to ensure compatibility. Still, the group hopes to make the API more transparent to programmers. People who have trouble getting their software to work with Windows may now try to get it working with Wine first.
In fact, the Wine code is sort of a living, breathing compendium of the non-Microsoft knowledge of the Win32 API. It isn't perfect, but it can be a big help to a programmer trying to understand Windows.
The biggest winners may be the software users and IT professionals everywhere.
The new upgrade prices for Windows are steep, and Microsoft includes a number of features related to manageability and efficiency that encourage an organization to upgrade all its machines at once. This can be a big burden for small businesses, where most workers are still quite happy with Windows 95.
Wine lets them run old software on a new operating system without paying heavily. As one Wine user said, "Yes, it's not perfect, but neither is Windows." So maybe they're doing a great job cloning the effect.
Wayner is a freelance writer in Baltimore. You can reach him at firstname.lastname@example.org.
Wine is an implementation of the Windows 3.x and Win32 APIs on top of the open-standard X Window System and Unix. Think of Wine as a Windows-compatibility layer. Wine provides both a development tool kit for porting Windows sources to Unix and a program loader, allowing unmodified Windows 3.1/95/NT binaries to run with Intel Unixes. Wine works on most popular Intel Unixes, including Linux, FreeBSD and Solaris. It doesn't require Microsoft Windows because it's a completely alternative implementation consisting of 100 percent Microsoft-free code, but it can optionally use native system Dynamic Link Libraries if they're available. Wine comes with complete sources, documentation and examples and is freely redistributable, under licensing terms similar to those of BSD.