time to fish or cut bait?

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

Moderators: hgm, Rebel, chrisw

bob
Posts: 20943
Joined: Mon Feb 27, 2006 7:30 pm
Location: Birmingham, AL

Re: time to fish or cut bait?

Post by bob »

Dann Corbit wrote:
bob wrote:
Ryan Benitez wrote:Please be clear. Are you making any GPL violation claims against either engine? Ideas used from Fruit are not a violation unless code is taken outside of the GPL. I am sure the team of people that worked on Fruit 2.1 are proud to have impacted other engines in a positive way.
I am saying, unequivocally, that code from fruit was copied and used in Rybka 1. Whether or not this code remains in current versions is unknown, but highly probable. ip* is unknown. I have not personally compared it to fruit, but that might be an interesting comparison. Although I am not sure it would be convincing since if you copy from the original, or a copy of the original, you could end up with the same thing and it would be pretty tough to decide whether the thing is a copy of the original or the copy.
Because the souce code for Rybka 1 is not availble, the only thing that is available is Zach's reverse engineering job.

Since Rybka 1 is bitboard and not array based like Fruit, it is literally impossible to simply cut and paste things like eval and search.
Actually, search has nothing to do with bitboards. Just look at search.c in Crafty. Evaluate() is clearly a different animal, however. But there are large chunks of a chess engine that are independent of the board representation, yet they are important to playing chess. Move ordering/selection, search itself, hashing, extension/reduction stuff, and even some parts of eval that don't care about piece placement (material balance/imbalance, etc.)

The only things (therefore) which can be cut and paste operations are simple and trivial utility routines. Whether this has happend or not is again open to debate.
See above. Much more can be cut/pasted than you suspect.

Here is what is literally and undeniably clear:
Vas carefully studied Fruit and then either copied code or wrote his own version. If he copied then he committed a crime. If he wrote his own version then he may have done somthing that chess programmers do not like but which would nonetheless be legal.

I think it is strange to say you know which of the two possibilities actually occurred.
Based on 40+ years of trying to prevent student plagiarism on homework assignments. One doesn't find an identical block of code here, an identical block of code there, in a program of any significant size (>20 lines of code). I could take the assignments from my X86 programming course, where programs 2, 3 and 4 are on the range of 30-50 lines each, and let you take assignment 2 from 20 students and compare them. You'd see what I mean. Very different approaches to produce the same result. Duplicate code just does not happen by accident.


And (let us suppose) that a few utility routines were copied and used directly. Since he did give credit to Fruit in his beta documentation, would this usage be within the category of "fair use"? Again, I do not think it is possible to say.
Last quote from him I saw said, explicitly, "there are zero lines of fruit code in Rybka 1." Hard to mis-interpret the meaning of the word "zero" in that context. It can't mean "just a few".


It seems possible to me that your dislike of the action (CLEARLY he has used Fruit ideas) may be coloring your notion that you can plainly see the path he has taken to get there.
First, using ideas has never been an issue. What is an issue is the simple term "plagiarism" which is copying something someone else wrote verbatim. Whether you copy a paragraph of a book, a chapter, or the whole thing, it is _still_ plagiarism. I've never asked for the ICGA, CCT or ACCA to not allow Rybka to participate. Seems to be somewhat like closing the barn door after the horse has left.

Second, there is no "notion" to color in this situation. This is a case of pregnant or not pregnant, and there are only two possible answers. And for this case, "no" is not an answer based on evidence already presented. Therefore...
bob
Posts: 20943
Joined: Mon Feb 27, 2006 7:30 pm
Location: Birmingham, AL

Re: time to fish or cut bait?

Post by bob »

Graham Banks wrote:
bob wrote:Graham said he was _told_ to remove the ip* links. The post from Steve shows this to be completely false, that the "legality determination" was left to the moderators. Graham clearly said "That is not for me to decide, I'll leave that to the experts."

So, what expert has said that ip* and friends are illegal? What did he "leave to the experts" (I assume he expected at least one to support his uninformed decision to not allow links?)??

Talk about contradiction and self-incrimination...
I have tried to answer this everywhere that you've posted it, so here goes again:

If you could see the contents of the mods forum (which I can't quote because it's private), you would be the one owing me an apology for what you've just said.
I'll point out again that the other mods interpreted what we were told regarding disallowing links the same way as I did.
Same response. (a) if all three interpreted it that way, all 3 were wrong. 3 wrongs don't make a right. (b) apparently the other mods had a change of heart since they decided they couldn't work with you any longer. (c) you said you would leave the "legality question" to the experts, but obviously you didn't...
Frank Quisinsky
Posts: 6808
Joined: Wed Nov 18, 2009 7:16 pm
Location: Gutweiler, Germany
Full name: Frank Quisinsky

Re: Absolutly right!

