Bob Hyatt says that....

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

Moderator: Ras

User avatar
michiguel
Posts: 6401
Joined: Thu Mar 09, 2006 8:30 pm
Location: Chicago, Illinois, USA

Re: Bob Hyatt says that....

Post by michiguel »

bob wrote:Just for the record, not _all_ braces are forced.

if (a) {
xxx
}

can omit the braces quite nicely. Once again, this has to be taken in context.
For the record, you cannot see the presence or absence of optional curly brackets in the compiled code.

Miguel
trojanfoe

Re: Bob Hyatt says that....

Post by trojanfoe »

bob wrote:Of course, I suspect you are hung up on the syntactical issue again, where I am talking semantics.

So code might be interpreted as either

i++;
x = x[j] + n;

or

x[i++] = x[j] + n;


Errr... those aren't equivalent Bob.

Code: Select all

i++;
x[i] = x[j] + n;
and

Code: Select all

x[++i] = x[j] + n;
Would be equivalent.
trojanfoe

Re: Bob Hyatt says that....

Post by trojanfoe »

GenoM wrote:
Alexander Schmidt wrote:Chris, I guess I know what you are doing right now. You talked to Vas, asking about all this stuff here. He is a really nice guy and you believed him that he didn't do anything wrong.

I believed him too when I asked right after the Rybka 1.0 release.

I hope you will not get disapointed to much one day. I mean that honestly.
Yes, his POV is mainly based on personal feelings -- it seems that for him is most important to contradict with all Bob Hyatt is saying on the matter. And to challenge EVERY point Bob Hyatt made.

