October 5, 2005
This article was contributed by Brian Vincent
In just a few weeks,
Wine
will be reaching a major milestone: a beta release.
Until now, Wine has been one of the largest projects under
development that has never seen a beta. Wine's codebase is
approaching 1.5 million lines, contributed by nearly 700 individuals
over the past 11 years. Two successful commercial products are based
on the code, and it is used in a production environment by several large
corporations. While Wine often catches flack within the open-source
community for bringing Windows compatibility to Linux, there are two
facts that are undeniable:
- Windows has the largest library of software available,
including a huge number of applications that have no comparable Linux
alternative.
- Legacy software from a vendor that has gone out of business will never
get ported to Linux.
Wine's acronym paradoxically comes from both the phrases
WINdows Emulator and Wine Is Not an Emulator.
Don't worry, Wine's developers really don't care (much) which
you prefer since it fits both descriptions to some degree.
At its core, Wine is an implementation
of the Win32 API designed to run on top of Unix-like operating systems.
KDE, of course, relies on Qt and GNOME on GTK, and in this regard Wine
simply implements yet another API. The difference is, Win32 was
designed by Microsoft and happens to be one of the most widely used
APIs in existence.
The Wine beta release will come at an interesting time.
Microsoft is not planning on releasing any major new API components
until Windows Vista ships.
Even then, it will be a while until any major applications require
the new API. As a result, Wine has a few years to stabilize the existing APIs.
Besides implementing the Win32 API, Wine contains several unique
features for running Windows programs on Linux.
On Linux, the ELF binary format describes executables and libraries.
Microsoft uses a different format, PE (Portable Executable), for the
same purpose. The
PE format is more complex and allows multiple resources to be embedded
in one file. Wine implements a special loader to open PE files.
Windows also contains primitives, such as threading, that are much
different than on Linux. Wine's wineserver is used to synchronize
between threads and processes using custom IPC code.
It performs many of the low-level functions done by the kernel on Windows.
If that isn't exciting enough for you, Wine also comes with
winemine, a minesweeper game.
Wine's architecture has stabilized quite a bit over the past few
years. Items tackled just this summer include:
- Graphical tools for Wine's configuration (regedit and winecfg).
- DirectX 9 support.
- Support for allowing applications to open web pages.
- A new RichEdit control.
- Improved support for the Microsoft Installer.
- Beginnings of 64-bit support (Win64).
- Theming for controls.
- Authentication using Samba 4 interfaces.
- Improved filesystem integration.
In addition, a shift in focus from core components to higher-level
libraries has brought better compatibility. Out of the box, Wine's
default settings are sufficient for running many
programs. In June the old
config file was removed and
replaced with the new
winecfg utility.
A lot of things are in the process of being cleaned up for the beta
release. Wine's application
database, which lists compatible applications,
has seen a complete overhaul over the past year. Some new
capabilities have been added in the past few weeks. Work is
underway to rewrite major portions of the Wine User Guide to bring it
up to date. Finally, wine's Bugzilla bug database has been
pruned of items that have been fixed.
So let's be realistic, how well does it work? Thanks to recent work
done by CodeWeavers, most Windows programs now install.
For a long time, just
getting a program to install was a huge hurdle, things have
really improved in that area.
Many small to medium-sized programs run just fine,
though you may notice little discrepancies.
Larger programs, such as
Photoshop, Word, Excel, or Quicken can be coaxed into running, but
they have traditionally suffered from regressions in Wine.
As a work-around, CodeWeavers' CrossOver Office is able to run
those programs, so the technology is definitely capable.
Games usually don't run out of the box because of copy protection
schemes that aren't compatible with Wine.
The focus of the beta release is to provide a starting point for
stabilizing Wine. Tons of bugs need to be fixed and entire APIs
remain to be finished off. The beta release won't be a magic bullet
that suddenly makes Wine perfect, but all of the tools and interfaces
will be in place.
It will also be feature complete from a packaging standpoint,
and distributions are encouraged to begin testing integration.
For anyone interested in development, there's still a
lot of work to be done and plenty of ways to get involved.
Stay tuned to WineHQ for
announcements.
(
Log in to post comments)