Some comments on the 2nd gtp V2 draft:
[Textual] 1.6: reference implementation: s/considered as a/considered a/
[design,nitpicking] 2.8 Timing since, we have the possibility of "line numbers", I see no reason for the responses beiing sent back in the same order as the requests were received. There could be restriction on the order of *execution*, and maybe about the atomicy (sp?) of the responses.
2.13 private extensions. I like the xxx-yyy notation. Never liked hyphens, but I will in the future. :-) Of course, it could have been any character, like { . / : }
[standards,nitpicking] 3.2.1 int. I don't like the idea of calling an unsigned "int". It is possibly confusing. Suggestion: "number" It is not important.
3.2.1 string. Again, a small departure from standard nomenclature. In most definitions, a string is allowed to contain whitespace. Suggestion: "word".
3.2.1 move maybe "Resign" should be added as a valid move. (in a subsequent section "Pass" was omitted)
4.1 Handicap. (maybe not so important) 4.1.2 is too big, IMO. There is no need to place a limit the number of handicap stones from the protocol per se (compare: the komi value in 6.3.2). With this amount of stones, the distinction between HA[] and AB[] becomes vague, anyway. Standardising the placement of fixed handicap stones is a good thing.
4.2 Time Handling Seems solid and simple. (Maybe for symmetry a parameter "main stones" could be added.)
5.1 State variables. (Summarizing previous email discussion: I think the PL[] and MN[] are (invisible) aspects of the board state. PL should be made explicit, MN is less important.) Also, for setting up positions, there could be added a provision for one or more "forbidden" ko-locations to be kept in the board state.
I noticed the rulesystem-section has been removed. I rather liked this independent setting of tt-like rule elements. It looked clear and more workeable than a "package deal" Japanese/Chinese/Goe/Ing/Igs kind of approach (which involves more semantics). But, there is no hurry. Better wait for something good to come up, than including an ill-thought scheme.
6 Commands IMO, the core-set should be kept small. The timing commands should be moved to the tournament subset.
IMO, The regression subset is not needed (for general use) and should be consired an extension. Strictly speaking, loadsgf is not needed in the core set, but can be allowed there, because it is general enough. Every implementation will need some kind of file loading, eventually.
I don't see much need for renaming the V.1 "help" command into the ugly "list_commands". Semantics seem to have been tightened, but not changed.
Handicap handling looks adequate. To me, place_free_handicap <--> set_free_handicap is confusing. My proposal: rename place_free_handicap into gen_free_handicap, which seems more in line with genmove, too.
6.3.3 play/genmove "pass" and "resign" should both be valid moves for both the "play" and "genmove" commands
6.3.4 To facilitate automated playing, a command to report dead stones could be added. eg: "list_dead_stones B" (IMO this should belong to the "core" set. ) Facility for "force_remove_dead_stones vertex*" seems not necessairy.
final_xxxx, reg_genmove, showboard should be considered extensions, IMO. Maybe (instead of showboard) a command to query boardstate should be added. Every implementation will need one.
loadsgf introcuces a lot of implied semantics. The boardstate is changed heavily by sgfload. SGF will change the MN-, PL- , KOlocation state in the engine, which were designed to be hidden in this GTP-draft. Things are even worse for the RU[] property... The real problem here is that clear_board is not guaranteed to reset all state. The simplest way out: sgfload is an extension. A work-around: require clear_board to reset *all* boardstate, including hidden state.
Handicap See renaming proposal above.
8.2.11 [error] GMP uses a one-dimensional vertex coding scheme. 1 bit color + 9bits lineair addres, IIRC. [politics] Why mention IGS and not NNGS, KGS ? BTW, maybe IGS has a copyright on crippled protocols ... Just rename it protocol.Z and hide it somewhere on the internet! :-) :-)
8.3.1 Again; I liked the method in the previous draft: separate commands for scoring,korule,suicide, etc.
8.3.2 IMO these are extensions, since it is unlikely that others (than gnugo) will ever use them.
10 I sent this to my lawyer. That will keep him happy for a while ...
Enjoy your vacation, etc 15Jul2002,AvK