Having now read the full set of documents

General discussion about computer chess...
Post Reply
User923005
Posts: 616
Joined: Thu May 19, 2011 1:35 am

Having now read the full set of documents

Post by User923005 » Mon Jul 04, 2011 6:33 pm

It appears that Rybka 1.0 has some evaluation features that are very similar to Fruit.
We could certainly have deduced this from the following remarks in his 1.0 Beta release notes:

Robert Hyatt - For Crafty. There is nothing like an open source program for passing knowledge to the next generation.
Fabien Letouzey - For Fruit, which shattered a number of computer chess myths, demonstrated several interesting ideas, and made even the densest of us aware of fail-low pruning.
Tord Romstad - For making Fabien aware of fail-low pruning :-), and more seriously for sharing in every way possible his considerable knowledge.
Eugene Nalimov - For his cryptic but somehow fully functional endgame tablebase access code.
Uri Blass, Gerd Isenberg, Dieter Burssner, Vincent Diepeveen, Raschid Chan, Anthony Cozzie, Mridul M* :), Thomas Gaksch, Peter Berger, Sandro Necchi, Ed Shroeder, Amir Ban, Christophe Theron and every one else, past and present, on the computer chess club: For sharing their computer chess knowledge despite the fact that in principle computer chess is a competitive field.
Heinz van Kempen, Guenther Simon, Olivier Deville, Sergio Martinez, Claude Dubois: for testing early versions of Rybka despite countless bugs and annoying problems.
Alex Dumov, Gabriel Luca: for helping a Windows newbie get up to around half-speed without excessive derision (or at least open derision :))
and Iweta: for being great! :) and a pretty good Rybka tester and web master to boot

First, let's talk about plagiarism. Here is the Wiki definition from:
http://en.wikipedia.org/wiki/Plagiarism
and I think it's probably pretty good:
----------------------------
Plagiarism is defined in dictionaries as the "wrongful appropriation," "close imitation," or "purloining and publication" of another author's "language, thoughts, ideas, or expressions," and the representation of them as one's own original work,[1][2] but the notion remains problematic with nebulous boundaries.[3][4][5][6] The modern concept of plagiarism as immoral and originality as an ideal emerged in Europe only in the 18th century, particularly with the Romantic movement, while in the previous centuries authors and artists were encouraged to "copy the masters as closely as possible" and avoid "unnecessary invention."[7][8][9][10][11][12]
---------------------------
I suppose that the following citation from the same article is especially relevant:
----------------------------
Some individuals caught plagiarizing in academic or journalistic contexts claim that they plagiarized unintentionally, by failing to include quotations or give the appropriate citation. While plagiarism in scholarship and journalism has a centuries-old history, the development of the Internet, where articles appear as electronic text, has made the physical act of copying the work of others much easier.
----------------------------

The reason that I mention this is that each and every chess engine on planet earth is guilty of plagiarism. If not, where are the citations? Where are the appropriate quotations, giving credit to the original authors?

Let's take one ultra-simple example, Zobrist hashing. Almost every chess engine author uses Zobrist hasing for their hash tables. The nifty thing is that we can perform, unperform, and reperform the action of a chessman and update the hash tables for a single piece by simply using Zobrist hashing in makemove() and unmakemove(). Now this clever idea did not originate with each and every chess programmer, and yet we find Zobrist hashing almost universally in all chess programs. WHere are the citations? Where are the quotations? They are not found in any chess program.

Similarly, ideas like the null move heuristic, pvs search, alpha-beta pruning, internal iterative deepening, late move reductions, etc. were originated by one single person, not at all obvious, and yet these techniques find their way into all strong chess programs.
Where are the citations? WHere are the quotations? They are not found in any chess program.

