Page 1 of 3

Re: Ideas from other engines ok?

Posted: Fri Jul 08, 2011 4:30 am
by Ferdy
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.

Re: Ideas from other engines ok?

Posted: Fri Jul 08, 2011 12:27 pm
by wgarvin
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:

Re: Ideas from other engines ok?

Posted: Fri Jul 08, 2011 2:46 pm
by lkaufman
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?

Re: Ideas from other engines ok?

Posted: Fri Jul 08, 2011 2:59 pm
by Ferdy
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.

Re: Ideas from other engines ok?

Posted: Fri Jul 08, 2011 3:05 pm
by JuLieN
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".

Re: Ideas from other engines ok?

Posted: Fri Jul 08, 2011 3:56 pm
by bob
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.

Re: Ideas from other engines ok?

Posted: Fri Jul 08, 2011 5:12 pm
by rbarreira
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?

Re: Ideas from other engines ok?

Posted: Fri Jul 08, 2011 6:13 pm
by fern
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

Re: Ideas from other engines ok?

Posted: Sat Jul 09, 2011 2:04 am
by bob
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.

Re: Ideas from other engines ok?

Posted: Sat Jul 09, 2011 3:34 am
by Don
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.