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

    <sect1>
      <title>Overview / About</title>
      
      <sect2>
      <title>Purpose of this document and intended audience</title>
      <para>
        This document, called the Wine User Guide, is supposed to
	be both an easy installation guide and an extensive reference guide.
	Thus while it completely explains how to install and configure Wine,
	it also tries to document all configuration features and support areas
	of the Wine environment as a whole.
      </para>
      <para>
        It tries to target both the new Wine user (aka "bloody newbie"),
	by offering a step by step approach, and the experienced Wine
	user or expert, by offering the reference material mentioned
	above.
      </para>
      <para>
        The whole document has been extensively rewritten (in other
	words: the document then deserved to be called a document :-) by
	&name-andreas-mohr; <email>&email-andreas-mohr;</email> in
	March 2003.
      </para>
      </sect2>

      <sect2>
        <title>Burning questions and comments</title>
        <para>
          If during reading this document there is something you
          can't figure out, or think could be explained better, or
          that should have been included, please immediately mail to
          either the &name-web-admin; <email>&email-web-admin;</email> or
          the &name-wine-devel; <email>&email-wine-devel;</email>, or
          post a bug report to
          <ulink url="http://bugs.winehq.com/">Wine's Bugzilla</ulink> to
          let us know how this document can be improved.  Remember, Open
          Source is "free as in free speech, not as in free beer": it can
          only work in the case of very active involvement of its users!
	</para>
	<para>
	  <emphasis>
	  Note that I can't say that I'm too impressed with the amount
	  of feedback about this Guide that we have received so far
	  since I added this paragraph many months ago...
	  </emphasis>
        </para>
      </sect2>

      <sect2>
        <title>Content overview / Steps to take</title>
	<para>
	  This section will try to give you a complete overview of
	  how to go all the way to a fully working Wine installation
	  by following this Guide.
	  We <emphasis>strongly recommend</emphasis> following every
	  single relevant step of this Guide, since you might miss important
	  information otherwise.
	</para>
	<para>
	  First, we start by explaining what Wine is and mentioning
	  everything else that's useful to know about it (that's
	  covered in this very chapter that you're reading a part of right now).
	</para>
	<para>
	  In order to be able to use Wine, you need to obtain a copy of
	  its files first. That's the purpose of the next chapter, <link
	  linkend="getting-wine">Getting Wine</link>: it tries to show
	  you how Wine can be installed on your particular system
	  (i.e. which installation methods are available in your case),
	  and then it explains the various methods: either getting Wine
	  via a binary package file suited for your particular system,
	  or getting it via a Wine <glossterm>source code</glossterm>
	  archive file, or getting the most current Wine development
	  source code via <glossterm>CVS</glossterm>.
	</para>
	<para>
	  Once you got your copy of Wine, you might need to follow the
	  next chapter <link linkend="compiling">Compiling</link> if you
	  decided to get Wine source code.
	  Otherwise, the next chapter <link
	  linkend="installing">Installing Wine</link> will explain the
	  methods to use to install the Wine binary files to some location
	  on your system.
	</para>
	<para>
	  Once Wine is installed on your system, the next chapter <link
	  linkend="config-wine-main">Configuring Wine</link> will
	  focus on the available configuration methods for Wine to set up
	  a proper Wine/Windows environment with all its requirements:
	  there are either graphical (e.g. WineSetupTk) or text mode
	  (wineinstall) configuration helper applications available that will
	  fully configure the Wine environment for you.
	  And for those people who dislike a fully automated
	  installation (maybe because they really want to know what they're
	  doing), we'll describe how to manually set up a complete Wine
	  environment configuration.
	</para>
	<para>
	  Once the configuration of the Wine environment is done, the
	  next chapter <link linkend="running">Running Wine</link>
	  will show you how to run Windows programs with Wine and
	  how to satisfy the more specific requirements of certain
	  Windows programs.
	</para>
	<para>
	  In case you run into trouble, the chapter <link
	  linkend="bugs">Troubleshooting / Reporting bugs</link>
	  will list and explain some common troubleshooting and debugging
	  methods.
	</para>
      </sect2>

    </sect1>

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

      <para>
        <literallayout>
          Written by &name-john-sheets; <email>&email-john-sheets;</email>
          Modified by &name-dustin-navea; <email>&email-dustin-navea;</email>
        </literallayout>
      </para>

      <sect2>
        <title>Windows and Linux</title>
        <!-- general description of wine, what does it do? -->
        <para>
          Many people have faced the frustration of owning software that
          won't run on their computer.  With the recent popularity of
          <ulink url="http://www.tldp.org/FAQ/Linux-FAQ/index.html">
          Linux</ulink>, this is happening more and more often because
          of differing operating systems.  Your Windows software won't
          run on Linux, and your Linux software won't run in Windows.
        </para>
        <para>
          A common solution to this problem is to install both operating
          systems on the same computer, as a <quote>dual boot</quote>
          system.  If you want to write a document in MS Word, you can
          boot up in Windows; if you want to run GnuCash, the GNOME
          financial application, you can shut down your Windows session
          and reboot into Linux.  The problem with this is that you
          can't do both at the same time.  Each time you switch back and
          forth between MS Word and GnuCash, you have to reboot again.
          This can get tiresome quickly.
        </para>
        <para>
          Life would be so much easier if you could run all your
          applications on the same system, regardless of whether they
          are written for Windows or for Linux.  On Windows, this isn't
          really possible, yet.
          <footnote>
            <para>
              Technically, if you have two networked computers, one
              running Windows and the other running Linux, and if you
              have some sort of X server software running on the Windows
              system, you can export Linux applications onto the Windows
              system. A free X server is available at
	      <ulink url="http://xfree86.cygwin.com/">http://xfree86.cygwin.com/</ulink>.
              However, this doesn't solve the problem if you only own
              one computer system.
            </para>
          </footnote>
          However, Wine makes it possible to run native Windows
          applications alongside native Linux applications on any Unix-like
          system.  You can share desktop space between MS Word and GnuCash,
          overlapping their windows, iconizing them, and even running them
          from the same launcher.
        </para>
      </sect2>

      <sect2>
        <title>What is Wine, and how can it help me?</title>
        <!-- emulator vs. Winelib -->
        <para>
          Wine is a UNIX implementation of the win32 Windows libraries,
          written from scratch by hundreds of volunteer developers and
          released under an Open Source license (think of it as a
	  Windows compatibility layer for Linux and other similar
	  operating systems).  Anyone can download
          and read through the source code, and fix bugs that arise.
          The Wine community is full of richly talented programmers
          who have spent thousands of hours of personal time on
          improving Wine so that it works well with the win32
          <glossterm>Application Programming Interface</glossterm>
          (API), and keeps pace with new developments from Microsoft.
        </para>
        <para>
          Wine can run Windows applications in two discrete ways: as
          pre-compiled Windows binaries (your average off-the-shelf
	  program package e.g. available on CD), or as natively compiled
          <ulink url="http://www.xfree86.org/#whatis">X11 (X-Window
          System)</ulink> applications (via the part of Wine that's called
	  Winelib). If you're interested in compiling the source code of a
	  Windows program you wrote, then please refer to the
	  Winelib User's Guide instead, which explains this particular topic.
          This Wine Users Guide however will focus on running standard
          Windows applications using Wine.
        </para>

        <!-- the development model -->
        <para>
        </para>
      </sect2>

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

        <para>
          Now that we're done with the boring introductory babble,
	  let us tell you what Wine is able to do/support:
        </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
		<glossterm>DLLs</glossterm> (e.g. original
                Windows DLLs)
              </para>
            </listitem>
            <listitem>
              <para>
                X11-based graphics display (remote display to any X
                terminal possible), text mode console
              </para>
            </listitem>
            <listitem>
              <para>
                Desktop-in-a-box or mixable windows
              </para>
            </listitem>
            <listitem>
              <para>
                Pretty advanced DirectX support for games
              </para>
            </listitem>
            <listitem>
              <para>
                Good support for sound, alternative input devices
              </para>
            </listitem>
            <listitem>
              <para>
		Printing: PostScript interface driver (psdrv) to
		standard Unix PostScript print services
              </para>
            </listitem>
            <listitem>
              <para>
                Modems, serial devices are supported
              </para>
            </listitem>
            <listitem>
              <para>
                Winsock TCP/IP networking
              </para>
            </listitem>
            <listitem>
              <para>
                ASPI interface (SCSI) support for scanners, CD writers,
                ...
              </para>
            </listitem>
            <listitem>
              <para>
                Unicode support, relatively advanced language support
              </para>
            </listitem>
            <listitem>
              <para>
                Wine debugger and configurable trace logging messages
              </para>
            </listitem>
          </itemizedlist>
        </para>
      </sect2>
    </sect1>