So, now, onto copyright violation.
When you wrote your chess program, did you commit the new changes entirely from memory, or did you take out a book, an article, a post to a programming forum, or some open source example and then translate the ideas into your framework? If the latter then you are guilty of copyright violation. If the passage is a small percentage of the entire work and we give a citation, then it is 'fair use' but if not it *is* copyright violation. Who has done things in this second way? Only everyone. If you fail to admit this then you are a hypocrite and a liar.

The evidence shown was all about the Rybka 1.0 beta and some other beta versions. The evidence against other Rybka versions was all handwaving. What has that got to do with versions used in the contests? Perhaps everything, perhaps nothing.

The comparison engines:
Fruit
Rybka
Phalanx
Pepito
Crafty
Faile

What do we notice about this list?
There are three very strong engines (Fruit, Rybka, Crafty) and 4 weak engines {several hundred Elo lower} Phalanx, Pepito, Faile

Are we shocked that the weak engines are missing the strong evaluation terms? I'm not.
Are we shocked that the very strong engines have common features? I'm not especially in light of the fact that Vas said he studied them with a fine-toothed comb.

Look, here is how I see it, as far as chess program development goes:
Good ideas arise over time. The programmers grab these ideas and adapt them into their frameworks.
Over time, these ideas become sufficiently differentiated that they are no longer the simple idea lifted from some paper, book, or program.
But that is what everyone does. Don't get me wrong, we should put in the citation. I have often advocated a literate approach to chess programming and even programming in general. Unfortunately, nobody, including me, practices this properly.

Now, as to Rybka another point -- Rybka uses process model for SMP. That was my idea. I even sent a Windows version of fork() so that it would be easy for him to accomplish. So, there is code, written by me, inside of Rybka.
Therefore, I do fully accept the death penaltly imposed upon me by the ICGA {as a party to the wrongdoing}.

Now, time for a resolution:
All those who have never copied an article, programming post, book rendering of an algorithm or algorithm from some open source program and adapted it into your engine's framework please sign in the undersigned area (don't worry, I have left plenty of room):

I AM NOT A HYPOCRITE OR A COPYRIGHT VIOLATOR:
+-+
| |
+-+

And those of us who have used a method, not entirely from memory, and failed to give proper citation as to the source please sign below:
+------------------------------------------------------------------------------------------------------------------+
Danniel R. Corbit {no doubt the lone sinner as to these things}

hyatt
Posts: 1242
Joined: Thu Jun 10, 2010 2:13 am
Real Name: Bob Hyatt (Robert M. Hyatt)
Location: University of Alabama at Birmingham
Contact:

Re: Having now read the full set of documents

Post by hyatt » Mon Jul 04, 2011 7:11 pm

User923005 wrote:It appears that Rybka 1.0 has some evaluation features that are very similar to Fruit.
We could certainly have deduced this from the following remarks in his 1.0 Beta release notes:

Robert Hyatt - For Crafty. There is nothing like an open source program for passing knowledge to the next generation.
Fabien Letouzey - For Fruit, which shattered a number of computer chess myths, demonstrated several interesting ideas, and made even the densest of us aware of fail-low pruning.
Tord Romstad - For making Fabien aware of fail-low pruning :-), and more seriously for sharing in every way possible his considerable knowledge.
Eugene Nalimov - For his cryptic but somehow fully functional endgame tablebase access code.
Uri Blass, Gerd Isenberg, Dieter Burssner, Vincent Diepeveen, Raschid Chan, Anthony Cozzie, Mridul M* :), Thomas Gaksch, Peter Berger, Sandro Necchi, Ed Shroeder, Amir Ban, Christophe Theron and every one else, past and present, on the computer chess club: For sharing their computer chess knowledge despite the fact that in principle computer chess is a competitive field.
Heinz van Kempen, Guenther Simon, Olivier Deville, Sergio Martinez, Claude Dubois: for testing early versions of Rybka despite countless bugs and annoying problems.
Alex Dumov, Gabriel Luca: for helping a Windows newbie get up to around half-speed without excessive derision (or at least open derision :))
and Iweta: for being great! :) and a pretty good Rybka tester and web master to boot

