Ideas from other engines ok?

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

Moderators: bob, hgm, Harvey Williamson

Forum rules
This textbox is used to restore diagrams posted with the [d] tag before the upgrade.
Ferdy
Posts: 4111
Joined: Sun Aug 10, 2008 1:15 pm
Location: Philippines

Re: Ideas from other engines ok?

Post by Ferdy » Fri Jul 08, 2011 4:30 am

h1a8 wrote:Let's assume that someone want's to write an engine using the ideas of other engines while absolutely copying no code (not even in structure). Let's assume they can also achieve certain tricks as another engine but using a different means to achieve it.

Is it

1. Legally and WCCC ok
2. Legally ok but not WCCC ok
3. Neither Legally or WCCC ok ?
Rule 2 of 18th WORLD COMPUTER CHESS CHAMPIONSHIP TOURNAMENT RULES, 2010, Kanazawa, Japan.

Code: Select all

2. Each program must be the original work of the entering developers. Programming teams
whose code is derived from or including game-playing code written by others must name all
other authors, or the source of such code, in the details of their submission form. Programs
which are discovered to be close derivatives of others (e.g., by playing nearly all moves the
same), may be declared invalid by the Tournament Director after seeking expert advice. For
this purpose a listing of all game-related code running on the system must be available on
demand to the Tournament Director.
I don't know if this rule will be revised or additional rule will be added for the 19th WCCC in Tilburg this year.

IMO program originality is emphasized here.
But even if it is not original, author can still participate provided:
(a) the codes written by other author (Mr. X, for example) shall be informed, example mention/acknowledge Mr. X, and mention where the code came from or even better give a copy of the code to the organizer.
(b) the derived codes written by participating author shall also be informed, example if the search function is derived from program_x, the participating author must mention the name of the author of program_x.

Note that item (a) refers to copied code from other author which is inside the participating program, and item (b) refers to copied ideas from others which is inside the participating program. I just consider here, copied ideas equals derived codes.

The ICGA just wanted transparency of the participating programs/authors. It is up to the director whether to invalidate the application after declaring items (a) and (b) if there is.

wgarvin
Posts: 838
Joined: Thu Jul 05, 2007 3:03 pm
Location: British Columbia, Canada

Re: Ideas from other engines ok?

Post by wgarvin » Fri Jul 08, 2011 12:27 pm

Ferdy wrote:Note that item (a) refers to copied code from other author which is inside the participating program, and item (b) refers to copied ideas from others which is inside the participating program. I just consider here, copied ideas equals derived codes.
Not necessarily. If your program has the idea of LMR in it, and you implement that LMR in a certain way, and I read your source code and learn that idea and then go back to my program and implement LMR in a very similar (even identical) way, that does not necessarily mean my code is a derivative.

At the other extreme, if I copy a large chunk of your code (e.g. your pv search routine) then that would be derivative.

In the middle is a large grey area where its hard to tell what should count as a derivative and what shouldn't. In copyright law in the U.S., they use something called the Abstraction-Filtration-Comparison test. The idea is to screen out the parts that aren't novel enough to deserve copyright protection (e.g. things that are just facts, or bits of code that needs to be that can only be practically written in one way because of requirements like interoperability) and then compare whatever's left. Courts will take into account the amount of protectible code that appears to have been copied, and the relative importance of those copied parts of the whole.

In cases of blatant copying, if you compare the two programs, the copied parts are usually obvious. But with derived works, its much harder to tell.

In the case of Rybka 1.0 Beta, the eval of Fruit 2.1 was translated to bitboards, so it was not just a copy-and-paste of the code. Also, we did not have the Rybka source code to look at, so the comparison was done the hard way: by reverse-engineering the Rybka binaries. This work was largely done by Zach Wegner and Mark Watkins. They produced annotated disassemblies showing what each routine was doing, and these were then compared to the equivalent routines in Fruit 2.1. Structurally, they turned out to be very similar: e.g. they both had nearly all of the same eval features, in the same order. There was enough evidence to conclude that Rybka 1.0 Beta's eval was derived from Fruit.

But what about, e.g. Rybka vs. Ippolit? Many people suspect Ippolit is derived from a reverse-engineered Rybka, but it might be quite hard to prove it. Everything has been modified in the Ippolit code. It's not easy to point to any single part of the code and show that its directly derived from Rybka. When reading the code though, it just feels Rybka-like to me. But a feeling is not evidence. :lol:

lkaufman
Posts: 3741
Joined: Sun Jan 10, 2010 5:15 am
Location: Maryland USA
Contact:

Re: Ideas from other engines ok?

Post by lkaufman » Fri Jul 08, 2011 2:46 pm

bob wrote:
h1a8 wrote:Let's assume that someone want's to write an engine using the ideas of other engines while absolutely copying no code (not even in structure). Let's assume they can also achieve certain tricks as another engine but using a different means to achieve it.

Is it

