[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Go software



>can you tell us a bit more about how the GNU chess project came into being,
>how it works in practice, and how to adapt the development methodology to
>Go? I am quite interested in getting some Go project going, but I think it
>is  an order of magnitude more complex in terms of volume of source code,
>coordination between contributors and so on.

Dr. Mueller,

Two GNU Chess papers are attached which will, perhaps, be helpful to 
the group's collective GO effort and your own understanding.

Summary: All it took with GNU Chess was one person volunteering 
         their entire source code to play a game of chess. At the point 
	  I did that, I realized I did not want to take care of a chess 
	  program's development so I actively solicited Mr. John Stanback 
	  to donate his stronger-playing code and he did. At that point, 
	  it was off and running. (And kudos to Dr. Robert Hyatt w/ Crafty and 
	  Dr. Jonathan Baxter w/ WimpKnight for their even more highly advanced 
	  algorithmic and learning approaches.)

There is no development methodology though. That is up to the individual 
author to maximize creativity. 
 
My original solicitation stands:

	Is there one GO program author (after Man Li and GNU Go v.1) who would
	like to donate his or her GO program code, knowing that it is stronger
	than the present GNU Go, to become the new GNU Go?

Yours in GNU,

Stuart Cracraft

                          GNU Chess
                      by Stuart Cracraft
		copyright 1987-1999 Stuart Cracraft


   GNU Chess is a communal chess program. Contributors donate their
time and effort in order to make it a stronger, better, sleeker program.
Contributions take many forms: interfaces to high-resolution displays,
opening book treatises, speedups of the underlying algorithms, additions
of extra heuristics. These contributions are then distributed to the
large user-base so that all may enjoy the fruits of our labor. The
original and continuing purpose of this project is to permanently end 
the rampant hoarding of computer chess software that has been the 
case for the past 20 years.

   Many people have contributed to GNU Chess. Their contributions have
improved the program from being a patzer (weak program) to being a
grandpatzer (decently strong program). In its growth since initial
release, GNU Chess has gone from approximately class D to strong
master strength. It beats the Fidelity Mach 3 (USCF 2265) rather
handily when run on a Sparc-1 (RISC). Since these types of RISC
chips are becoming fairly common, the age of "master chess
in your computer lab" is now a reality. From there, it will be a
short hop to master chess in your home with FSF software.

   GNU Chess's structure is a hybrid of the Shannon Type-A and
Type-B methods. It conducts a full-width search to a fixed-depth
and then continues with a quiescence search for many more ply.
This quiescence search helps the program find positions which
can be safely evaluated and which are not too turbulent. If
a terminal position is too turbulent, the evaluation will be
highly inaccurate. Additional searching by investigating series
of captures, checks, and other potentially imbalance-producing
moves is quite helpful.

  GNU Chess will sacrifice pieces in order to reach known winning
endings. Also, it uses a trade-down bonus to encourage the stronger
side to trade off certain types of pieces thus reaching a more
simplified and therefore ostensibly "clearer" position.

  GNU Chess has certain types of knowledge regarding easier endgames.
This allows it to play these endings somewhat better than might be
expected.

  GNU Chess has time heuristics that it uses to improve its handling 
of time-controls and hasten its making of "obvious" moves. It also
thinks on the opponent's time.
 
  GNU Chess is interfaced to the SUN Windows and X Windows
display protocols and can display its pieces in elaborate format,
similar to chess diagrams.

  GNU Chess has an opening book which consists of many variations
from MCO (Modern Chess Openings), and some from ECO.

  For comparison purposes, GNU Chess running on a VAX 8650 is
stronger than the famous Chess 4.5 running on a CDC 6400. On
a Sparc-1, GNU 1.55 (or later) is probably about 2350-2400
strength (USCF rating estimated).

  We wish to acknowledge the current contributions of the following
individuals: (in alphabetical order) Chua Kong Sian, Mike McGann, Tim
Mann, John Stanback and Richard Stallman.

  Contact information: The author may be reached by a variety of
methods. Via U.S. mail: Stuart Cracraft, P.O. Box 6752, Laguna
Niguel, CA 92607 USA. Via Email: cracraft@xxxxxxxxxxxxxxxxx The author may
also be contacted via the Free Software Foundation, Inc.  675
Massachusetts Ave.,Cambridge MA 02139.




                 GNU Chess: Experiences Learned
                      with Communal Sharing
                       by Stuart Cracraft
		     copyright(c) 1990-1999


Limited sharing has characterized the  computer  chess  community
for the past two decades. Occasional research articles give hints
and suggestions for useful features, but rarely reveal  the  real
details  of  the  critically  important  advances.  We  will here
describe an effort underway (titled "GNU Chess") to create a more
open and friendly environment of sharing.

GNU Chess is part of Project GNU, a large-scale effort  in  which
the philosophical goals are far-reaching. We will not go into any
great depth about these goals as they relate to the  larger  pro-
ject, because these are described elsewhere [1]. However, we will
mention the basic issues and the changes we hope to encourage.

The start of the GNU Chess project was a natural  result  of  the
experiences  gleaned in writing a chess program. While the author
was at a progressive academic location [2], he was able  to  con-
ceive the idea of a communal chess program only after much heart-
ache.  During the period of writing the initial  version  (which
has  since  undergone  many improvements and whole revisions), it
became clear that the best features and most  useful  hints,  the
very best of the heuristics, were hidden and difficult to find in
the literature.

Sprinkled across many books, research papers, magazine  articles,
accumulated in the community, during the past 25 years, there was
literally a void of true,  empirical  programs.  Locating  usable
programs was difficult. Many programs were the result of academic
work in "ivory towers", and hence were inaccessible to the common
man. Other programs were sequestered in research think-tanks. Na-
turally, developers  of  commercial  programs  carefully  guarded
their  source  in order to protect their investment. On the other
hand, a few chess program source listings had actually been  pub-
lished, but these were not really very strong, often written in a
non-general language, and frequently more pedantic  than  practi-
cal.

The idea of a  reasonably  strong  communal  program  solidified.
When  we  refer  to  a communal program, we do not regard this as
public-domain software. Rather, we refer to a  program  which  is
under  the shared authority of a number of individuals, the prin-
cipal contributors.  These individuals have experienced and real-
ized  the  positive  results of a sharing community and the rapid
improvements that come through contributing in such a  community.
Further, these individuals devote time and energy to coordinating
the contributions of other individuals.  While  they  exercise  a
certain editorial right, this is usually not exercised arbitrari-
ly; instead, a discussion is often undertaken.

Eventually, a working C program that played chess was  available.
The  coordinating  institution  for Project GNU, accepted our
suggestion of inclusion of a chess program in the  GNU  distribu-
tion.  Initial  distribution of GNU Chess commenced in October of
1986. Interest in the project increased rapidly.

Contributions came in from many places and people. Interfaces  to
X-windows  and SUN-windows were donated, thus allowing very fancy
chess fonts on bit-mapped screens. Also, contributions  involving
large  portions  of  opening books such as MCO and collections of
master games  were  added  to  the  distribution.   Additionally,
tree-search modifications and heuristics were provided, and occa-
sionally even entire rewrites.

The program advanced in strength by several USCF class  intervals
during  a  period  of  less than one year. During this time, many
unusual features and enhancements were added to the program, usu-
ally under the coordination of two or more people, with one work-
ing in a distant-advisory capacity to the other. Frequently, gra-
duate  students  would give up significant time from their thesis
work to devote energy to contributing. Their  corporate  counter-
parts would often give up project time to make their donation.

Contributors would often enter the project in a very forceful way
and  then  having made their contribution, learn the viability of
communal sharing once others had stepped in  and  contributed  to
them, thus providing considerable reinforcement. Frequently, con-
tributors would then go into "hibernation" for a long  period  of
time,  but  most  of  them remained open to contributing and were
helpful when asked to reprogram their particular contribution  in
a more recent version.

GNU Chess has made great strides in relatively little  time.   It
has  run  on  many  different hardware architectures and has been
compiled by a number of C compilers. A sampling of  the  com-
puters  on  which  the  program  has  run is: National 32032, Vax
11/750, 8550, 8600, 8650, Motorola  68020,  CCI  5/32,  CCI  6/32
(tahoe), Cray XMP, SUN Sparc-1.

It is our belief that GNU Chess will stimulate graduate  research
in computer chess theory and practice.  When students are able to
easily obtain a state-of-the-art program in  order  to  test  out
their  ideas, they will no longer need to reinvent the wheel. The
students will be able to investigate their  research  areas  much
more thoroughly, because they will spend more time on the specif-
ic research areas they are concerned about.  Basically, GNU Chess
"frees up" time in order to get on to more fundamental issues.

We also feel that as other researchers  gain  trust  in  the  GNU
Chess  project, they will be more likely to release their results
directly and rapidly, through journal articles,  or  directly  to
the  GNU  project,  and  in fact become contributors and join the
present list. At the very  least,  a  communal,  ever-growing
program will encourage the few "closeted" researchers to be some-
what more open in their approach to disseminating advances.

In whatever form it takes, the  progress  toward  elaboration  of
machine  chess  is  ongoing,  and  we hope that GNU chess will be
helpful to the community. Copies of GNU Chess source and  "book",
as  well  as  additional experimental code are available from the
Free Software Foundation [3] or the author [6].


[1] The GNU Manifesto, Richard Stallman, Free Software Foundation, Inc.

[2] University of Southern California, Information Sciences Institute.

[3] Free Software Foundation, Inc. 675 Massachusetts Ave.,
    Cambridge MA 02139.

[4] Stuart Cracraft, P.O. Box 6752, Laguna Niguel, CA 92607 USA
    cracraft@xxxxxxxxxxxxxxxxx