First, let's talk about plagiarism. Here is the Wiki definition from:
http://en.wikipedia.org/wiki/Plagiarism
and I think it's probably pretty good:
----------------------------
Plagiarism is defined in dictionaries as the "wrongful appropriation," "close imitation," or "purloining and publication" of another author's "language, thoughts, ideas, or expressions," and the representation of them as one's own original work,[1][2] but the notion remains problematic with nebulous boundaries.[3][4][5][6] The modern concept of plagiarism as immoral and originality as an ideal emerged in Europe only in the 18th century, particularly with the Romantic movement, while in the previous centuries authors and artists were encouraged to "copy the masters as closely as possible" and avoid "unnecessary invention."[7][8][9][10][11][12]
---------------------------
I suppose that the following citation from the same article is especially relevant:
----------------------------
Some individuals caught plagiarizing in academic or journalistic contexts claim that they plagiarized unintentionally, by failing to include quotations or give the appropriate citation. While plagiarism in scholarship and journalism has a centuries-old history, the development of the Internet, where articles appear as electronic text, has made the physical act of copying the work of others much easier.
----------------------------

The reason that I mention this is that each and every chess engine on planet earth is guilty of plagiarism. If not, where are the citations? Where are the appropriate quotations, giving credit to the original authors?
Look in Crafty's sources. The random number generator? fully cited with reference to Knuth's book. EGTB code? cited to Eugene. Magic move generation? Cited to Pradu. EPD stuff? cited to (and actually written and ported into crafty by) Steven Edwards. Other people contributed a few lines here and there. They are generally mentioned in the comments in main.c for the version affected, but are sometimes inlined where the code was inserted.

_some_ do cite.


Let's take one ultra-simple example, Zobrist hashing. Almost every chess engine author uses Zobrist hasing for their hash tables. The nifty thing is that we can perform, unperform, and reperform the action of a chessman and update the hash tables for a single piece by simply using Zobrist hashing in makemove() and unmakemove(). Now this clever idea did not originate with each and every chess programmer, and yet we find Zobrist hashing almost universally in all chess programs. WHere are the citations? Where are the quotations? They are not found in any chess program.
Do you know who developed "Zobrist hashing"? "Zobrist himself. :) Seems a bit redundant. And Zobrist didn't supply code for chess. Just an idea. Ditto for Shannon and minimax, Newell, Simon and Shaw for alpha/beta, greenblatt for the transposition/refutation table, and such. Ideas generally are not cited in the context of plagiarism. That involves copying explicit lines of code...