<!-- *** Not really useful as is, but may be able to recycle this elsewhere...
    <sect1 id="getting-started">
      <title>Getting started</title>

      <para>
        Written by &name-john-sheets; <email>&email-john-sheets;</email>
      </para>

      <para>
        Wine can be pretty intimidating at first.  The Wine
        distribution consists of over two thousand files and half a
        million lines of source code
        <footnote>
          <para>Crudely calculated from running <command>find . | wc
              -l</command> and <command>cat `find . -name "*.c"` | wc
              -l</command>, respectively, from a fresh CVS checkout.</para>
        </footnote>,
        and is probably one of the steepest learning curves in the
        open source world.  This chapter will give you a crash course
        in the important topics you need to know to get started with
        running Wine applications.
      </para>
    </sect1>
-->

    <sect1>
      <title>Other, often "Enhanced" Wine offerings</title>

      <para>
        There are a number of offerings that are derived from the standard Wine
	codebase in some way or another.
      </para>
      <para>
        Some of these are commercial products from companies that actively contribute to Wine.
      </para>
      <para>
        These products often try to stand out or distinguish themselves
	from Wine, e.g. by offering greater compatibility or much easier
	and flexible configuration than your average standard Wine
	release. As such it is often a good idea to shell out some bucks
	for the commercial versions, especially since these companies
	contribute a lot of code to Wine, and plus, I'm sure they'll be happy about your support...
      </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://sourceforge.net/projects/rewind">ReWind</ulink>
              </entry>
              <entry>
                ReWind is a Wine version derived from the old BSD
		licensed Wine tree (it's the "completely free" BSD license fork of the currently LGPL'ed Wine).
		Due to its BSD license it can't incorporate some Wine
		patches that get licensed under the more restrictive
		(or: protective) LGPL license by their authors.
              </entry>
              <entry>
                Free, Open Source: BSD license
              </entry>
            </row>
	    <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
	      </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 OfficeServer 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.codeweavers.com/products/crossover">CodeWeavers
		CrossOver Plugin</ulink>
	      </entry>
	      <entry>
                CrossOver Plugin lets you use many Windows plugins
                directly from your Linux browser. In particular CrossOver
                fully supports QuickTime, ShockWave Director,
                Windows Media Player 6.4, Word Viewer, Excel Viewer,
                PowerPoint Viewer, and more...
              </entry>
              <entry>
                Commercial; Demo version available
              </entry>
            </row>
	    <row>
	      <entry>
	        <ulink
		url="http://www.codeweavers.com/technology/wine/">CodeWeavers
		Wine preview</ulink>
	      </entry>
	      <entry>
	        The Wine preview is a usually slightly older Wine release
		that's been tested as extra stable.
		It includes the graphical installer winesetuptk,
		allowing for easy configuration.
              </entry>
	      <entry>
	        Free, Open Source: LGPL license
	      </entry>
	    </row>
            <row>
              <entry>
                <ulink url="http://www.transgaming.com">TransGaming Technologies WineX</ulink>
              </entry>
              <entry>
                WineX is a Wine version derived from the old BSD licensed Wine tree, with currently better support for Direct3D and DirectX software than standard Wine, and with added copy protection support for multiple types of copy protection e.g. used in games.
              </entry>
              <entry>
                Commercial; <ulink
		url="http://sourceforge.net/projects/winex">free CVS
		download</ulink> of reduced version (no copy protection
		support etc.)
              </entry>
            </row>
	  </tbody>
	</tgroup>
      </table>
    </sect1>

    <sect1 id="competition">
      <title>Alternatives to Wine you might want to consider</title>

      <para>
        We'll mention some alternatives (or we could also say:
	competitors) to Wine here that might come in handy if Wine is
	not usable for the program or job you want it to do, since
	these alternatives usually provide better Windows compatibility.
      </para>

      <sect2>
        <title>VMWare</title>
        <para>
	  <ulink url="http://www.vmware.com">VMWare</ulink> is a
	  software package to emulate an additional machine on your PC.
	  In other words, it establishes a virtual machine that can be
	  used to run any kind of Intel x86 compatible operating system
	  in parallel to your currently running operating system.
	  Thus you could use Linux and at the same time run Windows 98
	  in a virtual machine on the same screen.
        </para>
	<para>
	  Sounds nice, doesn't it? Well, there are some drawbacks, of
	  course... First, VMWare is pretty expensive, and second, you
	  need a licensed copy of the operating system you want to run.
	  Third, since VMWare is a virtual machine, it's quite slow.
	  Wine doesn't have any of these limitations, but unfortunately
	  this also means that you will not have the relatively good
	  compatibility of a real original Windows system if you use
	  Wine.
	</para>
      </sect2>
      <sect2>
        <title>Win4Lin</title>
	<para>
	  <ulink url="http://www.win4lin.com">Win4Lin</ulink> by
	  NeTraverse allows you to run a special version of Win98 in
	  Linux. Compared to VMWare, this has the advantage that it's
	  faster, but you still have the license fees.
	</para>
      </sect2>
    </sect1>
    <sect1 id="wine-stats">
      <title>Basic Wine Requirements</title>

      <para>
        <literallayout>
          Written by &name-andreas-mohr; <email>&email-andreas-mohr;</email>
          Modified by &name-dustin-navea; <email>&email-dustin-navea;</email>
        </literallayout>
      </para>

      <para>
        This section only mentions the most basic system requirements of
	Wine, in order to ease your Wine "purchasing decision" ;-)
	For an up-to-date much more detailed list of requirements for
	compiling and/or installing Wine,
	please read the REQUIREMENTS section of the <ulink
	url="http://www.winehq.org/source/README">README</ulink> file,
	which is also available in the main directory of a Wine source code tree.
      </para>
      <para>
	In case of a binary Wine package, these Wine requirements will
	probably be fulfilled automatically by the package installation
	process; if you want to have a look at the detailed requirements
	nevertheless (which definitely can't hurt!), then I'd like to
	mention that the README file can also frequently be found in the
	documentation files directory of a Wine package.
      </para>

      <sect2 id="system-requirements">
        <title>System requirements</title>
        <para>
          In order to run Wine, you generally need the following:
        </para>
        <para>
          <itemizedlist>
            <listitem>
	      <para>
	        <literallayout>A computer ;-)</literallayout>
                <literallayout>  Wine: only PCs >= i386 are supported at the moment.</literallayout>
                <literallayout>  Winelib: selected other platforms are supported, but can be tricky.</literallayout>
	      </para>
            </listitem>
            <listitem>
	      <para>
                A UNIX-like operating system such as Linux, *BSD,
                Solaris x86, ReactOS, Cygwin
	      </para>
            </listitem>
            <listitem>
	      <para>
                >= 32MB of RAM.  Everything below is pretty much
                unusable.  >= 96 MB is needed for "good" execution.
	      </para>
            </listitem>
            <listitem>
	      <para>
                An X11 window system (XFree86 etc.).  Wine is prepared
                for other graphics display drivers, but writing
                support is not too easy.  The text console display
                driver (ttydrv) is nearly usable, so you don't
		necessarily have to install X11 if you don't need it for
		the programs you intend to run (in other words: mainly
		for text mode programs).
	      </para>
            </listitem>
          </itemizedlist>
        </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:
-->
