Rybka 1.0 vs. Strelka

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

Moderator: Ras

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 »

Sven Schüle wrote:
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
I figured it would be MSVC. I don't have a version of 2005 though. I use it for C# at work, and it's quite a pain, very buggy. The express edition of 2008 is much more usable, to say the least.

So I suppose I will leave this task to others who happen to have the 2005 version.
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 »

Sven Schüle wrote:Zach,

I think what you write here is only about using ideas but is not related to the GPL issue.
This is of course about ideas, but it is related to GPL issues. If something is different on a very low level, then it obviously can't come from the same code. But if there are similarities, then it's possible, in some cases very likely, that GPL code was used. Our work is not to prove that Rybka started as Fruit (which would be impossible), but mainly to try to determine how much similarity is there. Questions of how probable it is that Rybka is completely original are left to the reader (though many will say, very unlikely).
Another point: the disassembly that has been posted repeatedly refers to function names "start_go" and "start_search", beneath others. I can't find these names in Fruit 2.1 source but they exist in Strelka 2.0. As far as I understand this is a disassembly taken from Rybka 1.0 beta. So when assigning names to Rybka functions, obviously you have chosen some Strelka names, is this right? Now my question: why didn't you choose Fruit names, in order to simplify the comparison?
That is a fair point. Strelka is of course a monumental help in disassembling Rybka, as they are almost identical. I have been filling in what I see in Strelka in order to compare them, while looking at Fruit too. I mainly posted that disassembly because people were asking for evidence. Any more disassembly I post will be using Fruit names.
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:
bob wrote:
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.
Well, Bob's not taking the risk ..... anyone else?
What risk? If we solve our networking issues before someone volunteers, I'll be happy to link it right off my faculty home page here as I don't see any sort of risk whatsoever. My son suggested "freewebs" as another choice as they provide N megabytes of stuff free, although there are the ever-present "ads" that get popped up unless you disable popups.
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 »

kranium wrote:i have a server here with plenty of space/bandwidth left...
it's curently running only www.centaurchess.com and www.cyclonechess.com. we do have a power outage once in awhile, but the UPS will keep it running for an hour or so...

chris-
what do you mean Bob won't take the risk?
he stated he would host it, but the environment has problems...

that doesn't seem fair, i think you're spinning it...
I don't worry much about that sort of thing. We have been having problems for weeks. I ssh to the cluster, and before I can make 2 editing changes, the connection hangs. I ssh in again, and get nothing. The 3rd time connects, but hangs before I can type a single command. I can get to the AMD developer lab and other places just fine. It is a campus rather than CIS problem that is one of those things where when they are watching, all goes well. When they turn their backs, it goes to hell in a handbasket.

I just don't want to offer something that is so unreliable that it fails for its intended purpose. I suspect our ftp machine is getting hit by this whenever the problem is occurring, but I have not tried.
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:
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 ;-)
It would be unlikely. I still have the code, but that version never made it into the public as I could never get it to perform anywhere close to the normal PVS search I use. But Daily kept after me to try it and I did.
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:
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.
I totally disagree. What did Fabien study before he wrote 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:
bob wrote:
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.
I have seen lots of nearly identical null move codes.
I have seen lots of nearly identical pvs codes.
I have seen lots of nearly identical alpha-beta codes.

That is not surprising, since the algorithms are well defined. If I gave an assignment to write a quicksort routine, I would expect all of the routines to look very similar.
If all the students (for instance) went and looked at the Knuth TAOCP example in Mix and wrote a C version, would you be surprised to see that the codes were extremely similar? And would you think that the students were guilty of wrongdoing (especially if they gave credit to Knuth and cited the page number)?