Post by Frank Quisinsky »

Hi Bob,

1.
the status (legal / not legal) of IPP family is unclear so far.

2.
On some webpages IPP engines added can be found illegal commercial software too.

In this case (status unclear) is the decision of Graham Banks absolutly OK.

SWCR (rating list) rules:

German:
Clones / Derivate / und Reverse Engineering basierende Engines SIND AUSDRÜCKLICH NICHT ERWÜNSCHT!
Programme unklarer Herkunft werden nicht getestet.
= FAIRPLAY

English:
Clones / Derivate / reverse engineering based engines are explicit not permitted. Programs with unclear origin will be not tested.
= FAIRPLAY

Have a look on the topics in the new Open Chess Forum.
We have more as 500 engines, many of them are open source.
Clearly more as 75% of all topics in this forum is IPP family only.

GREAT new forum, BRAVO.

This have nothing to do with amateur computer chess!
Sorry!

Best
Frank

Thinking on it:
Different countrys, different laws!

If 1% sources from Rybka in one of the IPP family engines (Rybka sources are closed) all of this engines are in my opinion illegal.

Nothing to do with:
Rybka 1.0 beta with Fruit 2.1

Completly other instance (if so)
Last edited by Frank Quisinsky on Fri Jun 25, 2010 12:07 am, edited 1 time in total.
Dann Corbit
Posts: 12540
Joined: Wed Mar 08, 2006 8:57 pm
Location: Redmond, WA USA

Re: time to fish or cut bait?

Post by Dann Corbit »

/*
* Various methods to reverse a string, cobbled from ancient clc posts.
*/
#include <string.h>
#include <stdlib.h>
#include <stdio.h>

char *reverse9 (char *string)
{
char *start, *end;
for (end = start = string; *end && *(end + 1); ++end);
while (end > start)
{
char temp;
temp = *start;
*start = *end;
*end = temp;
++start;
--end;
}
return string;
}


char *reverseE (char *sp)
{
char *cp, *ep;
char ch;
if (!*sp)
return (sp); /* need this so we can do 1st
* ep-- below */
for (ep = sp; *ep; ep++);
for (ep--, cp = sp; cp < ep; cp++, ep--)
{
ch = *cp;
*cp = *ep;
*ep = ch;
}
return (sp);
}

char *reverseB (char *s)
{
char t, *e, *ps;
ps = s;
e = s;
while (*e) /* go to end of string */
e++;
*e--;
while (e > s)
{
t = *s;
*s = *e;
*e = t;
e--;
s++;
}
s = ps;
return s;
}
char *reverse5 (char *string)
{
char *backward = string;
char *forward = string;
char temp;
/* * Set 'backward' to the null byte * terminating the string: */
while (*backward)
backward++;
/* * Move 'forward' towards end of string * and 'backward' towards
* start of string * until 'forward' and 'backward' meet, * swapping
* characters as we go: */
while (forward < backward)
{
--backward;
temp = *backward;
*backward = *forward;
*forward = temp;
++forward;
}
return string;
}


reverseE PROC ; COMDAT
cmp BYTE PTR [rcx], 0
mov r8, rcx
je SHORT $LN1@reverseE
mov rdx, rcx
npad 5
$LL6@reverseE:
inc rdx
cmp BYTE PTR [rdx], 0
jne SHORT $LL6@reverseE
dec rdx
mov r9, rcx
cmp rcx, rdx
jae SHORT $LN1@reverseE
npad 13
$LL3@reverseE:
movzx eax, BYTE PTR [rdx]
movzx ecx, BYTE PTR [r9]
dec rdx
mov BYTE PTR [r9], al
mov BYTE PTR [rdx+1], cl
inc r9
cmp r9, rdx
jb SHORT $LL3@reverseE
$LN1@reverseE:
mov rax, r8
ret 0
reverseE ENDP
_TEXT ENDS

reverseB PROC ; COMDAT
cmp BYTE PTR [rcx], 0
mov r9, rcx
mov rax, rcx
mov r8, rcx
je SHORT $LN3@reverseB
npad 2
$LL4@reverseB:
inc r8
cmp BYTE PTR [r8], 0
jne SHORT $LL4@reverseB
$LN3@reverseB:
dec r8
cmp r8, rcx
jbe SHORT $LN11@reverseB
$LL2@reverseB:
movzx ecx, BYTE PTR [r8]
movzx edx, BYTE PTR [r9]
dec r8
mov BYTE PTR [r9], cl
mov BYTE PTR [r8+1], dl
inc r9
cmp r8, r9
ja SHORT $LL2@reverseB
$LN11@reverseB:
fatret 0
reverseB ENDP
_TEXT ENDS

