lichess.org

Stockfish vs ChessBase, Round 1

@NoJokeChess

On July 4th this year, after a lot of waiting, Stockfish and Chessbase finally got their first day in court. The battle between the two software makers began when ChessBase released a chess engine called “Fat Fritz 2” that was allegedly a repackaged version of Stockfish. This led to some significant recrimination, including on this very website. The case was of interest to free software advocates and chess players everywhere, so we sent a Lichess developer to the courtroom in Munich to witness events firsthand and report on them. We also spoke with ChessBase CEO Matthias Wüllenweber. (Full text of the interview)

The nature of this dispute can be difficult to explain to those that are not familiar with the Free Software design process. This process not only produced Stockfish and Lichess, but other popular software like VLC, Firefox, and the Linux OS that probably runs the servers of all your favorite websites.

Unlike proprietary software, the code from free software can be used free of charge in any other project, but you must fulfill other non-financial requirements of the license. In the case of the “GPLv3” license that Stockfish uses, that means you must inform users clearly that the software they are using is free software, and make the source code, with any modifications you’ve made, publicly available to use in the same way that the original is. In this case, neither the Fat Fritz 2 code nor the license text was  made available. 

Shortly after Fat Fritz 2 was released, the Stockfish team sent a cease and desist letter to ChessBase asking that they fulfill the requirements of their license for Fat Fritz 2, and, very importantly, also fulfill the license for any other ChessBase products that might contain Stockfish code. After receiving the letter, Chessbase released a new product “Fat Fritz 2 SE”, packaged with a copy of the GPLv3 license and a copy of the source code with what appears to be a different, and weaker, neural net. The code for the original Fat Fritz 2 has yet to be released.

ChessBase admits they violated the license, although by mistake, and only briefly. According to Wüllenweber: “With Stockfish we did not fulfill the GPLv3 requirements and frantically scrambled to fix this within days of the first publication. The fault that most annoyed me was that the original version somehow entangled the new neural network in a way with the engine that made it unusable in any other context. A clear violation. We fixed it immediately, but it was [in]correctly perceived as bad intention. Once in your life, you have this project where everything that can go wrong goes wrong.”

In addition to the missing legal requirements, ChessBase also did not give Stockfish much public recognition for their contribution either. The ChessBase homepage called Fat Fritz 2 “the new #1” engine.” Presumably, supplanting the now “inferior” Stockfish. Fat Fritz 2 creator Albert Silver did interviews where he discussed what it was like to “start almost completely from scratch.” These things caused significant resentment among the Stockfish team. According to Wüllenweber; “In the publication process of Fat Fritz 2, I made several mistakes. Consequently, the Stockfish authors are now quite angry at us, and I can fully understand this. The most serious error was to not describe the project to them beforehand. If they had objected, we would have canceled it. Another error was to do overzealous boasting about Fat Fritz on our web site. While we believed that the new neural net was original and valuable, this marketing downplayed Stockfish in an unacceptable manner. Those articles were naturally read and quoted widely, while nobody saw the official advertising and packaging which always said “Based on the open-source engine Stockfish” as the very first claim.

The back of the packaging of a physical copy of Fat Fritz 2

The Stockfish team was similarly unflattering in their communication about the issue. On the official Stockfish blog Joost VandeVondele wrote: “ChessBase’s communication on Fat Fritz 2, claiming originality where there is none, has shocked our community. Furthermore, the engine Fat Fritz 2 fails to convince on independent rating lists, casting doubt on the usefulness of those modifications. Indeed, we feel that customers buying Fat Fritz 2 get very little added value for money. Claims to the contrary appear misleading.

The cease and desist letter would not be the end of the legal wrangling. While some steps had been taken to bring Fat Fritz 2 into compliance, there was still a problem with another ChessBase product. “Houdini 6” is another older engine that ChessBase has been selling since 2017. What was claimed to be source code for Houdini, acquired by unclear methods, was posted anonymously on GitHub, and it bore a striking resemblance to Stockfish code. Six weeks after the first cease and desist letter, the Stockfish team prepared another for Houdini, and this one would carry a different demand that would become the key issue in the upcoming lawsuit; GPLv3 license termination.

