Rybka 1.0 vs. Strelka

Discussion of anything and everything relating to chess playing software and machines.

Moderator: Ras

Dann Corbit
Posts: 12777
Joined: Wed Mar 08, 2006 8:57 pm
Location: Redmond, WA USA

Re: Wanted: some opposition to the provided evidence

Post by Dann Corbit »

Zach Wegner wrote:
Dann Corbit wrote:According to the evidence provided, I see two possibilities.
1. The Rybka author took Fruit code and modified it.
2. The Ryka author studied Fruit code and took the ideas in it.

Item 1 is illegal and item 2 is legal. There is obviously no way to differentiate which one was done. I assume that there are no patents on any of Fruit's algorithms. If this is the case, then it is not wrong, immoral or unethical to read the code, study the code, improve the code, rewrite the code, alter the code, etc. and then write your own version.

The code is not identical. The similar parts that have been demonstrated are all trivial anyway.
If you read the thread that I just posted ("Questions for Vas") and still believe that, then I would have to seriously question your expertise on the matter. How many engines do you know that store both an upper and lower bound in the hash table? How many do you know that use setjmp to exit the search function? How many do you know that store only the hashkeys for game history?

I'm not saying that it's impossible for any other engine to have these same ideas in them. But there are very many low level similarities (in non trivial areas), and only to Fruit.
Using the same techniques is not illegal, immoral or otherwise bad in any way. To read and understand what Fruit is doing and then do the same thing yourself is not wrong, even if you do it the same way.
Everyone who wrote a chess program borrowed ideas from other people. People who claim otherwise are liars. Either that or they do not use alpha-beta, null move pruning, hash tables, etc.

I think that the mud slinging contest is a silly farce.
Slingers: "LOOK HE COPIED!"
Of course, we *all* did. Let's be honest. Everyone who failed to learn from Fruit's code is an idiot.
Personally, I learned nothing. I really don't like Fruit's code at all. Feel free to say whatever you want about me...
I think you are a smart person, but if you do not read and understand the ideas in Fruit your engine will never be as strong as Fruit.
bob
Posts: 20943
Joined: Mon Feb 27, 2006 7:30 pm
Location: Birmingham, AL

Re: Wanted: some opposition to the provided evidence

Post by bob »

Dann Corbit wrote:
tiger wrote:Zach is showing code snippets where Rybka 1.0 is actually more similar to Fruit than Strelka 2.0.

A few days ago there was some vocal opposition to the idea that Rybka 1.0 coud be a derived work of Fruit 2.1.

Where is the opposition now?

There are several skilled people ready to explain why many programmers think (without daring to tell it) that Rybka started its life as Fruit 2.1.

The evidence is now being shown factually. Feel free to contradict it factually.



// Christophe
According to the evidence provided, I see two possibilities.
1. The Rybka author took Fruit code and modified it.
2. The Ryka author studied Fruit code and took the ideas in it.

Item 1 is illegal and item 2 is legal. There is obviously no way to differentiate which one was done. I assume that there are no patents on any of Fruit's algorithms. If this is the case, then it is not wrong, immoral or unethical to read the code, study the code, improve the code, rewrite the code, alter the code, etc. and then write your own version.

The code is not identical. The similar parts that have been demonstrated are all trivial anyway.

Everyone who wrote a chess program borrowed ideas from other people. People who claim otherwise are liars. Either that or they do not use alpha-beta, null move pruning, hash tables, etc.

I think that the mud slinging contest is a silly farce.
Slingers: "LOOK HE COPIED!"
Of course, we *all* did. Let's be honest. Everyone who failed to learn from Fruit's code is an idiot.
The only salient question is *how* Vas copied (e.g. learning ideas or copying code is not provable unless the code is identical and the code is not identical even in its most similar parts).
Mechanical estimates of how much code is similar are very unimpressive to me, especially when you consider that strcpy, printf, etc are going to be embedded in most programs.
I've said this several times, but once more won't hurt. I can explain a specific algorithm to students, and tell them to go write the code, and no two will look similar, unless something bad is going on. The programming language is too rich in features. It would be tantamount to telling a group to go write a story about a boy in the old west and his dog, the dog gets bit by a rabies carrying animal and eventually the boy has to shoot him." And then getting two stories back that match "old yeller" word for word. Even the stories would not be identical, much less the sentence and paragraph structures.
bob
Posts: 20943
Joined: Mon Feb 27, 2006 7:30 pm
Location: Birmingham, AL

Re: Wanted: some opposition to the provided evidence

Post by bob »

chrisw wrote:
Zach Wegner wrote:
Dann Corbit wrote:According to the evidence provided, I see two possibilities.
1. The Rybka author took Fruit code and modified it.
2. The Ryka author studied Fruit code and took the ideas in it.