reverse5 PROC ; COMDAT
cmp BYTE PTR [rcx], 0
mov r8, rcx
mov rdx, rcx
mov r9, rcx
je SHORT $LN12@reverse5
npad 2
$LL4@reverse5:
inc rdx
cmp BYTE PTR [rdx], 0
jne SHORT $LL4@reverse5
cmp rcx, rdx
jae SHORT $LN12@reverse5
npad 3
$LL2@reverse5:
movzx eax, BYTE PTR [r9]
movzx ecx, BYTE PTR [rdx-1]
dec rdx
mov BYTE PTR [rdx], al
mov BYTE PTR [r9], cl
inc r9
cmp r9, rdx
jb SHORT $LL2@reverse5
$LN12@reverse5:
mov rax, r8
ret 0
reverse5 ENDP
_TEXT ENDS

reverse9 PROC ; COMDAT
cmp BYTE PTR [rcx], 0
mov r8, rcx
mov r9, rcx
mov rdx, rcx
je SHORT $LN13@reverse9
npad 2
$LL5@reverse9:
cmp BYTE PTR [rdx+1], 0
lea rax, QWORD PTR [rdx+1]
je SHORT $LN9@reverse9
mov rdx, rax
jmp SHORT $LL5@reverse9
$LN9@reverse9:
cmp rdx, rcx
jbe SHORT $LN13@reverse9
npad 12
$LL2@reverse9:
movzx eax, BYTE PTR [rdx]
movzx ecx, BYTE PTR [r9]
dec rdx
mov BYTE PTR [r9], al
mov BYTE PTR [rdx+1], cl
inc r9
cmp rdx, r9
ja SHORT $LL2@reverse9
$LN13@reverse9:
mov rax, r8
ret 0
reverse9 ENDP
_TEXT ENDS
benstoker
Posts: 342
Joined: Tue Jan 19, 2010 2:05 am

Re: time to fish or cut bait?

Post by benstoker »

Didn't Vas recently correspond with someone saying 20% of fruit was in rybka? Recent post ... too lazy to search it ...
bob wrote:
Dann Corbit wrote:
bob wrote:
Ryan Benitez wrote:Please be clear. Are you making any GPL violation claims against either engine? Ideas used from Fruit are not a violation unless code is taken outside of the GPL. I am sure the team of people that worked on Fruit 2.1 are proud to have impacted other engines in a positive way.
I am saying, unequivocally, that code from fruit was copied and used in Rybka 1. Whether or not this code remains in current versions is unknown, but highly probable. ip* is unknown. I have not personally compared it to fruit, but that might be an interesting comparison. Although I am not sure it would be convincing since if you copy from the original, or a copy of the original, you could end up with the same thing and it would be pretty tough to decide whether the thing is a copy of the original or the copy.
Because the souce code for Rybka 1 is not availble, the only thing that is available is Zach's reverse engineering job.

Since Rybka 1 is bitboard and not array based like Fruit, it is literally impossible to simply cut and paste things like eval and search.
Actually, search has nothing to do with bitboards. Just look at search.c in Crafty. Evaluate() is clearly a different animal, however. But there are large chunks of a chess engine that are independent of the board representation, yet they are important to playing chess. Move ordering/selection, search itself, hashing, extension/reduction stuff, and even some parts of eval that don't care about piece placement (material balance/imbalance, etc.)

The only things (therefore) which can be cut and paste operations are simple and trivial utility routines. Whether this has happend or not is again open to debate.
See above. Much more can be cut/pasted than you suspect.

Here is what is literally and undeniably clear:
Vas carefully studied Fruit and then either copied code or wrote his own version. If he copied then he committed a crime. If he wrote his own version then he may have done somthing that chess programmers do not like but which would nonetheless be legal.

I think it is strange to say you know which of the two possibilities actually occurred.
Based on 40+ years of trying to prevent student plagiarism on homework assignments. One doesn't find an identical block of code here, an identical block of code there, in a program of any significant size (>20 lines of code). I could take the assignments from my X86 programming course, where programs 2, 3 and 4 are on the range of 30-50 lines each, and let you take assignment 2 from 20 students and compare them. You'd see what I mean. Very different approaches to produce the same result. Duplicate code just does not happen by accident.


And (let us suppose) that a few utility routines were copied and used directly. Since he did give credit to Fruit in his beta documentation, would this usage be within the category of "fair use"? Again, I do not think it is possible to say.
Last quote from him I saw said, explicitly, "there are zero lines of fruit code in Rybka 1." Hard to mis-interpret the meaning of the word "zero" in that context. It can't mean "just a few".


It seems possible to me that your dislike of the action (CLEARLY he has used Fruit ideas) may be coloring your notion that you can plainly see the path he has taken to get there.
First, using ideas has never been an issue. What is an issue is the simple term "plagiarism" which is copying something someone else wrote verbatim. Whether you copy a paragraph of a book, a chapter, or the whole thing, it is _still_ plagiarism. I've never asked for the ICGA, CCT or ACCA to not allow Rybka to participate. Seems to be somewhat like closing the barn door after the horse has left.

