@chapter What is it?

The Cygwin tools are ports of the popular GNU development tools for
Microsoft Windows.  They run thanks to the Cygwin library which
provides the UNIX system calls and environment these programs expect.

With these tools installed, it is possible to write Win32 console or
GUI applications that make use of the standard Microsoft Win32 API
and/or the Cygwin API.  As a result, it is possible to easily
port many significant Unix programs without the need
for extensive changes to the source code.  This includes configuring
and building most of the available GNU software (including the packages
included with the Cygwin development tools themselves).  Even if
the development tools are of little to no use to you, you may have
interest in the many standard Unix utilities provided with the package.
They can be used both from the bash shell (provided) or from the
standard Windows command shell.

@section What versions of Windows are supported?

Wait a minute... Cygwin is only @emph{supported} if you are paying for
it, such as through a support contract with Red Hat.  For information
about getting a Red Hat support contract, see
@file{http://www.redhat.com/products/support/cygwin/}.

That said, Cygwin can be expected to run on all modern 32 bit versions of
Windows, except Windows CE.  This includes Windows 95/98/ME/NT/2000/XP.

Keep in mind that Cygwin can only do as much as the underlying OS
supports.  Because of this, Cygwin will behave differently, and
exhibit different limitations, on the various versions of Windows.

@section Where can I get it?

The main WWW page for the Cygwin project is
@file{http://cygwin.com/}.  There you should find
everything you need for Cygwin, including links for download and setup,
a current list of ftp mirror sites, a User's Guide, an API Reference,
mailing lists and archives, and additional ported software.

You can find documentation for the individual GNU tools at
@file{http://www.fsf.org/manual/}.  (You should read GNU manuals from a
local mirror.  Check @file{http://www.fsf.org/server/list-mirrors.html}
for a list of them.)


@section Is it free software?

Yes.  Parts are GNU software (gcc, gas, ld, etc...), parts are covered
by the standard X11 license, some of it is public domain, some of
it was written by Cygnus and placed under the GPL.  None of it is
shareware.  You don't have to pay anyone to use it but you should be
sure to read the copyright section of the FAQ more more information on
how the GNU General Public License may affect your use of these tools.

In particular, if you intend to port a proprietary (non-GPL'd)
application using Cygwin, you will need the proprietary-use license 
for the Cygwin library.  This is available for purchase; please
contact sales@@cygnus.com for more information.
All other questions should be sent to the project
mailing list cygwin@@cygwin.com.

Note that when we say "free" we mean freedom, not price.  The goal of
such freedom is that the people who use a given piece of software
should be able to change it to fit their needs, learn from it, share
it with their friends, etc.  The Cygwin license allows you those
freedoms, so it is free software.

The Cygwin 1.0 product was a "commercial" distribution of cygwin.  As
such, it included such non-software things as printed manuals, support,
and aggregation of useful utilities.  There was nothing (software-wise)
in there that you couldn't get off the net already, if you took the time
to find and download everything (and usually, build it yourself),
although the @emph{versions} available for download may have been
different than those distributed with the commercial product.  We tested
it all to make sure it worked together, and packaged it in a convenient
form.  We considered such testing and packaging to be a valuable service
and thus charged a fee for it.  Plus, it provided income for the cygwin
project so we could continue working on it.  However, Red Hat is no
longer offering Cygwin 1.0 on CD.  There are tentative plans to offer a
new Cygwin CD sometime in early 2001.  So far, however, there are no
definite plans.  The latest news about this can be found at
@file{http://cygwin.com/cygwin-cd.html}.


@section Recent history of the project: What version @emph{is} this, anyway?

Starting on April 17, 2000, the Cygwin team changed the procedure for
doing net releases.

Previously, net releases entailed downloading one or two large files
(called something like @code{FULL.EXE} or @code{USER.EXE}).  These files
unpacked a "Cygwin Distribution" to a static (and arcane) directory
structure.  This distribution contained lots of .exe, .a, .h, and other
files.

These distributions were named after the version of the Cygwin DLL which
they contained.  The last version released with this method was Cygwin
B20.1.

This distribution method has the advantage that everything was "all in
one place".  You could copy the huge FULL.EXE file around and know that
you were getting the complete "Cygwin Distribution".

The method had several disadvantages, however.  1) it was huge, 2) it
was hard to download in one error-free piece, and 3) it was hard to
update.

Why was it hard to update?  Because any change to any package in
FULL.EXE meant re-generating all of FULL.EXE.  This process was not easy
to automate since FULL.EXE was an InstallShield executable.  As a
result, until recently, Cygwin development was relatively static.

To rectify these problems, the Cygwin team decided, early in January
2000, to break up the packages in the release and make a small program
(@code{setup.exe}) available to use in downloading packages.  After much
development and internal discussion on the cygwin-developers mailing
list, the new, improved version of a Cygwin release was made available
on April 17, 2000.

This new release also had a new version of the Cygwin DLL -- 1.1.0.
Most of the other packages were updated and some packages from the
Cygwin CD were included.  Meanwhile, the Cygwin DLL continues to be
updated, and since release 1.3.1, is more generically referred to as
"1.3.x".

Users obtain this package by first downloading a version of
@code{setup.exe}.  This program started as a simple command line tool,
has metamorphosed into a GUI, and is in the process of continual
improvement.  However, its purpose is simple -- it is designed to
install packages from the cygwin web site at @file{http://cygwin.com/}.
In effect, it is a smaller, more intelligent replacement for FULL.EXE.
It does not require the downloading a huge executable but rather
downloads individual small packages.

Does this mean that the new net release of the Cygwin package is 1.3.x?
No.  We no longer label the releases with the Cygwin version number.
Each package in the cygwin release has its own version now.

Does this mean that Cygwin 1.3.x is newer than B20.1?  Yes!  The cygwin
1.3.x versions all represent continual improvement in the Cygwin DLL.
Although the 1.3.x code is still considered "beta quality", the Cygwin
team felt comfortable enough with the cygwin technology to bump the
version number to "1".

The other packages in the latest directory are also continually
improving, thanks to the efforts of net volunteers who maintain the
cygwin binary ports.  Each package has its own version numbers and its
own release process.

So, how do you get the most up-to-date version of cygwin?  Easy.  Just
download the setup.exe program from your closest mirror.  This program
will handle the task of updating the packages on your system to the
latest version.  The Cygwin team frequently updates and adds new
packages to the soureware web site.  The setup.exe program is the
easiest way to determine what you need on your system.

For some "ancient" history of the project (rather, just woefully out of
date), visit the Project History page at
@file{http://cygwin.com/history.html}.
