  <chapter id="introduction">
    <title>Introduction</title>

    <sect1 id="overview">
      <title>Overview / About</title>
      
      <sect2>
        <title>Purpose of this document and intended audience</title>
        <para>
          This document, called the Wine User Guide, is both an easy
          installation guide and an extensive reference guide.  This guide
          is for both the new Wine user and the experienced Wine user,
          offering full step-by-step installation and configuration
          instructions, as well as featuring extensive reference material
          by documenting all configuration features and support areas.
        </para>
      </sect2>

      <sect2>
        <title>Further questions and comments</title>
        <para>
          If, after examining this guide, the FAQ, and other relevant
          documentation there is still something you cannot figure out,
          we would love to hear from you.  The <ulink
          url="http://www.winehq.org/site/forums">mailing lists</ulink>
          section contains several mailing lists and an IRC channel, all
          of which are great places to seek help and offer suggestions.
          If you are particularly savvy, and believe that something can be
          explained better, you can file a <ulink
          url="http://bugs.winehq.org/">bug report</ulink> or <ulink
          url="http://www.winehq.org/site/sending_patches">post a
          patch</ulink> on Wine's documentation itself.
        </para>
      </sect2>

      <sect2>
        <title>Content overview / Steps to take</title>
        <para>
          In order to be able to use Wine, you must first have a working
          installation.  This guide will help you to move your system
          from an empty, Wineless void to one boasting a fresh, up to
          date Wine install.  The first step, <link
          linkend="getting-wine">Getting Wine</link>, illustrates the
          various methods of getting Wine's files onto your computer.
          The second step, <link linkend="installing">Installing
          Wine</link>, details the various install processes available to
          you.  The third step, <link linkend="config-wine-main">Configuring
          Wine</link>, shows how to customize a Wine installation depending
          on your individual needs.  The final step, <link
          linkend="running">Running Wine</link>, covers the specific
          steps you can take to get a particular application to run
          better under Wine, and provides useful links in case you need
          further help.
        </para>
      </sect2>

    </sect1>

    <sect1 id="what-is-wine">
      <title>What is Wine?</title>

      <sect2>
        <title>Windows and Linux</title>
        <para>
          Different software programs are designed for different
          operating systems, and most won't work on systems that they
          weren't designed for.  Windows programs, for example, won't run
          in Linux because they contain instructions that the system can't
          understand until they're translated by the Windows environment.
          Linux programs, likewise, won't run under the Windows operating
          system because Windows is unable to interpret all of their
          instructions.
        </para>
        <para>
          This situation presents a fundamental problem for anyone who
          wants to run software for both Windows and Linux.  A common
          solution to this problem is to install both operating systems on
          the same computer, known as "dual booting."  When a Windows
          program is needed, the user boots the machine into Windows to
          run it; when a Linux program is then needed, the user then
          reboots the machine into Linux.  This option presents great
          difficulty: not only must the user endure the frustration of
          frequent rebooting, but programs for both platforms can't be
          run simultaneously.  Having Windows on a system also creates
          an added burden: the software is expensive, requires a separate
          disk partition, and is unable to read most filesystem formats,
          making the sharing of data between operating systems difficult.
        </para>
      </sect2>

      <sect2>
        <title>What is Wine, and how can it help me?</title>
        <para>
          Wine makes it possible to run Windows programs alongside any
          Unix-like operating system, particularly Linux.  At its heart,
          Wine is an implementation of the Windows Application
          Programing Interface (API) library, acting as a bridge between
          the Windows program and Linux.  Think of Wine as a compatibility
          layer, when a Windows program tries to perform a function that
          Linux doesn't normally understand, Wine will translate that
          program's instruction into one supported by the system.  For
          example, if a program asks the system to create a Windows
          pushbutton or text-edit field, Wine will convert that
          instruction into its Linux equivalent in the form of a command
          to the window manager using the standard X11 protocol.
        </para>
        <para>
          If you have access to the Windows program's source code, Wine
          can also be used to recompile a program into a format that Linux
          can understand more easily.  Wine is still needed to launch the
          program in its recompiled form, however there are many advantages
          to compiling a Windows program natively within Linux.  For more
          information, see the Winelib User Guide.
        </para>
      </sect2>

      <sect2 id="wine-features">
        <title>Wine features</title>

        <para>
          Throughout the course of its development, Wine has continually
          grown in the features it carries and the programs it can run.
          A partial list of these features follows: 
        </para>
        <para>
          <itemizedlist>
            <listitem>
              <para>
                Support for running Win32 (Win 95/98, NT/2000/XP), Win16
                (Win 3.1) and DOS programs
              </para>
            </listitem>
            <listitem>
              <para>
                Optional use of external vendor DLL files (such as those
                included with Windows)
              </para>
            </listitem>
            <listitem>
              <para>
                X11-based graphics display, allowing remote display to any
                X terminal, as well as a text mode console
              </para>
            </listitem>
            <listitem>
              <para>
                Desktop-in-a-box or mixable windows 
              </para>
            </listitem>
            <listitem>
              <para>
                DirectX support for games
              </para>
            </listitem>
            <listitem>
              <para>
                Good support for various sound drivers including OSS and ALSA
              </para>
            </listitem>
            <listitem>
              <para>
                Support for alternative input devices 
              </para>
            </listitem>
            <listitem>
              <para>
                Printing: PostScript interface driver (psdrv) to standard
                Unix PostScript print services 
              </para>
            </listitem>
            <listitem>
              <para>
                Modem, serial device support
              </para>
            </listitem>
            <listitem>
              <para>
                Winsock TCP/IP networking support
              </para>
            </listitem>
            <listitem>
              <para>
                ASPI interface (SCSI) support for scanners, CD writers,
                and other devices
              </para>
            </listitem>
            <listitem>
              <para>
                Advanced unicode and foreign language support
              </para>
            </listitem>
            <listitem>
              <para>
                Full-featured Wine debugger and configurable trace
                logging messages for easier troubleshooting
              </para>
            </listitem>
          </itemizedlist>
        </para>
      </sect2>
    </sect1>

    <sect1 id="wine-versions">
      <title>Versions of Wine</title>
        <sect2>
          <title>Wine from Wine HQ</title>

          <para>
             Wine is an open source project, and there are accordingly
             many different versions of Wine for you to choose from.  The
             standard version of Wine comes in intermittant releases
             (roughly once a month), and can be downloaded over the
             internet in both prepackaged binary form and ready to compile
             source code form.  Alternatively, you can install a development
             version of Wine by using the latest available source code on
             the CVS server.  See the next chapter, <link
             linkend="getting-wine">Getting Wine</link>, for further details.
          </para>
        </sect2>
        <sect2>
          <title>Other Versions of Wine</title>
          <para>
            There are a number of programs that are derived from the
            standard Wine codebase in some way or another.  Some of these
            are commercial products from companies that actively contribute
            to the Wine project.
          </para>
          <para>
            These products try to stand out or distinguish themselves
            from the standard version of Wine by offering greater
            compatibility, easier configuration, and commercial support.
            If you require such things, it is a good idea to consider
            purchasing these products.
          </para>
      <table><title>Various Wine offerings</title>
        <tgroup cols=3 align="left">
          <thead>
            <row>
              <entry>Product</entry>
              <entry>Description</entry>
              <entry>Distribution Form</entry>
            </row>
          </thead>
          <tbody>
            <row>
              <entry>
                <ulink
                url="http://www.codeweavers.com/products/office">CodeWeavers CrossOver Office</ulink>
              </entry>
              <entry>
                CrossOver Office allows you to install your favorite
                Windows productivity applications in Linux, without
                needing a Microsoft Operating System license. CrossOver
                includes an easy to use, single click interface, which
                makes installing a Windows application simple and fast.
              </entry>
              <entry>
                Commercial; 30-day fully-functional demo available.
              </entry>
            </row>
            <row>
              <entry>
                <ulink
                url="http://www.codeweavers.com/products/cxofficeserver">CodeWeavers CrossOver Office Server Edition</ulink>
              </entry>
              <entry>
                CrossOver Office Server Edition allows you to run your
                favorite Windows productivity applications in a
                distributed thin-client environment under Linux, without
                needing Microsoft Operating System licenses for each
                client machine. CrossOver Office Server Edition allows you
                to satisfy the needs of literally hundreds of concurrent
                users, all from a single server.
              </entry>
              <entry>
                Commercial
              </entry>
            </row>
            <row>
              <entry>
                <ulink url="http://www.transgaming.com">TransGaming Technologies Cedega</ulink>
              </entry>
              <entry>
                Cedega, formerly known as WineX, is a Wine version derived
                from the old BSD licensed Wine tree.  It is designed
                specifically to function with games, and so development
                is centered around ensuring compatibility with technologies
                like Direct3D, DirectX, and various methods of copy protection.
              </entry>
              <entry>
                Commercial; free CVS download of reduced version (no copy
                protection support etc.)
              </entry>
            </row>
            <row>
              <entry>
                <ulink
                url="http://sourceforge.net/projects/rewind">ReWind</ulink>
              </entry>
              <entry>
                ReWind is a Wine version derived from the old BSD licensed
                Wine tree.  Due to its BSD license it can't incorporate
                most recent Wine patches, however its code can be used by
                any software project without restriction.  Although code
                is occasionally contributed to ReWind alongside the main
                Wine project, there has never been an official release of
                ReWind.
              </entry>
              <entry>
                Free, Open Source: BSD license 
              </entry>
            </row>
          </tbody>
        </tgroup>
      </table>
    </sect1>

    <sect1 id="alternatives">
      <title>Alternatives to Wine you might want to consider</title>
      <para>
          There are many ways to run software other than through Wine.  If
          you are considering using Wine to run an application you might
          want to think about the viability of these approaches if you
          encounter difficulty.
      </para>

      <sect2>
        <title>Native Applications</title>
        <para>
          Instead of running a particular Windows application with Wine,
          one frequently viable alternative is to simply run a different
          application.  Many Windows applications, particularly more
          commonly used ones such as media players, instant messengers,
          and filesharing programs have very good open source equivalents.
          Furthermore, a sizable number of Windows programs have been
          ported to Linux directly, eliminating the need for Wine (or
          Windows) entirely.
        </para>
      </sect2>
      <sect2>
        <title>Another Operating System</title>
        <para>
          Probably the most obvious method of getting a Windows
          application to run is to simply run it on Windows.  However,
          security, license cost, backward-compatibility, and machine
          efficiency issues can make this a difficult proposition, which
          is why Wine is so useful in the first place.
        </para>
        <para>
          Another alternative is to use <ulink
          url="http://www.reactos.com">ReactOS</ulink>, which is a fully
          open source alternative to Windows.  ReactOS shares code
          heavily with the Wine project, but rather than running Windows
          applications on top of Linux they are instead run on top of the
          ReactOS kernel.  ReactOS also offers compatibility with Windows
          driver files, allowing the use of hardware without functional
          Linux drivers.
        </para>
      </sect2>
      <sect2>
        <title>Virtual Machines</title>
        <para>
          Rather than installing an entirely new operating system on your
          machine, you can instead run a virtual machine at the software
          level and install a different operating system on it.  Thus, you
          could run a Linux system and at the same time run Windows along
          with your application in a virtual machine simultaneously on the
          same hardware.  Virtual machines allow you to install and run
          not only different versions of Windows on the same hardware, but
          also other operating systems, including ReactOS.
        </para>
        <para>
          There are several different virtual machine offerings out there,
          and some are also able to emulate x86 hardware on different
          platforms.  The open source <ulink
          url="http://bochs.sourceforge.net/">Bochs</ulink> and <ulink
          url="http://fabrice.bellard.free.fr/qemu/">QEMU</ulink> can run
          both Windows and ReactOS virtually.  Other, commercial virtual
          machine offerings include <ulink
          url="http://www.vmware.com/">VMware</ulink> and Microsoft's
          <ulink url="http://www.microsoft.com/windowsxp/virtualpc/">VirtualPC</ulink>.
        </para>
        <para>
          There are significant drawbacks to using virtual machines,
          however.  Unlike Wine, such programs <emphasis>are</emphasis>
          emulators, so there is an inevitable speed decrease which can
          be quite substantial.  Furthermore, running an application
          inside a virtual machine prevents fully integrating the
          application within the current environment.  You won't, for
          example, be able to have windows system tray icons or program
          shortcuts sitting alongside your desktop Linux ones, since
          instead the Windows applications must reside completely within
          the virtual machine.
        </para>
      </sect2>
    </sect1>
  </chapter>

<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-parent-document:("wine-user.sgml" "set" "book" "chapter" "")
End:
-->