1. Legally and WCCC ok
2. Legally ok but not WCCC ok
3. Neither Legally or WCCC ok ?
Legal everywhere...
I'm surprised at your answer Bob. If the new engine plays pretty much the same moves with similar evals (perhaps scaled) as the old one, regardless of how different the code is I think it would not be allowed in WCCC. Don't you agree?

Ferdy
Posts: 4111
Joined: Sun Aug 10, 2008 1:15 pm
Location: Philippines

Re: Ideas from other engines ok?

Post by Ferdy » Fri Jul 08, 2011 2:59 pm

wgarvin wrote:
Ferdy wrote:Note that item (a) refers to copied code from other author which is inside the participating program, and item (b) refers to copied ideas from others which is inside the participating program. I just consider here, copied ideas equals derived codes.
Not necessarily. If your program has the idea of LMR in it, and you implement that LMR in a certain way, and I read your source code and learn that idea and then go back to my program and implement LMR in a very similar (even identical) way, that does not necessarily mean my code is a derivative.

At the other extreme, if I copy a large chunk of your code (e.g. your pv search routine) then that would be derivative.

In the middle is a large grey area where its hard to tell what should count as a derivative and what shouldn't. In copyright law in the U.S., they use something called the Abstraction-Filtration-Comparison test. The idea is to screen out the parts that aren't novel enough to deserve copyright protection (e.g. things that are just facts, or bits of code that needs to be that can only be practically written in one way because of requirements like interoperability) and then compare whatever's left. Courts will take into account the amount of protectible code that appears to have been copied, and the relative importance of those copied parts of the whole.

In cases of blatant copying, if you compare the two programs, the copied parts are usually obvious. But with derived works, its much harder to tell.

In the case of Rybka 1.0 Beta, the eval of Fruit 2.1 was translated to bitboards, so it was not just a copy-and-paste of the code. Also, we did not have the Rybka source code to look at, so the comparison was done the hard way: by reverse-engineering the Rybka binaries. This work was largely done by Zach Wegner and Mark Watkins. They produced annotated disassemblies showing what each routine was doing, and these were then compared to the equivalent routines in Fruit 2.1. Structurally, they turned out to be very similar: e.g. they both had nearly all of the same eval features, in the same order. There was enough evidence to conclude that Rybka 1.0 Beta's eval was derived from Fruit.

But what about, e.g. Rybka vs. Ippolit? Many people suspect Ippolit is derived from a reverse-engineered Rybka, but it might be quite hard to prove it. Everything has been modified in the Ippolit code. It's not easy to point to any single part of the code and show that its directly derived from Rybka. When reading the code though, it just feels Rybka-like to me. But a feeling is not evidence. :lol:
Not necessarily. If your program has the idea of LMR in it, and you implement that LMR in a certain way, and I read your source code and learn that idea and then go back to my program and implement LMR in a very similar (even identical) way, that does not necessarily mean my code is a derivative.
If you have not read my code and happened to implement yourself the idea of LMR then there's no code derivative in your program with regards to LMR. However if you look at my code and implement my idea of LMR, then how do you call this idea copying? can I say a derivative of idea? Of course simple things like value of pieces is not considered here.

User avatar
JuLieN
Posts: 2948
Joined: Mon May 05, 2008 10:16 am
Location: Nantes (France)
Contact:

Re: Ideas from other engines ok?

Post by JuLieN » Fri Jul 08, 2011 3:05 pm

lkaufman wrote:
bob wrote:
h1a8 wrote:Let's assume that someone want's to write an engine using the ideas of other engines while absolutely copying no code (not even in structure). Let's assume they can also achieve certain tricks as another engine but using a different means to achieve it.

Is it

1. Legally and WCCC ok
2. Legally ok but not WCCC ok
3. Neither Legally or WCCC ok ?
Legal everywhere...
I'm surprised at your answer Bob. If the new engine plays pretty much the same moves with similar evals (perhaps scaled) as the old one, regardless of how different the code is I think it would not be allowed in WCCC. Don't you agree?
Everything in the law is based on a matter of degree. For instance, there is in the French civil law code a ground notion used about everywhere: the notion of "bon père de famille" (good family father). Each time a judge has to evaluate what is reasonable to do and what is not he will refer to this notion, asking oneself "what would the good family father do?".

This is the same, here: it's a matter of degree. Ideas are not protected, neither by patents nor by copyriths. But the form, the code, is. So you can use other people idea's but not copy/paste their code.

Now, if your engine end up playing the same moves than another one, there are but two explanations to this phenomenon:

1) you purposefully made it that way, in order to mimic another engine.
2) chess is nearly solved and the two engines tend to perfection, hence playing the same moves.