Similarity of routines does *prove* one thing:
Vas has read and studied the Fruit code base *very carefully*.
But then again, he *said that* in the readme to Rybka 1.0 beta. So there is no revelation there.
It is not evidence of wrongdoing. There is nothing wrong with doing things the same way as someone else (and if you give them credit there is no plagiarism either). In fact, the only reason to do things differently is if the different way is better.
Now, there may have been wrongdoing. But I have not yet seen convincing evidence of it. From what I have seen so far, the only way to get proof of wrongdoing would be for Vas to admit it.
There is a world of difference between "looking very similar" and having dozens or hundreds of identical lines of code in multiple blocks. Please compare my PVS search to that of any other program. There will be hardly any duplicate lines, and no duplicate blocks of code, and for most programs, the structure will be completely different, yet all are doing about the same thing.
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:If we are just looking for a place to post facts and let people examine them and make their own opinions based on the facts, then I will post it on my web site.
That is the plan. It's not going to contain any rhetoric or anything, but just the evidence that we find.

Though to be fair, Norman did offer first in a PM. He is also willing to contribute his web skills (which look to be far better than mine!) to the layout of the page.
My web skills are about equal to the web skills of a box of hammers, but if somehow space is needed I will host any relevant evidence.
Ryan Benitez
Posts: 719
Joined: Thu Mar 09, 2006 1:21 am
Location: Portland Oregon

Re: Wanted: some opposition to the provided evidence

Post by Ryan Benitez »

Zach Wegner wrote:
Dann Corbit wrote:If we are just looking for a place to post facts and let people examine them and make their own opinions based on the facts, then I will post it on my web site.
That is the plan. It's not going to contain any rhetoric or anything, but just the evidence that we find.

Though to be fair, Norman did offer first in a PM. He is also willing to contribute his web skills (which look to be far better than mine!) to the layout of the page.
I think it would just be better to handle the case with the FSF and it can either be proven or it cant. A web site could just turn into a slander site seen as a way to drag someone down. Just my point of view, I am not taking sides on the issue.
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 »

bob wrote:
Dann Corbit wrote:
bob wrote:
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.
I have seen lots of nearly identical null move codes.
I have seen lots of nearly identical pvs codes.
I have seen lots of nearly identical alpha-beta codes.

That is not surprising, since the algorithms are well defined. If I gave an assignment to write a quicksort routine, I would expect all of the routines to look very similar.
If all the students (for instance) went and looked at the Knuth TAOCP example in Mix and wrote a C version, would you be surprised to see that the codes were extremely similar? And would you think that the students were guilty of wrongdoing (especially if they gave credit to Knuth and cited the page number)?

Similarity of routines does *prove* one thing:
Vas has read and studied the Fruit code base *very carefully*.
But then again, he *said that* in the readme to Rybka 1.0 beta. So there is no revelation there.
It is not evidence of wrongdoing. There is nothing wrong with doing things the same way as someone else (and if you give them credit there is no plagiarism either). In fact, the only reason to do things differently is if the different way is better.
Now, there may have been wrongdoing. But I have not yet seen convincing evidence of it. From what I have seen so far, the only way to get proof of wrongdoing would be for Vas to admit it.
There is a world of difference between "looking very similar" and having dozens or hundreds of identical lines of code in multiple blocks. Please compare my PVS search to that of any other program. There will be hardly any duplicate lines, and no duplicate blocks of code, and for most programs, the structure will be completely different, yet all are doing about the same thing.
As I see it, it boils down to this (concerning algorithms):
A). To read something, understand it, and write your own version is not wrong.
B). At least for GPL, to copy something and modify it is wrong unless your program is also open source.

Rybka is bitboard, so it will obviously have to be extensively modified to use the same fundamental ideas. To my way of thinking it is very hard to identify the difference between A) and B). Because lots of modifications would be needed for the new system even to work (due to the fundamental architecture change) the only way to know if Vas did something wrong would be for Vas to say "I did something wrong."

The whole thing smells like a witch hunt to me, from people who are having a hard time competing with Rybka. For decades new ideas have propagated freely in chess programming. Now a new program comes out that easily trounces all others and other chess programmers want the author's head on a pole. It is crystal clear that he uses lots of Fruit ideas (and even freely admits to it in his very first beta notice). That is not an indication of wrongdoing to me.

I do not say that Vas is innocent or guilty. I honestly do not know. But I think the people who claim clairvoyance on this are letting their emotions flavor their arguments.