Finally we are talking! Thank you for saying it.mjlef wrote:"fancy word games"? I really hate this kind of rhetoric. I was quite clear. Yes Vasik copied Fruit.
It's not about "too much", it's about the assumption and accusation Rybka started its life by copying Fruit. None can proof it, not even Zach and MarkW by their own words, only make it plausible. And many programmers fell for it. Here is another plausible scenario, what actually happened IMO.
1. In 2003 Vasik gets interested in computer chess, he later makes arrogant statements like "I will be the number one" and "I started chess programming to become a commercial".
2. He reads everything what's available and makes notes. I can only offer some screen shots of a 10Mb documentation file he mailed me around November 2011, I am bound to confidentiality and there is Rybka 2 and 3 stuff also in it.
http://www.top-5000.nl/notes.gif
http://www.top-5000.nl/notes2.jpg
http://www.top-5000.nl/notes3.jpg
3. He starts experimenting with the Crafty source code and produces several misnomers called Rybka 1.4, 1.5 and 1.61 which he enters in 2 tournaments in breach with the Crafty license. He got caught 7 years later because someone (Olivier Deville) sends the 3 private pre-Rybka's including the mail correspondence to the ICGA investigators. From the mail correspondence one is important, Olivier Deville asking for a new Rybka version, note the dates.
----- Original Message -----
From: Vasik Rajlich
To: 'Olivier Deville'
Sent: Thursday, November 25, 2004 1:47 PM
Subject: RE: Rybka - new version ?
Hi Olivier,
I am afraid I won’t be ready with my newest version. (It’s really incredible how time flies.)
Attached is the latest version of my program which can play, 1.6.1. It’s around 6 months old. It is up to you if you enter it in your tournament, or if you prefer that Rybka should wait for your next cycle in another six moths or so.
Best regards,
Vas
Since there are no in between versions after Rybka 1.6.1 and Vasik resets the number to Rybka 1.0 it's likely to assume Vas closed his experiments with the Crafty source code and started with his own bit-board engine, definitely inspired by Crafty. By his own words he said, "in 2003 I already had my own bit-board engine". Whether he said that in private or public I don't remember. Perhaps he is one year wrong here (or I am) and 2004 is the correct year. The email suggests he started with Rybka 1.0 around May 2004 about the same time Fabien released Fruit 1.0. That makes about 1.5 year to complete Rybka 1.0 as we know it. This scenario is much more likely than the narrow 5.5 months Fruit 2.1 time line. Fruit 2.1 (June 2005), Rybka 1.0 (December 2005).
4. All in all I don't believe he copied but imported idea's he learned from Fruit. My list of Fruit traces:
4a. It's likely to assume Vasik ported the Fruit PST initialization code to C# to create the Rybka PST's. In email he said to me:
Vasik Rajlich: The piece-square table C# code - unfortunately I have only the code which creates my piece-square tables today. The piece-square tables are similar but not exactly the same as the Rybka 1 piece-square tables. Also, I definitely have tinkered with the C# code in the last six years. For example now I use .NET reflection, which AFAIK was not even around in 2005. So, it won't be exact. Plus, I'll probably want to delete a few things. Is this really worth doing? It's hard for me to see this as a major issue. (December, 2011)
Vasik Rajlich: During my tuning I used ints, but much finer than pawn=3200. I needed to be able to "perturb" each eval weight minimally and calculate the delta for the fit between eval scores and game results. This is the "gradient" part of gradient descent. (December 2011)
4b. The use of "setjmp" to unwind the recursive search. He said he took the idea from Fruit.
4c. The call to search from UCI. It's code is almost identical.
4d. It's likely to assume Vasik modelled Rybka's EVAL to Fruit's. There are signs for that, there is also enough signs of the contrary. The truth is probably somewhere in the middle.
=======
4a is about 0-5 elo where a 5 elo gain is a lot. If you already have reasonable PST values there is about zero gain in trying to find optimal values. A waste of time IMO.
4b and 4c are about 0 elo both, just a programmers convenience.
The big question is of course 4d and how many elo points it is worth. And indeed his 20 elo statement looks stupid here. Nevertheless, I grew up with no internet, no open sources and got my chess knowledge from every instructive chess book I got my hands on and Rebel's EVAL heavily leans on that. So what exactly is the difference between:
Vasik - I went through the Fruit 2.1 source code forwards and backwards and took many things.
and:
Ed - I went through the Max Euwe books forwards and backwards and took many things.
Public knowledge is public knowledge, studying and using what you have learned is no crime and the late great Max Euwe if he were still alive could never sue me for making money from something he voluntarily released. And I am pretty sure Fabien borrowed loads idea's from others. I can see many of my idea's in Fruit. It's nonsense to accuse Fabien of a copyright breach.
5. Streka - is a mixture of Fruit and Rybka and both Fabien and Vas own the copyright of that. MarkW and Zach were keen enough to recognize this hence they started the painful process of reverse engineering the Rybka executable as they realized you can't draw serious conclusions from Strelka and trust the words of a proven hacker who wanted to commercialize it.