As 2) is far from now, as far as we know it, a referee would probably decide that the first explanation is the good one, and that is where the line is drawn between "taking ideas" and "copying an engine".
"The only good bug is a dead bug." (Don Dailey)
Image [Blog: http://tinyurl.com/predateur ] [Facebook: http://tinyurl.com/fbpredateur ] [MacEngines: http://tinyurl.com/macengines ]

bob
Posts: 20639
Joined: Mon Feb 27, 2006 6:30 pm
Location: Birmingham, AL

Re: Ideas from other engines ok?

Post by bob » Fri Jul 08, 2011 3:56 pm

lkaufman wrote:
bob wrote:
h1a8 wrote:Let's assume that someone want's to write an engine using the ideas of other engines while absolutely copying no code (not even in structure). Let's assume they can also achieve certain tricks as another engine but using a different means to achieve it.

Is it

1. Legally and WCCC ok
2. Legally ok but not WCCC ok
3. Neither Legally or WCCC ok ?
Legal everywhere...
I'm surprised at your answer Bob. If the new engine plays pretty much the same moves with similar evals (perhaps scaled) as the old one, regardless of how different the code is I think it would not be allowed in WCCC. Don't you agree?
No I don't. I think it would lead to a protest, an investigation, but if code was not copied then I don't think there is any way there would be a problem. Notice that taking a C program and converting it to assembly, or to Ada, doesn't qualify, as that is copying, of course.

rbarreira
Posts: 900
Joined: Tue Apr 27, 2010 1:48 pm

Re: Ideas from other engines ok?

Post by rbarreira » Fri Jul 08, 2011 5:12 pm

bob wrote:
lkaufman wrote:
bob wrote:
h1a8 wrote:Let's assume that someone want's to write an engine using the ideas of other engines while absolutely copying no code (not even in structure). Let's assume they can also achieve certain tricks as another engine but using a different means to achieve it.

Is it

1. Legally and WCCC ok
2. Legally ok but not WCCC ok
3. Neither Legally or WCCC ok ?
Legal everywhere...
I'm surprised at your answer Bob. If the new engine plays pretty much the same moves with similar evals (perhaps scaled) as the old one, regardless of how different the code is I think it would not be allowed in WCCC. Don't you agree?
No I don't. I think it would lead to a protest, an investigation, but if code was not copied then I don't think there is any way there would be a problem. Notice that taking a C program and converting it to assembly, or to Ada, doesn't qualify, as that is copying, of course.
In that case, the fact that Rybka used the same eval features as Fruit does not count as evidence of plagiarism?

User avatar
fern
Posts: 8755
Joined: Sun Feb 26, 2006 3:07 pm

Re: Ideas from other engines ok?

Post by fern » Fri Jul 08, 2011 6:13 pm

Larry , what is to "copy an idea?"
There is not simple answer to that. Ideas are made for being used in anyway available form. In that consist every progress. Ideas are not so precise entities to be possible just copy them. Youi can copy a drawing, a line of code, but an idea? Even the most articulate idea is fuzzy enough and gives scope to be used without a copy in process. What's more, there is almos no idea that can be "copied" withpout sustancial changes. There is always a degree of interpretation, of differents weights, of new articulation and alien materialization.

My best
Fern

bob
Posts: 20639
Joined: Mon Feb 27, 2006 6:30 pm
Location: Birmingham, AL

Re: Ideas from other engines ok?

Post by bob » Sat Jul 09, 2011 2:04 am

rbarreira wrote:
bob wrote:
lkaufman wrote:
bob wrote:
h1a8 wrote:Let's assume that someone want's to write an engine using the ideas of other engines while absolutely copying no code (not even in structure). Let's assume they can also achieve certain tricks as another engine but using a different means to achieve it.

Is it

1. Legally and WCCC ok
2. Legally ok but not WCCC ok
3. Neither Legally or WCCC ok ?
Legal everywhere...
I'm surprised at your answer Bob. If the new engine plays pretty much the same moves with similar evals (perhaps scaled) as the old one, regardless of how different the code is I think it would not be allowed in WCCC. Don't you agree?
No I don't. I think it would lead to a protest, an investigation, but if code was not copied then I don't think there is any way there would be a problem. Notice that taking a C program and converting it to assembly, or to Ada, doesn't qualify, as that is copying, of course.
In that case, the fact that Rybka used the same eval features as Fruit does not count as evidence of plagiarism?
Not just "features". There is much more to the comparison than that. Eval the same concepts, in the same way, in the same order, with the same partial bonuses and penalties. With the only difference being bitboard vs mailbox does count as evidence. But just because we both evaluate passed pawns does not support such a claim until the procedure itself is examined.

User avatar
Don
Posts: 5106
Joined: Tue Apr 29, 2008 2:27 pm

Re: Ideas from other engines ok?

Post by Don » Sat Jul 09, 2011 3:34 am

h1a8 wrote:Let's assume that someone want's to write an engine using the ideas of other engines while absolutely copying no code (not even in structure). Let's assume they can also achieve certain tricks as another engine but using a different means to achieve it.

Is it

1. Legally and WCCC ok
2. Legally ok but not WCCC ok
3. Neither Legally or WCCC ok ?
None of this is a problem. There is no patent on these ideas. In fact I don't think there is anything wrong with reverse engineering a program for ideas - it's not like ideas for chess programs are "owned" by anyone. The concept that if I use an idea first nobody else can is just ridiculous.

Post Reply