Editor's Note: Turning the Town Red

Wine and WineLib: Still Under Active Development

October 9, 2000

One of the ripple effects of the Microsoft investment in Corel was a
potential change in the status of Wine, a technology that Corel had mightily
championed and used as the underlying technology for its release of Corel
WordPerfect Office 9.

For those unfamiliar with Wine, the technology: Wine is
an implementation of the Windows 3.x and Win32 APIs on top of X and Unix.
Wine provides both a development toolkit, Winelib, for porting Windows
sources to Unix, and a program loader, allowing unmodified Windows 3.1/95/NT
binaries to run under Intel Unixes, including Linux. Find more
information about Wine here.

For many years Wine has been the Holy Grail of Linux development, offering
a graceful solution to those critics who decry Linux as being ineffectual for
the desktop because of a lack of native applications: if you can run Windows
applications on a Linux box, Linux becomes a much more compelling replacement
for Windows.

Corel, with its profitable stable of Windows applications, became a big
supporter of Wine and in fact devoted some serious dollars--Canadian
dollars, of course--in developing Wine code that addressed COM, OLE,
multithreaded messaging, CommDlg, CommCtl, header files and definitions, GDI,
and printing issues. In the course of aggressively developing Wine code, Corel
ended up forking Wine--or, as Corel admits, Corel ended up with a "parallel
internal branch of the WINE code."

But when Microsoft invested in Corel
recently, speculation was that Wine was a dead duck; Microsoft tends to
aggressively attack efforts to emulate Windows behavior in non-Windows code.

Enter CodeWeavers, a small but
important vendor of Windows cross-development tools (i.e., Twine, a
commercialized implementation of Wine development tools) and the firm on the
forefront of Wine development, serving as the employer of lead Wine developer
Alexandre Julliard and a total of 14 Wine developers. I sat down with Jeremy
White, the founder and president of CodeWeavers, to discuss the future of
Wine, given Corel's new relationship with Microsoft.

The future of Wine, White admits, isn't nearly as rosy (or--pardon the
pun--ros�) as he or other Wine developers would like. Which isn't bad news.
Confused? Let Jeremy explain:

"I actually think that Wine is less important than WineLib, because you can
now buy VMware and run Windows applications on a Linux box," White says.
"Sure, you need to pay for VMware, but the solution exists."

WineLib is the programming toolkit that lets developers compile their
Windows applications for use on Linux. Instead of relying on Wine to run
native Windows applications, WineLib allows developers to release a Linux
version of their software without having to massively convert source code. As
Wine 1.0 is still months away from release, the Wine developers have quietly
turned their attention to WineLib.

"Basically, Corel forked their version of Wine, to the extent where it
would take months to merge their tree with the primary Wine tree," White says.
The problem, White says is that while the Wine developers have been
incorporating Corel code and solutions into the main Wine tree, Corel has not
been incorporating newer Wine code into their fork. So while Corel's plans for
Wine are uncertain, given the huge investment Microsoft had made in Corel and
Microsoft's traditional antipathy toward anyone reverse-engineering Windows
APIs, the Wine project enters a state of uncertainly. Which, White says, is
good news.

"The truth is, the uncertainty helps us out enormously," he says. "For
companies that don't know what Microsoft will do, the better off we are. We
can serve as the main resource for the people who want to hedge their bets and
come out with a Linux version of their software." Under this scenario,
commercial vendors and VARs will need a source of expertise to come out with
Linux versions of their software, which creates a market opportunity for
WineLib and CodeWeavers--and for Linux, both on the desktop and on the
server.