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.
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.
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.
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.
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
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:
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.
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.
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 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