History:
Chess 960 (aka. Fischer Random Chess) tries to solve the problem that, at high levels, competitive chess requires increasing amounts of memorization. However, many of the starting positions may feel unnatural to experienced chess players.
In an attempt to avoid this problem, the FairChess variant uses the same rules and starting position as ordinary chess, but randomly selects the first four moves (eight ply) from among a precalculated assortment of openings. While OEIS A048987 claims there are 84,998,978,956 legal chess positions after eight ply, the vast majority are unnatural. FairChess only includes openings which consist only of moves considered relatively good moves by a chess engine, and which result in positions judged by the engine not to advantage either side very much.
My hope is that this will allow for balanced games resembling ordinary chess games sufficiently to make experienced players comfortable, while decreasing the extent to which competitive play depends on memorizing opening books.
To generate the assortment of openings I wrote a python program which uses the python-chess library to invoke Stockfish 13 Chess Engine to build out a game tree. At each node of the tree, I branched to only the top five moves, eliminating any that were judged significantly worse than the best move (specifically, more than half a pawn worse according to Stockfish's evaluation). At each level of the tree I merged away transpositions (different ways to get to the same position). I kept only the 18,000 or so positions that the engine thought were close to fair, specifically giving neither white nor black an advantage Stockfish judged to be worth more than a tenth of a pawn.
The board is drawn with chessboard.js by Chris Oakman, used under the MIT licence.
The chess piece images are the work of Wikimedia Commons user Cburnett, taken from Category:PNG chess pieces and used here unmodified under the Creative Commons Attribution-ShareAlike 3.0 licence.