  <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="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>
            </row>
          </tbody>
        </tgroup>
      </table>
     </sect2>
    </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:
-->
