Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: Clones and moral behavior

Author: José Carlos

Date: 13:23:06 08/25/05

Go up one level in this thread


On August 25, 2005 at 11:48:15, Bo Persson wrote:

>On August 24, 2005 at 16:21:39, José Carlos wrote:
>
>>On August 24, 2005 at 12:47:37, Bo Persson wrote:
>>
>>>On August 23, 2005 at 16:50:48, José Carlos wrote:
>>>
>>>>  I agree with you and Uri about there's no clear definition of what a clone is.
>>>
>>>Of course there is, if you have copied the code it's a clone. If you have
>>>written it yourself, it is original.
>>>
>>>
>>>>"Having source code of other engines" is miles away from clear. Example: I have
>>>>in my code:
>>>>
>>>>int i = 0;
>>>>
>>>>  Either it is in some prior program (I'm a cloner) or in some later program (he
>>>>cloned me -early versions of Averno were open source-).
>>>
>>>Yes, but did you think of this line yourself, or did you paste it from another
>>>program?
>>
>>
>>  For sure I didn't invent that line myself. I've seen it many times in other
>>programs.
>
>It doesn't matter if you have seen it before. For this particular line, did you
>write
>
>int i = 0;
>
>because *you* figured out that you needed an integer or just because some other
>program does that. Why did you name it i and not j or k? Would you have used j
>if Crafty or Fruit did?
>
>If you figured out that you needed this code, it's ok.
>
>>
>>
>>>>  Of course copying that line is not cloning.
>>>
>>>Of course it is!!
>>
>>
>>  Come on! You can't expect people inventing C language everytime. Of course
>>I've copied that line. I learnt it in the university, I didn't figure it out
>>myself. And of course I'm not a cloner for that.
>
>Using things you have learned is exactly what you should do!
>
>Cutting and pasting is not.
>
>>
>>  If I take an open source program, make some small changes and release it, I
>>know I'm a cloner. But if I study crafty and then I implement rotated
>>bitboards... am I a cloner? I honestly say I don't know.
>
>It depends on how you do it. Is it cut-and-paste or a separate design?
>
>If your code is 100% like Crafty, it is easy to tell. If it is just similar it
>is harder to say. But the author still knows how the code was created.
>
>
>I have rotated bitboards in my program, implemented after reading Bob's
>descriptions and peeking at Crafty's code (and other programs). Then I wrote my
>code, independently.
>
>It took me several years before I noticed that Bob's bitboards are rotated 0,
>90, and +/- 45 degrees. My bitboards happen to be rotated 0, 45, 90, and 135
>degrees. Definitely not a cut-and-paste, but using the same ideas - which is ok.
>
>
>>>
>>>"Copying or retyping other code is cloning. Writing it yourself is not." :-)
>>
>>
>>  Read above. People learn programming from others. People use instructions they
>>have learnt before. Then, everybody are cloners?
>
>
>No, you can use the ideas, but not the code.
>
>When I write this text I use words that have been written before. That's not
>cloning. If copy it from someone else, it is.
>
>
>
>Bo Persson

  Ok, I see your point. Then things are really hard to accuse somebody of
cloning because it depends on what was in the mind of the suspect cloner when he
wrote the code. It also means that exact code doesn't imply cloning at all
because the programmer could have figured out that he exactly needs those lines
of code, and type them exactly the same way they were in other program.
  I'll use a little example: a long time ago I studied Pepito. I saw that his
last line of eval() was something like

   eval -= (eval % 3);

  I understood the idea immediately and I thought it could be a good idea to
produce more cutoffs with losing too much information. I decided to try the
idea. How could I implement it? Not many ways to choose. I just had to use the
same exact line or just discard it.
  I tried, and it seemed to be a tiny improvement.
  Months later (note that I programmed Averno about one hour per week, and it's
been a year or so since the last time I did it), I figured out possible
improvement. I tried (from memory):

  if (abs(eval) >= 30)
  {
    if (abs(eval) >= 150)
      eval -= (eval % 5);
    else
      eval -= (eval %3);
  }

  The idea was that when the advantage is bigger, less precision is needed.
  It seemed to work.
  Now I ask myself: is this an unfair use of open source? I don't think so, but
I'm not sure anymore...

  José C.



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.