Similarly, ideas like the null move heuristic, pvs search, alpha-beta pruning, internal iterative deepening, late move reductions, etc. were originated by one single person, not at all obvious, and yet these techniques find their way into all strong chess programs.
Where are the citations? WHere are the quotations? They are not found in any chess program.
Nobody cites ideas. And by the way, the above ideas were _not_ originated by one single person. Some of the ideas can be attributed to one person (such as Shannon, "How to program a computer to play chess" where he explained the minmax search idea. Others are not so clear. reductions, for example. Seen in Fruit. Tord talked about them. Shredder apparently used them almost 15 years ago. Etc.

So, now, onto copyright violation.
When you wrote your chess program, did you commit the new changes entirely from memory, or did you take out a book, an article, a post to a programming forum, or some open source example and then translate the ideas into your framework? If the latter then you are guilty of copyright violation.
Obviously you do not understand copyright. First look up the word "copy". It has _nothing_ to do with ideas. The closest thing there is a patent, and it is _very_ difficult to patent a computer algorithm.
If the passage is a small percentage of the entire work and we give a citation, then it is 'fair use' but if not it *is* copyright violation. Who has done things in this second way? Only everyone. If you fail to admit this then you are a hypocrite and a liar.

The evidence shown was all about the Rybka 1.0 beta and some other beta versions. The evidence against other Rybka versions was all handwaving. What has that got to do with versions used in the contests? Perhaps everything, perhaps nothing.

The comparison engines:
Fruit
Rybka
Phalanx
Pepito
Crafty
Faile

What do we notice about this list?
There are three very strong engines (Fruit, Rybka, Crafty) and 4 weak engines {several hundred Elo lower} Phalanx, Pepito, Faile

Are we shocked that the weak engines are missing the strong evaluation terms? I'm not.
Are we shocked that the very strong engines have common features? I'm not especially in light of the fact that Vas said he studied them with a fine-toothed comb.

Look, here is how I see it, as far as chess program development goes:
Good ideas arise over time. The programmers grab these ideas and adapt them into their frameworks.
Over time, these ideas become sufficiently differentiated that they are no longer the simple idea lifted from some paper, book, or program.
But that is what everyone does. Don't get me wrong, we should put in the citation. I have often advocated a literate approach to chess programming and even programming in general. Unfortunately, nobody, including me, practices this properly.

Now, as to Rybka another point -- Rybka uses process model for SMP. That was my idea. I even sent a Windows version of fork() so that it would be easy for him to accomplish. So, there is code, written by me, inside of Rybka.
Therefore, I do fully accept the death penaltly imposed upon me by the ICGA {as a party to the wrongdoing}.

Now, time for a resolution:
All those who have never copied an article, programming post, book rendering of an algorithm or algorithm from some open source program and adapted it into your engine's framework please sign in the undersigned area (don't worry, I have left plenty of room):

I AM NOT A HYPOCRITE OR A COPYRIGHT VIOLATOR:
+-+
| |
+-+

And those of us who have used a method, not entirely from memory, and failed to give proper citation as to the source please sign below:
+------------------------------------------------------------------------------------------------------------------+
Danniel R. Corbit {no doubt the lone sinner as to these things}

Since your copyright concept is so badly flawed, there is not much else to say here...

User923005
Posts: 616
Joined: Thu May 19, 2011 1:35 am

Re: Having now read the full set of documents

Post by User923005 » Mon Jul 04, 2011 9:46 pm

Here is the standard cited in the document:
"no code which has a demonstrative influence on the performance of the program in question may be borrowed from a competitor."

Alpah beta makes a program play much better.
Did you invent it? If not, where is the citation in your code. A lack of a citation is plagiarism. If you had the algorithm sitting in front of you when you input it into your program and failed to cite the source then that is copyright violation.

You had to modify the algorithm? Of course. Same for Vas. In order to use mailbox evals in a bitboard program he had to make changes.

I am not exhonerating Vas. The documentation clearly shows that Vas copied some stuff from Fruit and inserted it into Rybka 1.0.

What I am saying is that the pot has called the kettle black (yes, it is black).

Anyone who says that they have not violated copyright in their chess programs is a bald-faced liar, a hypocrite and a fake.
I'm included, of course.

The kettle is black!
The kettle is black!
The kettle is black!
The kettle is black!
The kettle is black!

Let's beat it with baseball bats until it stops moving!
"Great idea", says all of the pots.

LIARS
HYPORITES
PETTY, JEALOUS FAKES!

It's a good thing that Alpha-beta did not make any of your programs play stronger or you would be in clear violation of the document that condemns Vas.

hyatt
Posts: 1242
Joined: Thu Jun 10, 2010 2:13 am
Real Name: Bob Hyatt (Robert M. Hyatt)
Location: University of Alabama at Birmingham
Contact:

Re: Having now read the full set of documents

Post by hyatt » Mon Jul 04, 2011 10:46 pm

User923005 wrote:Here is the standard cited in the document:
"no code which has a demonstrative influence on the performance of the program in question may be borrowed from a competitor."

