------------------------------------------------------------------------- -- TODO ------------------------------------------------------------------------- Gnu Go Task List You can help make GNU GO the best Go program. This is a tasklist 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 you we reach a common vision of how the feature will work! If your revisions are extensive, the Free Software Foundation will want you to sign a copyright disclaimer before they can be part of the official release. Here is a list of things YOU could work on. Two of these tasks are marked TAKEN because someone has already started thinking about them. EVEN IF AN ITEM IS MARKED TAKEN, if you have an idea about how it should be done, write to the person who is working on it. They may want your help. //-------------------------------------------------------------- // long term issues //-------------------------------------------------------------- These issues are more strategic in nature, they will help the program play better or enhance certain aspects of it. 1. Convert documentation to texinfo. We can maintain the documentation but could use some help converting it. 2. 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 an sgf file.) 3. Tuning the pattern database. This is a sort of art. It is not necessary to do any programming to do this since many of the programs do not require helpers. We would like it if a few more Dan level players would learn this skill. 4. The reading code assumes that a string with four liberties is safe. Sometimes this leads to expanding a dead group into enemy territory, a simple waste. An improvement in strength would result from either increasing this to five liberties, or (better) giving heuristics based on moyo/escape route considerations. 5. Semeai module is vastly in need of improvement. In fact, semeai can probably be only analyzed by reading to discover what backfilling is needed before we can make atari. Also, semeai module should be able to change the status of dragons. 6. Figure out what we should do about ko fights. This may require a paradigm shift in the reading code---the routines in reading.c recognize the outcome of a read as alive or dead, but not ko. Maybe we'll get the type of reading that results in ko in the context of the limited alpha/beta search proposed under 8 below. At another level, GNU needs to understand how to go out an look for ko threats. 7. Instead of diag_miai_helper forcing a connection, have it set a connection goal for two dragons. Then search for a better way of connecting. Or, more simply, write patterns with a slightly higher value which make better connections. 8. One move lookahead (say for candidates valued > 80, which would include most moves intended to attack and defend strings) would prevent many errors. The worm, dragon, half eye and strategic distance data would have to be pushed and popped. 9. Item 10 is a first step towards alpha-beta pruning. Implement a reading mode in which a static evaluation function based on the territory estimation in moyo.c is very selectively evaluated at deeper nodes of the move tree. Even very selective deeper reading and alpha/beta pruning will allow Gnu Go to make more informed decisions than is currently possible. At least, Gnu Go should be able to evaluate as many variations as a shodan without too much time penalty. //-------------------------------------------------------------- // short term issues //-------------------------------------------------------------- - Some -m options are broke - Document -m levels in gnugo.6 - fix Bill Shubert's URL throughout (gnugo.6 and README) - fix nuri.net (gnugo.6 and README) - some modules don't call move_considered - revise TODO - revise docs/OVERVIEW - make every part of the program use the calls in interface - add capability for gnugo to talk to cgoban in more detail... sgfp - increase test suite - liberty.h needs to be broken into a public header and a private header. Though actually, if it is interface/ which is defining an engine's public interface, then stuff can be defined there instead of an engine-public header. - Looks like the help output is not nicely lined up : perhaps there's some tabs in there instead of spaces..? - Find a better way to pass movenum and boardsize to engine. Possibly collecting the game info into the structure, then passing this structure into the engine as part of its initialisation. (Perhaps this was Nils' original plan..?) - separate the public and internal prototypes into separate header files.