Dan wrote:
In order for the client to regenerate the position it has to choose an order to replace the stones on the board, and if there is a ko on the board it has to be careful that this order leaves the ko in the right state. Better just to have undo available.
There is one natural order and that is to replay the moves in the same order as they have already been given, which happens to be equivalent to the proposed implementation of undo in GNU Go.
I think undo is simple enough to implement that it is not a big imposition on programmers to make it part of the protocol. So I agree with Don.
I would say that undo is a much more complex command than the rest of the commands in the discussed minimal set. I'd like to hear what authors of other programs think about the difficulties with implementing it for their programs.
Did you look at my undo patch? Does it seem OK?
It may be ok but it doesn't work well with handicap stones or loadsgf. My opinion is that the move stack should go into the board code in GNU Go.
Pierce wrote:
If you have a tournament where a human is part of the loop (perhaps a professional is playing all of the programs or something) then undo is a requirement. Humans make mistakes. SGF allows I, but go boards traditionally don't use I, stuff like that.
When I was speaking about tournament-kind of situations I meant exclusively computers vs computers. Anything involving a human I would categorize as GUI stuff, and there undo is indeed more important.
I even suspect without a human, communication problems, line noise, etc. would make undo a requirement.
GTP is assumed to work over an error-free channel. Line noise should be dealt with by lower-level protocols. The only important communication problem that can be anticipated is lost connections and then undo is not interesting but the ability of the driving program to set up the position from scratch.
For comparison it may be worth noticing that tournaments today are played through GMP and although that protocol does include an undo command I doubt it's used in practice in tournaments. I would even be surprised if more than a couple of programs have implemented it (through GMP that is, they may very well have undo through other channels).
Phil wrote:
The protocol should be case sensitive. If not, it would be impossible, for example to load SGF file ("loadsfg GAME1.sfg") on a Unix system since the Unix file systems are case sensitive.
Thanks. I had actually came to exactly the same conclusion earlier but couldn't recall why when I wrote this.
/Gunnar