This is release 20020411 of Wine, a free implementation of Windows on
Unix.  This is still a developers only release.  There are many bugs
and unimplemented features.  Most applications still do not work
correctly.

Patches should be submitted to "wine-patches@winehq.com".  Please don't
forget to include a ChangeLog entry.

WHAT'S NEW with Wine-20020411: (see ChangeLog for details)
	- Beginnings of an SMB client implementation.
	- New naming scheme and location for builtin dlls.
	- aRts sound driver.
	- A bunch of unit tests.
	- Much more complete setupapi implementation.
	- Some dll separation progress.
	- The usual common controls rewrites.
	- Much improved Microsoft Office support.
	- Lots of bug fixes.

See the README file in the distribution for installation instructions.

Because of lags created by using mirror, this message may reach you before
the release is available at the ftp sites.  The sources will be available
from the following locations:

  http://www.ibiblio.org/pub/Linux/ALPHA/wine/development/Wine-20020411.tar.gz
  ftp://ftp.infomagic.com/pub/mirrors/linux/sunsite/ALPHA/wine/development/Wine-20020411.tar.gz
  ftp://ftp.fu-berlin.de/unix/linux/mirrors/sunsite.unc.edu/ALPHA/wine/development/Wine-20020411.tar.gz
  ftp://orcus.progsoc.uts.edu.au/pub/Wine/development/Wine-20020411.tar.gz

It should also be available from any other site that mirrors ibiblio.org.
For more download locations, see http://ftpsearch.lycos.com. These
locations also hold pre-built documentation packages in various
formats: wine-doc-html.tar.gz, wine-doc-txt.tar.gz, wine-doc.pdf.gz
and wine-doc.ps.gz.

You can also get the current source directly from the CVS tree. Check
http://www.winehq.com/dev.shtml for details.

If you submitted a patch, please check to make sure it has been
included in the new release.

If you want to receive by mail a patch against the previous release
when a new one is released, you can subscribe to the mailing list at
http://tiger.informatik.hu-berlin.de/cgi-bin/mailman/listinfo/wine-patches.

Wine is available thanks to the work of many people. See the file
AUTHORS in the distribution for the complete list.

--
Alexandre Julliard
julliard@winehq.com