Second, there is no "notion" to color in this situation. This is a case of pregnant or not pregnant, and there are only two possible answers. And for this case, "no" is not an answer based on evidence already presented. Therefore...
benstoker
Posts: 342
Joined: Tue Jan 19, 2010 2:05 am

Re: time to fish or cut bait?

Post by benstoker »

You know what a lot of constitutional lawyers say about 'hate speech' in response to those wanting laws passed to prohibit 'hate speech'? They say the remedy to hate speech is more speech. In other words, more debate, more dialogue. more discussion. You defeat bigots with ideas and reason.

What this board should do is PROMOTE discussion of the ip* controversy in every possible way it can, because getting to the bottom of this thing would do a great service to the computer chess community. Post links to the code or code sections or whatever, and debate, debate, debate, more speech. Because that's the only way to resolve this. The short-sighted, unthinking shutting down of discussion simply serves no one. In order for Vas' supporters to be vindicated, they simply must engage.
bob wrote:Graham said he was _told_ to remove the ip* links. The post from Steve shows this to be completely false, that the "legality determination" was left to the moderators. Graham clearly said "That is not for me to decide, I'll leave that to the experts."

So, what expert has said that ip* and friends are illegal? What did he "leave to the experts" (I assume he expected at least one to support his uninformed decision to not allow links?)??

Talk about contradiction and self-incrimination...

I believe the general feeling is that the ip* case is _very_ unclear. It is _extremely_ clear that it is not a pure copy of Rybka 3, bb's post certainly proves that beyond any reasonable doubt. What, if anything, was copied is unclear. For all we know at the present, the ip* program contains much of fruit. That would explain similarities to the Rybka series (for obvious reasons).

With no evidence supporting "clone" and some interesting information showing "differences" there is more than "reasonable doubt" here. In fact, a preponderance of the evidence also supports the legality of ip* since there is no evidence to the contrary at all, yet.
User avatar
rvida
Posts: 481
Joined: Thu Apr 16, 2009 12:00 pm
Location: Slovakia, EU

Re: Absolutly right!

Post by rvida »

Frank Quisinsky wrote: 2.
On some webpages IPP engines added can be found illegal commercial software too.
Few days ago I saw a download link for Crafty 23.2 on a warez site. That makes Crafty illegal? or "of questionable status"?

Richard
Milos
Posts: 4190
Joined: Wed Nov 25, 2009 1:47 am

Re: Absolutly right!

Post by Milos »

Frank Quisinsky wrote:Clones / Derivate / reverse engineering based engines are explicit not permitted. Programs with unclear origin will be not tested.
= FAIRPLAY
Why do you have Rybka in your rating list then???
This have nothing to do with amateur computer chess!
Someone who is running a rating list consisting of more than 50% of commercial engines has no moral right to talk about amateur chess.
Frank Quisinsky
Posts: 6808
Joined: Wed Nov 18, 2009 7:16 pm
Location: Gutweiler, Germany
Full name: Frank Quisinsky

Re: Absolutly right!

Post by Frank Quisinsky »

Hello Richard,

no!
That's right!

But:
What do users if they search IvanHoe or other version of Ipp fam?

...
Right!

And on which pages the user will find them?

...
Right!

And what the user will be found too?

...
Right!

This is only one problem!
Only one ...

I think we should speak from two different instance.
Most speaking from one instance and have a problem with the situation.

Bob with Rybka 1.0 Beta and Fruit 2.1 ... but if this right ... this is a complete other instance.

In my opinion the Ipp fam. software is absolutly illegal after all public information we can read about it.

Too many indications, no proofs necessary
A bit commonsense is enough!

And you can be sure ...
The most know that but search "only" a bit fun and sensation in www Allways the same, not new!

That's all ... very easy!

Best
Frank
Last edited by Frank Quisinsky on Fri Jun 25, 2010 1:10 am, edited 3 times in total.
Milos
Posts: 4190
Joined: Wed Nov 25, 2009 1:47 am

Re: Absolutly right!

Post by Milos »

Frank Quisinsky wrote:But:
What do users if they search IvanHoe or other version of Ipp fam?

...
Right!

And on which pages the user will find them?

Bad ... need a password!

And what the user will be found if the password is no longer a problem
This is just BS and lies.
There is an official Ippolit website. All sources are there, no warez, no other links, no passwords needed.
There is an official website for Houdini. All binaries are there, no warez, no other links, no passwords needed.
There is an official website for Fire. All binaries are there, no warez, no other links, no passwords needed.

So you are just bluntly lying. That speaks a lot about your moral integrity.