Hello,
Long time no see.
First, I am not back to computer chess, sorry about that. I just want to clarify a few things. Sorry if that's old but there is some misunderstanding I need to fix, and I found out only yesterday. Bear in mind that I am mostly unaware of what has happened for five years though.
First there was the Strelka case. Dann approached me with some "Strelka" source code for me to check. I had never heard of it. I assumed it was some closed-source free engine and that people wanted to know whether it was based on the Fruit source code.
The short answer was "no", it was not a verbatim copy of the source code. All the code had been typed (can't say "designed" though, see below) by an individual. So legally there was no issue that I knew of. It was however a whole re-write (copy with different words if you like, similar to a translation) of the algorithms. Not just an extraction of a couple of ideas as is common, and normal.
That being said, some original changes and ideas were also included in the program. So it was, as has since been stated many times in fora I suppose, a bitboard re-write of Fruit with some personal (or otherwise) ideas. Also note that the source code Dann sent me might not be the from the 2.0 version.
Edit: I've just had a look at the 2.0 sources. On top of what I said above, there are many constant and function names that are identical to Fruit's. I remember noticing it back then as well.
Hope it helps, because my email answer to Dann was unusually short and cryptic even by my standards. And Dann, please next time make it clear when you want a public statement instead of a private opinion, thanks.
I want to point out something immediately: there was no mention of Rybka whatsoever. Indeed I was unaware of any relation between Strelka and Rybka, this is precisely what I learned only yesterday. I insist because it seems I have often been quoted about "not caring" about the (possible) Fruit/Rybka relationship, but this is not so. Strelka did not look like a problem because I assumed it was free.
Next, I was approached by Ryan (I think) and Christophe Theron about whether I could help with some "possible Fruit code inside Rybka" issues. I answered "yes, but how?", but did not get a reply. This did not make me really aware of a clone possibility however because I thought they were talking about some insignificant UCI-handling code or whatnot. Also this was several years after the initial Rybka release, and I guess quite a few people had a close look at it. Apparently Chrilly did?
Now if someone could tell me a bit more about the major events last five years and the current state of affairs, I'd be much obliged.
A few things I noticed yesterday, can you confirm?
- Rybka search info was obfuscated in some way (like displaying depth-3 or something), any pointers on details please?
- Vasik claimed that Strelka 2.0 is a clone of Rybka 1.0 (and you know what that would imply!)
- Zach Wegner found many Fruit ideas (and nearly identical code) in Rybka 1.0; I think someone else did, too
- Some even stronger open-source program appeared as a decompilation of Rybka (with own ideas, sounds familiar), what came up of looking at those?
Any questions, now is the one time to ask.
Thanks for your attention,
Fabien Letouzey.
Fabien's open letter to the community
Fabien's open letter to the community
My good friend Fabien Letouzey, author of Fruit, asked me to post the following message for him:
- Ted Summers
- Posts: 148
- Joined: Thu Jun 10, 2010 12:49 am
- Real Name: Ted Summers
- Location: Marietta, GA (USA)
- Contact:
Re: Fabien's open letter to the community
Thank You Tord!
"Good decisions come from experience, and experience comes from bad decisions."
Re: Fabien's open letter to the community
Yeah, some of my colleagues do the same -- this can be annoying.And Dann, please next time make it clear when you want a public statement instead of a private opinion, thanks.
Rybka 1.0 Beta does depth-2. Later versions use depth-3. The node counting is a different matter. Fadden's UCI parsing disassembly contains already the genesis of this.A few things I noticed yesterday, can you confirm?
- Rybka search info was obfuscated in some way (like displaying depth-3 or something), any pointers on details please?
This is true, I will get the link.- Vasik claimed that Strelka 2.0 is a clone of Rybka 1.0 (and you know what that would imply!)
Rick Fadden is the other main person behind disassembly efforts (I think he has disappeared from computer chess). I tried to collate their principal findings (some of which are perhaps of lesser relevance to FL) at: Brief Q&A about Rybka 1.0 Beta and Fruit 2.1, while Zach's page handles the eval similarities.- Zach Wegner found many Fruit ideas (and nearly identical code) in Rybka 1.0; I think someone else did, too
Not sure what the question is regarding as to "came up of looking at those?" Many engines gained a lot of Elo... I think my analysis of R3/IPPOLIT is still considered the most thorough, while Houdini/IPPOLIT (or RobboLito) analyses are in a more nascent state (I am limited to 5 URLs, so don't link it).- Some even stronger open-source program appeared as a decompilation of Rybka (with own ideas, sounds familiar), what came up of looking at those?
Re: Fabien's open letter to the community
The whole Strelka/Rybka thread is: http://rybkaforum.net/cgi-bin/rybkaforu ... l?tid=3006
Here is the principal message from VR (emphasis added):
Here is the principal message from VR (emphasis added):
In the end, he realised that this release plan was infeasible (see the rest of that thread).I've taken a look this morning at the Strelka 2.0 sources. The picture is quite clear.
Vast sections of these sources started their life as a decompiled Rybka 1.0. The traces of this are everywhere. The board representation is identical, and all sorts of absolutely unique Rybka code methods, bitboard tricks and even exact data tables are used throughout. Significant portions of the search and evaluation logic are not fully disassembled - the author has left in hardcoded constants and used generic names (such as "PawnStruScore0" & "PawnStruScore1", "PassedPawnValue0" through "PassedPawnValue7", etc) which show that he hasn't yet fully understood what is happening.
In some cases, these traces do also extend beyond the inner search and evaluation kernel. For instance, Rybka and Strelka are the only engines which I know about which don't report "seldepth" and "hashfull". Rybka's UCI strings are used throughout.
The author did at first make attempts to hide the Rybka origins, for example by masking the table values in earlier Strelka versions. He also made significant attempts to improve the program. The attempts at improvement are not very original, but they are everywhere. They include PV collection, null verification (and in fact changes to the null implementation itself), some endgame drawishness heuristics, a handful of new evaluation term, a new approach to blending between opening and endgame eval terms, and so on. They also do include various structural changes, such as knight underpromotions, on-the-fly calculations of many tables, the setting of piece-square table values, etc. These changes are extensive and no doubt lead to differences in playing style and perhaps a useful engine for users to have, but they do not change the illegality of the code base.
In light of the above, I am claiming Strelka 2.0 as my own and will release it in the next few days under my own name. The name of the author with the pen name "Osipov" will be included if he comes forward with hiw own real name, otherwise an anonymous contribution will be noted. The contributions of Igor Korshunov will also be confirmed and noted if appropriate. All usage permissions will be granted with this release.
I do not see obvious signs of other code usage, but perhaps this deserves a closer look. Some of the transplanted ideas, such as the null verification search, are rather naive implementations of the approach in Fruit/Toga, although my first impression is that that code itself is original. The Winboard parser from Beowolf which was added to Strelka 1.0 seems to have been completely removed. If someone else does find other signs of code theft, please get in touch with me and I will give proper credit in the upcoming release.
If someone has suggestions about an appropriate license, and in particular the pros and cons of the GPL for a chess engine and for this unusual scenario, or if someone would be willing to help in preparing this code and license for release, please also get in touch with me.
As this code is two years and several hundred Elo old, I am not going to launch any major action. However, 'Osipov' has already threatened to repeat the procedure with Rybka 2.3.2a. (He did this after I declined to grant him rights to commercialize Strelka.) If this situation does repeat with a newer Rybka version, I will not just stand and watch any more. In the meantime, if someone has information about 'Osipov', please get in touch with me.
- thorstenczub
- Posts: 593
- Joined: Wed Jun 09, 2010 12:51 pm
- Real Name: Thorsten Czub
- Location: United States of Europe, germany, NRW, Lünen
- Contact:
Re: Fabien's open letter to the community
if strelka is fruit (says fabian), and strelka is rybka (says vas rajlich), isn't this saying that rybka is fruit ?
- Ted Summers
- Posts: 148
- Joined: Thu Jun 10, 2010 12:49 am
- Real Name: Ted Summers
- Location: Marietta, GA (USA)
- Contact:
Re: Fabien's open letter to the community
+1thorstenczub wrote:if strelka is fruit (says fabian), and strelka is rybka (says vas rajlich), isn't this saying that rybka is fruit ?
"Good decisions come from experience, and experience comes from bad decisions."
-
- Site Admin
- Posts: 1226
- Joined: Wed Jun 09, 2010 7:49 am
- Real Name: Jeremy Bernstein
- Location: Berlin, Germany
- Contact:
Re: Fabien's open letter to the community
This is huge. I'm looking forward to the reaction from Vas, but don't expect that he'll dignify it with a response. He can only lose, whatever he says. Thanks for posting it, Tord.Tord wrote:My good friend Fabien Letouzey, author of Fruit, asked me to post the following message for him:
Jeremy
Re: Fabien's open letter to the community
Well, if you want my take on the whole lot: "It is a tale told by an idiot, full of sound and fury, signifying nothing."
Re: Fabien's open letter to the community
Thanks, Tord, for this post.
And also thanks to Fabien for his definitive and undubious clarification.
And also thanks to Fabien for his definitive and undubious clarification.
- kingliveson
- Posts: 1388
- Joined: Thu Jun 10, 2010 1:22 am
- Real Name: Franklin Titus
- Location: 28°32'1"N 81°22'33"W
Re: Fabien's open letter to the community
My only comment:
Code: Select all
#!/system/bin/sh
#
ruleOne()
{
echo Rybka is the strongest chess engine.
}
ruleTwo()
{
echo Rybka is not the strongest chess engine.
ruleThree;
}
ruleThree()
{
echo Any chess engine stronger than Rybka, must per force be a clone of Rybka.
ruleFour;
}
ruleFour()
{
echo Any clone of Rybka, is Rybka.
ruleOne;
}
#main
echo -n "Is Rybka the strongest chess engine? Enter y or n: "
read answer
if [ $answer == "y" ]; then
ruleOne;
else
ruleTwo;
fi
PAWN : Knight >> Bishop >> Rook >>Queen