You mean that this also could have been handled by sending a ping after the protover? But what if the engine in not supporting ping? That would mean you cannot send the ping immediately with the protover, but would have to wait with it until after receiving a ping=1 feature, which in itself might never come.bob wrote:I agree, but then "done=1"??
The real design flaw here is that in v2 ping is still optional. It would have been much better if v2 would not have been half-hearted about the introduction of some new commands, like ping and setboard, and declare them obligatory.
I guess the choice to not do this was motivated by the wish that many engines would quickly 'formally' convert to v2 by answering the protover command with "feature done=1" and nothing else, which would be a trivial change. Note that the introduction of v2 did hurt all v1 engines, by introducing an annoying waiting period after their startup, for features that were not going to come, until the GUI finally timed out, so there would be a real benefit even from such a formal conversion only. Making other changes mandatory to work as v2 might have discouraged engine authors to convert, although implementation of 'ping' seems sufficiently trivial that I don't really see that. (Setboard is of course another matter.) In that light it would be understandable that "feature done=1" was offered as a method for terminating the waiting for features that would work without ping support.