  <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>
        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
	  got Wine source code.
	  Otherwise, the next chapter <link
	  linkend="installing">Installing Wine</link> will explain the
	  methods to use to install the Wine files to some location
	  on your system (alternatively the chapter <link
	  linkend="compiling">Compiling</link> will explain first how to
	  compile Wine if you choose to use Wine source code).
	</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: 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 Wine and how to satisfy
	  the 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 your Windows program
	  source code, then please refer to the Winelib User's Guide
	  instead, which explains this particular topic.
          The 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="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-doc.sgml" "set" "book" "chapter" "")
End:
-->
