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.