This has been proposed for XBoard even before I was involved with it, and it was decided that it is a bad idea, for several reasons.Ferdy wrote:Would be great if an engine knows what gui it is run to too.
Something like after receiving the uciok from engine, the gui will
send,If the engine does not understand (for example) the commands the gui are sending, it can send an info string message to the gui and then quit by itself. In this case gui and engine hangs are avoided. With this possibility if the gui does not send ucinewgame command at appropriate time, and if that command is critical for the engine to function properly, it is better to design an engine that will quit than to wait for undefined behaviour to happen. The engine author will take note of the guiname and guiversion, so that future engine versions can react accordingly.Code: Select all
id guiname ZZZ id guiversion YYY
One is that it encourages forking of the protocol. GUI authors will feel themselves justified to keep non-compliant implementations, defending them by "but the engine should have known that in GUI XXX we do things this way", forcing engine authors to implement GUI recognition, and adapt the behavior of their engine to whatever GUI they happen to be running under.
I also thinks it sends the wrong signal. If an engine cannot handle absence of 'ucinewgame', the author had better spend his time making sure it can, rather than equipping the engine with a list of GUIs on which it can and cannot run, and printing an excuse for why it cannot. It is like 'solving' the problem that trains don't run in time or at all by starting an automated SMS service that informs people that "today there will be no trains". They will still not be able to get to work...
It is basically a method to make it easier for problems and bugs to be conserved and coexists, rather than to be solved and repaired.