There is some controversy over the exact definition of what constitutes a Chess program. I am a proponent of the view that Chess is the act of moving pieces on a (real or virtual) Chess board, and that actions like resigning or negociating a draw are merely part of a general mechanism of organizing matches or tournaments, which are not part of Chess. So I do not consider quirks like programs that do nothing but printing a resign message, or the empty program that forfeits every game on time, Chess programs. A minimum requirement to qualify as such would be the ability to finish most games without resorting to tricks such as resigning or forfeiting (so upto checkmate or legal draw). I don't want to go as far as requiring that it could finish all games, because you have to allow for bugs. But it seems reasonable to require that they are able to finish more games than they resign / forfeit. This might seem quite liberal from the viewpoint of bugs, but has the advantage that programs that resign out of politeness in a badly lost position still fit the definition. The definition of a Chess program I employ thus becomes: A Chess program is a program that can finish more than 50% of the games it plays against an opponent that plays moves randomly chosen from the set of Chess moves that are legal from the current position according to the FIDE rules. Chess programs fitting this definition can further be subdivided into true-Chess programs and anti-Chess programs, depending on if they are able to score better or worse than 50% against the random mover in the games that they are able to finish.