Alpah beta makes a program play much better.
Did you invent it?
No, but I _wrote_ it from scratch, myself. Again, do you understand any of this? Copyright applies to copying lines of code someone else wrote and made public somehow. It is _not_ about copying ideas, such as minimax, alpha/beta, and such. So before we continue this, at least figure out what it is we are talking about, and talk about the _same_ thing, not some never-never-land interpretation.

If not, where is the citation in your code. A lack of a citation is plagiarism. If you had the algorithm sitting in front of you when you input it into your program and failed to cite the source then that is copyright violation.
Again, completely wrong. But don't let that stop you.


You had to modify the algorithm? Of course. Same for Vas. In order to use mailbox evals in a bitboard program he had to make changes.

I am not exhonerating Vas. The documentation clearly shows that Vas copied some stuff from Fruit and inserted it into Rybka 1.0.

What I am saying is that the pot has called the kettle black (yes, it is black).

Anyone who says that they have not violated copyright in their chess programs is a bald-faced liar, a hypocrite and a fake.
I'm included, of course.
And anyone who does think I have violated copyright is a complete idiot...


The kettle is black!
The kettle is black!
The kettle is black!
The kettle is black!
The kettle is black!

Let's beat it with baseball bats until it stops moving!
"Great idea", says all of the pots.

LIARS
HYPORITES
PETTY, JEALOUS FAKES!

It's a good thing that Alpha-beta did not make any of your programs play stronger or you would be in clear violation of the document that condemns Vas.
Come back to reality first, and figure out what, exactly, "copyright" means. It applies to specific text, not an idea or algorithm...

User923005
Posts: 616
Joined: Thu May 19, 2011 1:35 am

Re: Having now read the full set of documents

Post by User923005 » Mon Jul 04, 2011 11:21 pm

I wish to make it clear that I am not complaining about Dr. Hyatt specifically (note the plurality of my charges).
I should add further that crafty is the best documented chess program in existance that I have examined.

Be that as it may, I believe that if you examine the criteria I laid out (direct use of preexisting material) and if Dr. Hyatt gives it a deep re-examination, that even Dr. Hyatt may have used someone else's source material directly (though translation was necessary). And even that without one of the following:
1. Describing a tiny snippet as a direct quote
2. Giving proper attribution to a paragraph sized clump
both of which would be "fair use"
or
3. Getting written permission to use a larger patch of code.

I have worked on a huge number of chess programs and have watched their evolution.
Perhaps crafty has never borrowed anything, I certainly cannot say. Crafty is old enough that a large number of algorithms would necessarily have been originated directly.

But, on the whole, the chess programming community *is* guilty of the same sins Vas has been found guilty of.

I do not exhonerate Vas. Even at that, the documentation provided does not prove any of the charges presented. They only prove that the Betas were in violation (and I am convinced of that).

hyatt
Posts: 1242
Joined: Thu Jun 10, 2010 2:13 am
Real Name: Bob Hyatt (Robert M. Hyatt)
Location: University of Alabama at Birmingham
Contact:

Re: Having now read the full set of documents

Post by hyatt » Tue Jul 05, 2011 5:44 am

User923005 wrote:I wish to make it clear that I am not complaining about Dr. Hyatt specifically (note the plurality of my charges).
I should add further that crafty is the best documented chess program in existance that I have examined.

Be that as it may, I believe that if you examine the criteria I laid out (direct use of preexisting material) and if Dr. Hyatt gives it a deep re-examination, that even Dr. Hyatt may have used someone else's source material directly (though translation was necessary). And even that without one of the following:
1. Describing a tiny snippet as a direct quote
2. Giving proper attribution to a paragraph sized clump
both of which would be "fair use"
or
3. Getting written permission to use a larger patch of code.
I will say this once more. Copyright law, as applied to computer software, does _not_ include "ideas". It includes source code, or object code, or executable code. But not ideas.


I have worked on a huge number of chess programs and have watched their evolution.
Perhaps crafty has never borrowed anything, I certainly cannot say. Crafty is old enough that a large number of algorithms would necessarily have been originated directly.

