Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: What constitutes a clone?

Author: Dann Corbit

Date: 11:40:41 02/16/05

Go up one level in this thread


On February 16, 2005 at 13:40:07, Russell Reagan wrote:

>On February 16, 2005 at 10:46:39, Robert Hyatt wrote:
>
>>On February 15, 2005 at 18:38:43, John Merlino wrote:
>>
>>>I'm not trying to start a brutally long thread here, but I'm just curious about
>>>how people feel about a particularly touchy subject -- clones. What, in your
>>>mind, would lead you to the conclusion that an engine is a clone?
>>>
>>>Let's forget trying to find ways to PROVE that a clone is a clone; I'm just
>>>trying to define one. For the sake of argument, assume that the author of this
>>>engine in question tells you exactly what he did and did not do, and you must
>>>decide whether to call it a clone or not.
>>>
>>>Here are some hypothetical questions to start the debate:
>>>
>>>If the author took Crafty and completely rewrote the evaluation code and nothing
>>>else, would it be a clone?
>>>
>>>How about if the author rewrote the evaluation code and search algorithm only,
>>>but left the hashing code, et. al.?
>>>
>>>How about if the author rewrote everything EXCEPT for the evaluation?
>>>
>>>How about if the author rewrote everything EXCEPT for Crafty's evaluation of
>>>passed pawns?
>>>
>>>I think you can see where I'm driving. Obviously, many engine authors have
>>>studied Crafty and other engines whose authors have graciously provided their
>>>source code. But, for an engine to not be considered a clone, does it have to be
>>>absolutely 100% the work of the author? (Forget about Nalimov's EGTB probing
>>>code and any other code that can be used with permission).
>>>
>>>Many thanks in advance for your thoughts,
>>>
>>>jm (who's just preparing for any eventuality during his upcoming stint as
>>>moderator :-)
>>
>>
>>Here is my thinking.
>>
>>1.  The things that give a program its "personality" are the evaluation and the
>>search itself.  The search defines the program's tactical ability, the
>>evaluation defines the programs non-tactical chess playing ability.  Copying
>>either/both should not be allowed.
>>
>>2.  Other parts such as the opening book are probably OK.  For example how many
>>are using a GUI that handles the book outside of the engine?  That seems
>>difficult to stop.  Of course a "shared opening book" is a no-no, since that is
>>another part of a program that defines its playing skill level.
>>
>>If there is something that produces a single correct answer, such as "what is
>>the set of moves for this position?" or "what is the updated chess position
>>after making or unmaking this move?" or "what is the expected (SEE) win/loss for
>>capturing on this square?" or "is the king in check?" then there is little
>>reason to worry about those parts being copied, because copied or written from
>>scratch, they by necessity produce exactly the same answer.  But the eval and
>>search don't have that characteristic.
>
>
>If someone copies all of the movegen/make/undo stuff from a mature engine, then
>some will say they have an unfair advantage because they saved a lot of time.
>What is your take on this? Do you see this as an unfair advantage, "cheating"?
>Or do you see this as an intelligent thing to do, to avoid reinventing the
>wheel?

If there is no permission to copy it, then it is cheating.  If there is
permission to copy it, it is not cheating.

However, the formal rules of the contest may filter such a program from the
competition.

When you think about a chess program -- or any other program -- a huge part of
it is always a 'clone' in at least one sense.

The C++ library (for instance) and the STL (for instance) represent a huge body
of lovely, elegant, efficient, debugged code.  When you use that, you are
'cloning' in the sense that you let someone else do the work for you.

On the other hand, we have full permission to use that code.

Cloning is actually a smart idea -- it's called "Code Reuse".  But it is not
allowed without permission.

So the key word here is "rights."

Do we have the right to use something or not?  If we are not supposed to use it
and we do -- that's not only cheating -- it is literally illegal (a crime).

If we do have the right to use something then it is not illegal.

It is not illegal to use someone else's algorithm.  People who think it is
illegal simply do not understand the law.  But some people can be touchy about
that.  So in every case, I think it very wise to:
1.  Ask permission to use even an idea.
2.  Always give credit where credit is due.

If we follow those two guidelines, how can there ever be a problem?



This page took 0 seconds to execute

Last modified: Thu, 15 Apr 21 08:11:13 -0700

Current Computer Chess Club Forums at Talkchess. This site by Sean Mintz.