He (ChrisW) is ready to deny that 2+2=4 written by two different people is the same because it's wriiten with different handwritings.
Well 'handwriting' is one of the important points Bob is trying to make. A programmer's style is unique, not only in the names they give functions and variables, but how they decide to store, manpulate and represent data. Two programmers sitting next to each other in an office, which shares a coding standard and use of the same libraries and tools, etc., will produce different code when given the same objective. Usually programmer A won't like the code produced by programmer B (or maybe that's just me) - as the style and technique will be different to the way they would have done it.

This is similar to two 'lay' people being asked to write down a description of a shared experience - not only will they use different words and structure, but the handwriting will be distinct as well.
Dann Corbit
Posts: 12785
Joined: Wed Mar 08, 2006 8:57 pm
Location: Redmond, WA USA

Re: Bob Hyatt says that....

Post by Dann Corbit »

Mike S. wrote:
chrisw wrote: Obviously what went wrong was the pre-decision. To ask for source they need strong evidence already. Otherwise anybody can, in Stasi manner, wreck any competitors tournament for them.
That's what happened, and that explains my sometimes (too?) harsh wording against the ICGA. Of course, I cannot be 100% sure that List didn't contain any Crafty code, but from what was possible to read in public, I am almost sure that there was no strong evidence.

The extra funny thing about that matter is, that actually there WAS a clone participating in that tournament, as was found out later: (El) Chinito, a Crafty clone. The glorious ICGA disqualified List but not Chinito.

http://computer-chess.org/doku.php?id=c ... ngine_list

(you will notice that List or Loop is NOT in that list)
I was for quite some time a strong supporter of List not being a clone. Currently, I cannot say pro or con. At any rate, the query for source code against List was not without merit. Consider what was known at that time ...

List-460.exe {11/10/2001} embedded strings:
\List\460\A10\attacks.c
\List\460\A10\bench.c
\List\460\A10\captures.c
\List\460\A10\chessboard.c
\List\460\A10\hash.c
\List\460\A10\init.c
\List\460\A10\io.c
\List\460\A10\list.c
\List\460\A10\make.c
\List\460\A10\moves.c
\List\460\A10\next.c
\List\460\A10\opening.c
\List\460\A10\pawnhash.c
\List\460\A10\phase.c
\List\460\A10\ponder.c
\List\460\A10\recog.c
\List\460\A10\score.c
\List\460\A10\search.c
\List\460\A10\searchr.c
\List\460\A10\sort.c
\List\460\A10\test.c
\List\460\A10\timer.c
\List\460\A10\undo.c
\List\460\A10\utility.c

List-461.exe {11/3/2001} embedded strings:
F:\List\470\A8\attacks.c
F:\List\470\A8\bench.c
F:\List\470\A8\captures.c
F:\List\470\A8\chessboard.c
F:\List\470\A8\hash.c
F:\List\470\A8\init.c
F:\List\470\A8\io.c
F:\List\470\A8\list.c
F:\List\470\A8\make.c
F:\List\470\A8\moves.c
F:\List\470\A8\next.c
F:\List\470\A8\pawnhash.c
F:\List\470\A8\phase.c
F:\List\470\A8\ponder.c
F:\List\470\A8\recog.c
F:\List\470\A8\score.c
F:\List\470\A8\search.c
F:\List\470\A8\searchr.c
F:\List\470\A8\sort.c
F:\List\470\A8\test.c
F:\List\470\A8\timer.c
F:\List\470\A8\undo.c
F:\List\470\A8\utility.c

List501.dll {9/6/2002} embedded strings:
F:\List\Native\4\attacks.c
F:\List\Native\4\board.c
F:\List\Native\4\captures.c
F:\List\Native\4\hash.c
F:\List\Native\4\init.c
F:\List\Native\4\interface.c
F:\List\Native\4\list.c
F:\List\Native\4\make.c
F:\List\Native\4\moves.c
F:\List\Native\4\next.c
F:\List\Native\4\pawns.c
F:\List\Native\4\phase.c
F:\List\Native\4\recog.c
F:\List\Native\4\score.c
F:\List\Native\4\search.c
F:\List\Native\4\sort.c
F:\List\Native\4\speed.c
F:\List\Native\4\time.c
F:\List\Native\4\undo.c
F:\List\Native\4\utility.c

The following Crafty file names are exact matches:
attacks.c
hash.c
init.c
list.c
make.c
moves.c
next.c
phase.c
ponder.c
search.c
searchr.c
test.c
time.c
utility.c

Now, the naming similarities for a large number of List engine files could simply be coincidence. However, it seems enough (to me) for a request by a neutral board to examine the source code. The board that was assembled to consider the evidence was certainly trustworthy and did not contain commercial chess programmers. If information gained from this scrutiny were ever to be used to create a commercial chess engine, and it was demonstrated that the information used was innovation by Mr. Reul, then I think it would have been grounds for a really potent lawsuit.

I think the question is still unanswered:
Did List borrow from Crafty? Note that this question is perhaps more significant in the context of ICGA tournaments than the Rybka/Fruit question. That is because ICGA tournaments specifically do not allow derivative programs to compete {further, Rybka mentions the study of Fruit and List has no mention of the study of Crafty in his credits}. So even if List was a case of "study and then implement your own version", if the studied program was crafty that information being withheld could disqualify List from the tournament.

I will say that I examined some List code at one point and it was definitely not bitboard based, so List certainly was not simply a copy/paste/tweak engine. However, there is compelling evidence that at least invites the question "Did List borrow from Crafty?"

As for El-Chinito, the clone evidence simply had not been gathered at that time. Due to tips from interested parties, I did investigate El-Chinito and determined that it was (indeed) based on Crafty. I initiated conversations with Eugene {who I am convinced simply did not understand the incorrect nature of his actions when he performed them} but was not able to find any suitable resolution.
trojanfoe

Re: Bob Hyatt says that....

Post by trojanfoe »

michiguel wrote:
Alexander Schmidt wrote:
fern wrote: show us specific lines of code that are equal to those from fruit.
http://pagesperso-orange.fr/ct_chess/Fr ... rt_go.html
Is this all?

My goodness. I stayed away from this riot but I thought there was more about it.
I can see a similarity that is easily explained in this manner: Vas looked at the code and said, "I see a loop with strtok to parse UCI" and he implemented it that way. Of course, UCI is "universal" and both codes will converge towards those commands. Several lines are mixed, so it does not make any sense to copy and paste a code and later mix it up for no purpose. No reason to obfuscate this... it is easier to rewrite it from scratch!

I see zero proof of violation of GPL from this file.

Miguel
Why would Vas look at the code for a UCI parser? It's a pretty simple specification - I don't understand why he would need to see someone else's code. I recently implemented a UCI parser myself and never used strtok at all - but then it's my style not to use strtok much anyway. It's strange that Vas's style is to use strtok in the same way someone else has. Hmmmm.

There is more than zero proof here...
trojanfoe

Re: Bob Hyatt says that....

Post by trojanfoe »

michiguel wrote: The probabilities of two things being derivative of the same depends on the % of similarity *AND* the length. You give the example of a novel, which is very large (several thousands of words). That is a fallacy.
For instance, in biochemistry, If you have two protein sequences of 100 amino acids, 28% similarity is not enough to claim an evolutionary or structural relationship. With DNA, is even worse. If the length increases, you may need a lower % to claim it.
The properties of amino acids and DNA have nothing at all to do with this subject - they are irrelevant. There are plenty of things on the planet that contain 28% of another thing but could have statements made about them being unrelated.
michiguel wrote: If we both write a bubble sort routine, I am pretty sure that it will be very easy to find 28% of similar lines (particularly after compiling and disassembly!),.
Another poor example - what's a bubble sort - 6 lines of code as most?
michiguel wrote: It will be a different story if 28% is present in a whole program of 100000 lines.
Agreed.
Dann Corbit
Posts: 12785
Joined: Wed Mar 08, 2006 8:57 pm
Location: Redmond, WA USA

Re: Bob Hyatt says that....

Post by Dann Corbit »

trojanfoe wrote:
michiguel wrote:
Alexander Schmidt wrote:
fern wrote: show us specific lines of code that are equal to those from fruit.
http://pagesperso-orange.fr/ct_chess/Fr ... rt_go.html
Is this all?

My goodness. I stayed away from this riot but I thought there was more about it.
I can see a similarity that is easily explained in this manner: Vas looked at the code and said, "I see a loop with strtok to parse UCI" and he implemented it that way. Of course, UCI is "universal" and both codes will converge towards those commands. Several lines are mixed, so it does not make any sense to copy and paste a code and later mix it up for no purpose. No reason to obfuscate this... it is easier to rewrite it from scratch!

I see zero proof of violation of GPL from this file.

Miguel
Why would Vas look at the code for a UCI parser? It's a pretty simple specification - I don't understand why he would need to see someone else's code. I recently implemented a UCI parser myself and never used strtok at all - but then it's my style not to use strtok much anyway. It's strange that Vas's style is to use strtok in the same way someone else has. Hmmmm.

There is more than zero proof here...
Does it strike you as *wrong* that someone should look at someone else's open source code and learn from it?

If that is what chess programming has degenerated to, then it is no longer a worthwhile exercise.

I'll admit that I am a fossil. When I started programming in the mid 1970's, people used to invent algorithms and post them in the ACM. They actually *hoped* that people would learn from them and improve them.

So that is why the prevailing attitudes strike me as so very strange. I really don't understand it.

Now, let me back up a bit. I do not approve of breaking laws -- even laws that I think are wrong or stupid. But if someone is within the law and learns from publicly available information I think that they are heros and not villians.

IMO-YMMV.
trojanfoe

Re: Bob Hyatt says that....

Post by trojanfoe »

Dann Corbit wrote: Does it strike you as *wrong* that someone should look at someone else's open source code and learn from it?

If that is what chess programming has degenerated to, then it is no longer a worthwhile exercise.

I'll admit that I am a fossil. When I started programming in the mid 1970's, people used to invent algorithms and post them in the ACM. They actually *hoped* that people would learn from them and improve them.

So that is why the prevailing attitudes strike me as so very strange. I really don't understand it.

Now, let me back up a bit. I do not approve of breaking laws -- even laws that I think are wrong or stupid. But if someone is within the law and learns from publicly available information I think that they are heros and not villians.

IMO-YMMV.
No, it's not wrong at all. I look at code fragments from everywhere during my day-to-day job, and I also look at fragments of code from the chessprogramming wiki, and other places, for my hobby. The only difference is the way in which the fragments are published and the medium - I only look at code published on websites - I must admit I don't ever seek to see what license they are released under, assuming that if they have been formatted into HTML and made available to browse, they are free to use. All programmers use other programmer's code for specific problems - and always will do.

I guess in this case there's a suspicion that it's more than just fragments that have been used...
bob
Posts: 20943
Joined: Mon Feb 27, 2006 7:30 pm
Location: Birmingham, AL

Re: Bob Hyatt says that....

Post by bob »

michiguel wrote:
bob wrote:Just for the record, not _all_ braces are forced.

if (a) {
xxx
}

can omit the braces quite nicely. Once again, this has to be taken in context.
For the record, you cannot see the presence or absence of optional curly brackets in the compiled code.

Miguel
Of course not. But if I see these pieces of code:

if (a) x /= a;

or

if (a)
x /= a;

or

if (a)
{
x /= a;
}

or

if (a) {x = x / a;}

I can figure out that with just simple re-formatting, they are all _identical_.
Dann Corbit
Posts: 12785
Joined: Wed Mar 08, 2006 8:57 pm
Location: Redmond, WA USA

Re: Bob Hyatt says that....

Post by Dann Corbit »

Can someone who has the issue:
http://www.cs.unimaas.nl/ICGA/journal/c ... nt26-1.htm
tell us exactly what the article:
"Rules for the 11th World Computer-Chess Championship (The Board of ICGA)" starting on page 62 says as far as program heritage?