But, on the whole, the chess programming community *is* guilty of the same sins Vas has been found guilty of.
False until someone finds fruit or crafty (or some other code) copied into yet another program as yet unknown. I wouldn't begin to say it has not happened in other cases, as we know of some already. But copying ideas is not covered under copyright law as applied to computer software. Nor patents as the patent office basically refuses to patent computer software except for certain very narrow categories that often make no sense.


I do not exhonerate Vas. Even at that, the documentation provided does not prove any of the charges presented. They only prove that the Betas were in violation (and I am convinced of that).
And the 1.0 beta played in ICGA tournaments (and others).

User923005
Posts: 616
Joined: Thu May 19, 2011 1:35 am

Re: Having now read the full set of documents

Post by User923005 » Tue Jul 05, 2011 6:52 pm

hyatt wrote:
User923005 wrote:I wish to make it clear that I am not complaining about Dr. Hyatt specifically (note the plurality of my charges).
I should add further that crafty is the best documented chess program in existance that I have examined.

Be that as it may, I believe that if you examine the criteria I laid out (direct use of preexisting material) and if Dr. Hyatt gives it a deep re-examination, that even Dr. Hyatt may have used someone else's source material directly (though translation was necessary). And even that without one of the following:
1. Describing a tiny snippet as a direct quote
2. Giving proper attribution to a paragraph sized clump
both of which would be "fair use"
or
3. Getting written permission to use a larger patch of code.
I will say this once more. Copyright law, as applied to computer software, does _not_ include "ideas". It includes source code, or object code, or executable code. But not ideas.


As long as you have never had a printed article sitting in front of your or someone's code snippet that you translated into the crafty framework, but (instead) did it all from your own conceptualization of the algorithm then it wasn't copyright violation. If, on the other hand, you had a document such as a book, programming article, piece of code, etc. sitting in front of you that you used without giving proper citation, then that is fine.

As I understand your previous post, if someone uses information from an article specifically for instruction of chess programmers, then it is OK to use it without citation. While I disagree, I found this to be an interesting article:
http://www.cis.uab.edu/hyatt/bitmaps.html

I suggest that you clearly know for a fact that Vas also has no citation in his rotated bitmap code mentioning your article because you have one of those special decompilers that also decompiles the comments in the code.

I have worked on a huge number of chess programs and have watched their evolution.
Perhaps crafty has never borrowed anything, I certainly cannot say. Crafty is old enough that a large number of algorithms would necessarily have been originated directly.

But, on the whole, the chess programming community *is* guilty of the same sins Vas has been found guilty of.
False until someone finds fruit or crafty (or some other code) copied into yet another program as yet unknown. I wouldn't begin to say it has not happened in other cases, as we know of some already. But copying ideas is not covered under copyright law as applied to computer software. Nor patents as the patent office basically refuses to patent computer software except for certain very narrow categories that often make no sense.


I do not exhonerate Vas. Even at that, the documentation provided does not prove any of the charges presented. They only prove that the Betas were in violation (and I am convinced of that).
And the 1.0 beta played in ICGA tournaments (and others).

hyatt
Posts: 1242
Joined: Thu Jun 10, 2010 2:13 am
Real Name: Bob Hyatt (Robert M. Hyatt)
Location: University of Alabama at Birmingham
Contact:

Re: Having now read the full set of documents

Post by hyatt » Tue Jul 05, 2011 7:05 pm

you are going to have to do a better job of editing as I can't tell what is old and what is new.

However the question about the online paper I wrote about board representations doesn't address any of this. If you simply read that paper, feel free to point out the code that initializes the tables needed to look up the attack bit vectors. It clearly explains the idea behind rotated bitboards, but it does not give code you can cut and paste into your engine.

We also are not talking about "missing citations" in the source/binary. We are talking about copied source code that violates ICGA tournament rule 2 on originality...

Post Reply