  <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 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 four thousand files and almost 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 id="other-wines">
      <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>
	        A computer ;-)
                <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:
-->
