Fat Fritz 2 is a chess engine recently published and sold by Chessbase. Release article. It uses the Stockfish binary, and replaces the NNUE in Stockfish with its own. Stockfish itself is licensed under GPL; the text on Stockfish's website is:

Stockfish is free, and distributed under the GNU General Public License Version 3 (GPLv3). Essentially, this means that you are free to do almost exactly what you want with the program, including distributing it among your friends, making it available for download from your web site, selling it (either by itself or as part of some bigger software package), or using it as the starting point for a software project of your own.

The only real limitation is that whenever you distribute Stockfish in some way, you must always include the full source code, or a pointer to where the source code can be found. If you make any changes to the source code, these changes must also be made available under the GPL.

Fat Fritz 2 uses Stockfish's binary, and the (small) modifications the author made to the binary is publicly available. However, its NNUE is closed source. Does Fat Fritz 2 violate Stockfish's license? Stockfish's developers certainly aren't happy with Fat Fritz 2, but I am wondering if they have a legal argument against Fat Fritz 2, or if the criticism is entirely on moral grounds.

If it is necessary for context: engines work by searching through the game tree and returning their so-called "eval function" on the end position. In other words, there are two crucial prongs of engine code:

  • search, which governs how the engine searches through the game tree (e.g., which moves it looks at first)
  • eval, which governs how the engine judges the final position of the search (e.g., the side that has more material is usually better)

Different engines usually have different search & eval code. In the case of Stockfish, its eval function is a neural network of a specific type ("NNUE"). Fat Fritz 2 uses Stockfish's search, but replaces Stockfish's NNUE with its own (definitely different) NNUE.

  • (as a programmer, not a lawyer) how does Stockfish communicate with NNUE? It's generally believed that there are ways for GPL programs to lawfully communicate with non-GPL programs. Are Stockfish and NNUE two separate downloads? Can their modified Stockfish work with engines other than NNUE? Can their NNUE plug into programs other than Stockfish? – user253751 2 days ago
  • @user253751 I'm not an expert, but as I understand it at each point of the search Stockfish will call the NNUE. In other words NNUE is effectively a more complicated eval function. Stockfish is bundled with its own NNUE. If you replace the NNUE with another NNUE, the modified Stockfish will work. Similarly, if you take the NNUE and give it to another chess binary like Ethereal, it will work (I believe it takes minor modifications to the binary). – Allure 2 days ago
  • Yeah, but did they design a standard interface where you can connect any engine with any eval function (and then use it to connect Stockfish to NNUE), or did they just "hard-wire" Stockfish to NNUE? – user253751 2 days ago
  • @user253751 I'm honestly not sure. I do know that Fat Fritz 2 comes with a GUI (at least Fat Fritz 1 did, see new.uschess.org/news/fat-fritz-fritz-17-review-i). I don't know if the GUI is capable of switching the active engine & eval function. – Allure 2 days ago

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.