Item 1 is illegal and item 2 is legal. There is obviously no way to differentiate which one was done. I assume that there are no patents on any of Fruit's algorithms. If this is the case, then it is not wrong, immoral or unethical to read the code, study the code, improve the code, rewrite the code, alter the code, etc. and then write your own version.

The code is not identical. The similar parts that have been demonstrated are all trivial anyway.
If you read the thread that I just posted ("Questions for Vas") and still believe that, then I would have to seriously question your expertise on the matter. How many engines do you know that store both an upper and lower bound in the hash table? How many do you know that use setjmp to exit the search function? How many do you know that store only the hashkeys for game history?

I'm not saying that it's impossible for any other engine to have these same ideas in them. But there are very many low level similarities (in non trivial areas), and only to Fruit.
Everyone who wrote a chess program borrowed ideas from other people. People who claim otherwise are liars. Either that or they do not use alpha-beta, null move pruning, hash tables, etc.

I think that the mud slinging contest is a silly farce.
Slingers: "LOOK HE COPIED!"
Of course, we *all* did. Let's be honest. Everyone who failed to learn from Fruit's code is an idiot.
Personally, I learned nothing. I really don't like Fruit's code at all. Feel free to say whatever you want about me...
It's a long time ago, but I think CSTal stored upper and lower bounds in hash
I did once, when I was playing with mtd(f). Otherwise it is just a waste of memory, where hash table entries are at a premium, normally.
bob
Posts: 20943
Joined: Mon Feb 27, 2006 7:30 pm
Location: Birmingham, AL

Re: Wanted: some opposition to the provided evidence

Post by bob »

chrisw wrote:
Zach Wegner wrote:
chrisw wrote:It's a long time ago, but I think CSTal stored upper and lower bounds in hash
Fruit is a CSTal clone!!

hehe sorry, couldn't resist.

There are some other engines that use the dual-bound hash (those with MTD(f)), but they are quite rare. I would guess that there are about 5 PVS engines that use it. And that's just one small point...
oh, I just save everything, it's my programming style
In mtd(f) the same position will fail low when your null-window is above the true score, and it will fail high if the null-window is below the true score. Since you are trying to first bound the true score, then narrow in on it precisely via iterating, storing both bounds is critical for best performance.

But in a normal alpha/beta search it is quite rare for a position to fail high, and then later fail low, and then later fail high again. And that is the case where you would want/need to hang on to both bounds.
chrisw

Re: Wanted: some opposition to the provided evidence

Post by chrisw »

bob wrote:
chrisw wrote:
Zach Wegner wrote:
Dann Corbit wrote:According to the evidence provided, I see two possibilities.
1. The Rybka author took Fruit code and modified it.
2. The Ryka author studied Fruit code and took the ideas in it.

Item 1 is illegal and item 2 is legal. There is obviously no way to differentiate which one was done. I assume that there are no patents on any of Fruit's algorithms. If this is the case, then it is not wrong, immoral or unethical to read the code, study the code, improve the code, rewrite the code, alter the code, etc. and then write your own version.

The code is not identical. The similar parts that have been demonstrated are all trivial anyway.
If you read the thread that I just posted ("Questions for Vas") and still believe that, then I would have to seriously question your expertise on the matter. How many engines do you know that store both an upper and lower bound in the hash table? How many do you know that use setjmp to exit the search function? How many do you know that store only the hashkeys for game history?

I'm not saying that it's impossible for any other engine to have these same ideas in them. But there are very many low level similarities (in non trivial areas), and only to Fruit.
Everyone who wrote a chess program borrowed ideas from other people. People who claim otherwise are liars. Either that or they do not use alpha-beta, null move pruning, hash tables, etc.

I think that the mud slinging contest is a silly farce.
Slingers: "LOOK HE COPIED!"
Of course, we *all* did. Let's be honest. Everyone who failed to learn from Fruit's code is an idiot.
Personally, I learned nothing. I really don't like Fruit's code at all. Feel free to say whatever you want about me...
It's a long time ago, but I think CSTal stored upper and lower bounds in hash
I did once, when I was playing with mtd(f). Otherwise it is just a waste of memory, where hash table entries are at a premium, normally.
That must have been the Crafty version I cloned CSTal from ;-)
Sven
Posts: 4052
Joined: Thu May 15, 2008 9:57 pm
Location: Berlin, Germany
Full name: Sven Schüle

Re: Wanted: some opposition to the provided evidence

Post by Sven »

Zach Wegner wrote:It might be worthwhile at some point to try to compile it with certain compilers and see if the instruction scheduling etc. match up with the binary, but I haven't done it yet.
Regarding different compilers, maybe it will be sufficient for you to concentrate on MSVC++ (probably 2005), as Rybka 1.0 beta seems to be compiled with it:

Code: Select all

