Initial commit of GNU Go v3.8.
[sgk-go] / doc / introduction.texi
This is GNU Go 3.8, a Go program. Development versions of GNU Go may be
found at @url{http://www.gnu.org/software/gnugo/devel.html}. Contact
us at @email{gnugo@@gnu.org} if you are interested in helping.
@menu
* About:: About GNU Go and this Manual
* Copyright:: Copyright
* Authors:: The Authors of GNU Go
* Thanks:: Acknowledgements
* Development:: Developing GNU Go
@end menu
@node About
@section About GNU Go and this Manual
The challenge of Computer Go is not to @strong{beat} the computer,
but to @strong{program} the computer.
In Computer Chess, strong programs are capable of playing at the highest
level, even challenging such a player as Garry Kasparov. No Go program
exists that plays at the same level as the strongest human players.
To be sure, existing Go programs are strong enough to be interesting
as opponents, and the hope exists that some day soon a truly
strong program can be written. This is especially true in view
of the successes of Monte Carlo methods, and a general recent
improvement of computer Go.
Before GNU Go, Go programs have always been distributed as binaries
only. The algorithms in these proprietary programs are secret. No-one
but the programmer can examine them to admire or criticise. As a
consequence, anyone who wished to work on a Go program usually had to
start from scratch. This may be one reason that Go programs have not
reached a higher level of play.
Unlike most Go programs, GNU Go is Free Software. Its algorithms and
source code are open and documented. They are free for any one to
inspect or enhance. We hope this freedom will give GNU Go's descendents
a certain competetive advantage.
Here is GNU Go's Manual. There are doubtless inaccuracies. The ultimate
documentation is in the commented source code itself.
The first three chapters of this manual are for the general
user. Chapter 3 is the User's Guide. The rest of the book is for
programmers, or persons curious about how GNU Go works. Chapter 4 is a
general overview of the engine. Chapter 5 introduces various tools for
looking into the GNU Go engine and finding out why it makes a certain
move, and Chapters 6--7 form a general programmer's reference to the GNU
Go API. The remaining chapters are more detailed explorations of
different aspects of GNU Go's internals.
@node Copyright
@section Copyrights
Copyright 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007
and 2008 by the Free Software Foundation except as noted below.
All source files are distributed under the GNU General Public License
(@pxref{GPL}, version 3 or any later version), except @file{gmp.c},
@file{gmp.h}, @file{gtp.c}, and @file{gtp.h}.
The files @file{gtp.c} and @file{gtp.h} are copyright the Free Software
Foundation. In the interests of promoting the Go Text Protocol these
two files are licensed under a less restrictive license than the GPL
and are free for unrestricted use (@pxref{GTP License}).
The two files @file{gmp.c} and @file{gmp.h} were placed in the public domain
by William Shubert, their author, and are free for unrestricted use.
Documentation files (including this manual) are distributed under
the GNU Free Documentation License (@pxref{GFDL}, version 1.3 or any later
version).
The files @file{regression/games/golois/*sgf} are copyright Tristan
Cazenave and are included with his permission.
The SGF files in @file{regression/games/handtalk/} are copyright Jessie Annala
and are used with permission.
The SGF files in @file{regression/games/mertin13x13/} are copyright Stefan
Mertin and are used with permission.
The remaining SGF files are either copyright by the FSF or are in the public domain.
@node Authors
@section Authors
GNU Go maintainers are Daniel Bump, Gunnar Farneback and Arend
Bayer. GNU Go authors (in chronological order of contribution)
are Man Li, Wayne Iba, Daniel Bump, David Denholm, Gunnar
Farneb@"ack, Nils Lohner, Jerome Dumonteil, Tommy Thorn,
Nicklas Ekstrand, Inge Wallin, Thomas Traber, Douglas Ridgway,
Teun Burgers, Tanguy Urvoy, Thien-Thi Nguyen, Heikki Levanto,
Mark Vytlacil, Adriaan van Kessel, Wolfgang Manner, Jens
Yllman, Don Dailey, M@aa{}ns Ullerstam, Arend Bayer, Trevor
Morris, Evan Berggren Daniel, Fernando Portela, Paul
Pogonyshev, S.P. Lee and Stephane Nicolet, Martin Holters,
Grzegorz Leszczynski and Lee Fisher.
@node Thanks
@section Thanks
We would like to thank Arthur Britto, David Doshay, Tim Hunt, Matthias Krings,
Piotr Lakomy, Paul Leonard, Jean-Louis Martineau, Andreas Roever and Pierce
Wetter for helpful correspondence.
Thanks to everyone who stepped on a bug (and sent us a report)!
Thanks to Gary Boos, Peter Gucwa, Martijn van der Kooij, Michael
Margolis, Trevor Morris, M@aa{}ns Ullerstam, Don Wagner and Yin Zheng for help
with Visual C++.
Thanks to Alan Crossman, Stephan Somogyi, Pierce Wetter and Mathias Wagner
for help with Macintosh. And thanks to Marco Scheurer and Shigeru Mabuchi for
helping us find various problems.
Thanks to Jessie Annala for the Handtalk games.
Special thanks to Ebba Berggren for creating our logo, based on a
design by Tanguy Urvoy and comments by Alan Crossman. The old
GNU Go logo was adapted from Jamal Hannah's typing GNU:
@url{http://www.gnu.org/graphics/atypinggnu.html}.
Both logos can be found in @file{doc/newlogo.*} and @file{doc/oldlogo.*}.
We would like to thank Stuart Cracraft, Richard Stallman and Man Lung Li for
their interest in making this program a part of GNU, William Shubert for
writing CGoban and gmp.c, Rene Grothmann for Jago and Erik van Riper and his
collaborators for NNGS.
@node Development
@section Development
You can help make GNU Go the best Go program.
This is a task-list for anyone who is interested in helping with GNU
Go. If you want to work on such a project you should correspond with
us until we reach a common vision of how the feature will work!
A note about copyright. The Free Software Foundation has the copyright
to GNU Go. For this reason, before any code can be accepted as a part of
the official release of GNU Go, the Free Software Foundation will want
you to sign a copyright assignment.
Of course you could work on a forked version without signing
such a disclaimer. You can also distribute such a forked version of the
program so long as you also distribute the source code to your
modifications under the GPL (@pxref{GPL}). But if you want
your changes to the program to be incorporated into the
version we distribute we need you to assign the copyright.
Please contact the GNU Go maintainers, Daniel Bump
(@email{bump@@sporadic.stanford.edu}) and Gunnar Farneb@"ack
(@email{gunnar@@lysator.liu.se}), to get more information and the
papers to sign.
Bug reports are very welcome, but if you can, send us bug FIXES as well as bug
reports. If you see some bad behavior, figure out what causes it, and what to
do about fixing it. And send us a patch! If you find an interesting bug and
cannot tell us how to fix it, we would be happy to have you tell us about it
anyway. Send us the sgf file (if possible) and attach other relevant
information, such as the GNU Go version number. In cases of assertion failures
and segmentation faults we probably want to know what operating system and
compiler you were using, in order to determine if the problem is platform
dependent.
If you want to work on GNU Go you should subscribe to the
@uref{http://lists.gnu.org/mailman/listinfo/gnugo-devel,
GNU Go development list.} Discussion of bugs and feedback
from established developers about new projects or tuning
the existing engine can be done on the list.