Any license has to have some teeth; a specific penalty for not following its requirements. The GPLv3 wouldn’t be worth much if the only penalty for violating it was to shrug, apologize, and do the same thing again later. To this end, the second Stockfish cease and desist letter did not demand fulfillment of the license requirements for Houdini, it informed ChessBase that due to repeated violations, their license to use Stockfish code had been revoked and they must cease distributing any Stockfish derived software permanently. When ChessBase refused, the Stockfish team decided to enforce their license termination with a lawsuit.

We asked a Lichess dev to inspect the alleged Houdini code that the Stockfish team submitted to the German court and his opinion was clear. According to him: “It's not a complete 1-to-1 copy. He (Robert Houdart, The Houdini developer) added custom parts, and modified some parts, but large and significant parts of the code, definitely more than 1000 lines, are plainly and obviously the same as Stockfish code. It also contains 1-to-1 copied and very specific comments which in parts even reference Stockfish (e.g. "To compile stockfish…" in the Makefile) and Glaurung (the Stockfish predecessor)”

Nevertheless, Wüllenweber insists that there is something original in Houdini “A couple of weeks ago, I looked at the code samples demonstrated by the plaintiffs. I assume that from Stockfish’s viewpoint they provided the stuff that concerned them most. To me it seemed clear that both programs use the same ideas in those code snippets. Ideas of originality and value. To me it also seemed clear that Houdart expressed those ideas in his own words, where his implementation was sometimes quite efficient or at least different from the Stockfish sample.

A code comparison between Stockfish and alleged Houdini from the Stockfish team’s court submissions. They also included evidence that the compiled program behaves in practice like the commercially released Houdini binary.

A German civil court is a far more casual affair than you may expect, there are no soaring Hollywood speeches, or witnesses cracking under a shrewd lawyer’s interrogation. Instead, the two parties in a lawsuit meet with the judge in a quiet room to discuss the case. She asks questions to both parties, and after the meeting is over she will either make a ruling or request further evidence. Although the judge in this case made no formal ruling, she did clearly state her opinion on certain specific questions. It’s also possible to make highly educated guesses on her view of things from the lines of questioning she chooses and the subjects she finds the most relevant. According to our on-site reporter, the judge in this case is convinced that Houdini comes from Stockfish and explicitly put the responsibility to prove otherwise on ChessBase. She also seemed to agree that multiple license violations took place, and that revocation was not only valid in general, but a reasonable outcome in this particular case as well.

A German civil courtroom looks more like a classroom.

Her main concern seems to be the exact scope of any potential revocation. A German court ruling needs to be defined in a way that a bailiff can understand well enough to enforce, and with a Stockfish codebase that is constantly growing and changing this could be difficult to do. The Stockfish team seemed happy with the result of the first hearing. According to VandeVondele on the Stockfish Discord: “I think generally we're quite happy about how it went. The judge was very knowledgeable and understood our arguments and evidence pretty well. The burden of proof has been reversed for Houdini, and we understand that termination by few copyright holders is possible. The scope of termination is something that needs further work (which versions, which code, etc). The alternative would be to settle, with terms that we need to reflect on, and in particular also discuss with Tord. (Romstad, a Stockfish Developer)

German civil courts strongly encourage the parties to find a settlement, and the judge in this case was no exception. She spoke to both parties to push them in that direction. However, it seems that a settlement will not be easy to arrange. When asked why not simply agree to no longer sell Stockfish-derived software if he regrets doing it in the first place, Wüllenweber admitted that there was some bad blood on his side too: “Stockfish’s public reaction to Fat Fritz 2 was quite painful and hurt us. Maybe we deserved some punishment. However, now singling us out while competitors drive many monetization schemes based on Stockfish feels like something one should stand up to.”

The court will meet again on March 20th, 2023 unless a settlement is reached first. If a ruling is made there could be appeals afterwards. Altogether, this case could take years to resolve. Stay tuned to all the standard Lichess communication channels for updates on this case as it develops further.

Reconnecting