.rdata:0041B6D8 aMicrosoftVisua db 'Microsoft Visual C++ Runtime Library',0
.rdata:0041B6D8                                         ; DATA XREF: sub_410B9A+157o
.rdata:0041B6FD                 align 10h
Sven
chrisw

Re: Wanted: some opposition to the provided evidence

Post by chrisw »

Zach Wegner wrote:
chrisw wrote:ok, no problem

it is important to make your case that everything is laid out in full detail

it's no good to post a Rybka disassembly and just state "Fruit is the same". People need to see the Fruit disassembly and then make their own judgement.

also, the other side need to see your full evidence in order to be able to make a refutation

Sorry to be so pedantic ;-)
That's fine. I haven't looked at the Fruit disassembly, only at the source. It might be worthwhile at some point to try to compile it with certain compilers and see if the instruction scheduling etc. match up with the binary, but I haven't done it yet.

I haven't posted all the evidence yet simply because the questions are mainly for Vas to refute. He's the one with the Rybka code, and everyone has access to the Fruit code. So he can basically answer "that's just a coincidence", "I was looking at Fruit when I wrote that", or "that's not true". For the last case I will post disassembly, otherwise I will wait to get it all organized into a webpage.

It's hard to show a comparison, because the huge block of assembly I posted are equivalent to about 20 lines of Fruit code. I will try to make a side-by-side with a line of Fruit next to 10 or so lines of assembly, but it might look crappy. Just warning you.
Whatever you do, it needs to be open to critical review. Forum is best place for that.

You saw what happened with your disassembly listing. Several who didn't understand it just accepted it as proof.

If you can get it past the forum, then it's good evidence. Your aim should be to silence forum criticism by the power of your argument and data.

Can you do that? We'll see ....
User avatar
Zach Wegner
Posts: 1922
Joined: Thu Mar 09, 2006 12:51 am
Location: Earth

Re: Wanted: some opposition to the provided evidence

Post by Zach Wegner »

chrisw wrote:Whatever you do, it needs to be open to critical review. Forum is best place for that.

You saw what happened with your disassembly listing. Several who didn't understand it just accepted it as proof.

If you can get it past the forum, then it's good evidence. Your aim should be to silence forum criticism by the power of your argument and data.

Can you do that? We'll see ....
Of course. Whenever the page is made, I will ask for criticism here and answer any questions, as well as update the page. The reason for having a webpage is to have one concise place to summarize all information and to have a more readable format (this forum really sucks for that).

I will add that I am interested in finding a good place to host it. I have a geocities page, but that's really a pain to use, and they have severe bandwidth limitations. So if anybody has some server space to donate, or knows of a better free host, let me know.
bob
Posts: 20943
Joined: Mon Feb 27, 2006 7:30 pm
Location: Birmingham, AL

Re: Wanted: some opposition to the provided evidence

Post by bob »

Zach Wegner wrote:
chrisw wrote:Whatever you do, it needs to be open to critical review. Forum is best place for that.

You saw what happened with your disassembly listing. Several who didn't understand it just accepted it as proof.

If you can get it past the forum, then it's good evidence. Your aim should be to silence forum criticism by the power of your argument and data.

Can you do that? We'll see ....
Of course. Whenever the page is made, I will ask for criticism here and answer any questions, as well as update the page. The reason for having a webpage is to have one concise place to summarize all information and to have a more readable format (this forum really sucks for that).

I will add that I am interested in finding a good place to host it. I have a geocities page, but that's really a pain to use, and they have severe bandwidth limitations. So if anybody has some server space to donate, or knows of a better free host, let me know.
I would normally be happy to stick it up here, but we have been having serious problems for weeks, to the point that I often find it impossible to establish a connection from my home without it hanging. People are complaining all over, but the cause is presently unknown (but probably some sort of virus issue on the windoze boxes that is producing incredibly network backlogs.
chrisw

Re: Wanted: some opposition to the provided evidence

Post by chrisw »

Zach Wegner wrote:
chrisw wrote:Whatever you do, it needs to be open to critical review. Forum is best place for that.

You saw what happened with your disassembly listing. Several who didn't understand it just accepted it as proof.

If you can get it past the forum, then it's good evidence. Your aim should be to silence forum criticism by the power of your argument and data.

Can you do that? We'll see ....
Of course. Whenever the page is made, I will ask for criticism here and answer any questions, as well as update the page. The reason for having a webpage is to have one concise place to summarize all information and to have a more readable format (this forum really sucks for that).

I will add that I am interested in finding a good place to host it. I have a geocities page, but that's really a pain to use, and they have severe bandwidth limitations. So if anybody has some server space to donate, or knows of a better free host, let me know.
Naturally you'll be signing a suitable indemnification contract with the host? Ask Bob, he's familiar with signing his life away apparently ;-)