Author: Dann Corbit
Date: 12:14:10 03/02/04
Go up one level in this thread
On February 27, 2004 at 20:36:08, Will Singleton wrote: >On February 27, 2004 at 19:51:42, Bas Hamstra wrote: >>On February 27, 2004 at 02:39:50, Dann Corbit wrote: >>>On February 26, 2004 at 16:17:16, Albert Silver wrote: >>> >>>>Hi, >>>> >>>>I was wondering whether the accusations regarding List 5.12 had been clarified >>>>and if so what was the result? The program was removed from the World >>>>Championship, so it was clearly a very serious accusation, yet I still see doubt >>>>on its integrity mentioned regarding its potential inclusion in the SSDF. I >>>>admit I'm confused. This wasn't last week, so what's the deal? >>>> >>>> Albert >>> >>>Nothing has come out. >>> >>>Here is my opinion: >>> >>>List is completely different structure wise (not bitboard based). >>> >>>However, some amounts of crafty machinery may have been used (guessing, based on >>>object module names in the older versions of List). However, let me temper my >>>statement. There is not enough evidence to show that List is a clone of crafty. >>> All the evidence I know of is circumstantial leanings. >>> >>>From the List binaries, we can pull these strings: >>> >>>List 4.60: >>>F:\List\460\A10\attacks.c >>>F:\List\460\A10\bench.c >>>F:\List\460\A10\captures.c >>>F:\List\460\A10\chessboard.c >>>F:\List\460\A10\hash.c >>>F:\List\460\A10\init.c >>>F:\List\460\A10\io.c >>>F:\List\460\A10\list.c >>>F:\List\460\A10\make.c >>>F:\List\460\A10\moves.c >>>F:\List\460\A10\next.c >>>F:\List\460\A10\opening.c >>>F:\List\460\A10\pawnhash.c >>>F:\List\460\A10\phase.c >>>F:\List\460\A10\ponder.c >>>F:\List\460\A10\recog.c >>>F:\List\460\A10\score.c >>>F:\List\460\A10\search.c >>>F:\List\460\A10\searchr.c >>>F:\List\460\A10\sort.c >>>F:\List\460\A10\test.c >>>F:\List\460\A10\timer.c >>>F:\List\460\A10\undo.c >>>F:\List\460\A10\utility.c >>> >>>List 4.61: >>>F:\List\470\A8\attacks.c >>>F:\List\470\A8\bench.c >>>F:\List\470\A8\captures.c >>>F:\List\470\A8\chessboard.c >>>F:\List\470\A8\hash.c >>>F:\List\470\A8\init.c >>>F:\List\470\A8\io.c >>>F:\List\470\A8\list.c >>>F:\List\470\A8\make.c >>>F:\List\470\A8\moves.c >>>F:\List\470\A8\next.c >>>F:\List\470\A8\pawnhash.c >>>F:\List\470\A8\phase.c >>>F:\List\470\A8\ponder.c >>>F:\List\470\A8\recog.c >>>F:\List\470\A8\score.c >>>F:\List\470\A8\search.c >>>F:\List\470\A8\searchr.c >>>F:\List\470\A8\sort.c >>>F:\List\470\A8\test.c >>>F:\List\470\A8\timer.c >>>F:\List\470\A8\undo.c >>>F:\List\470\A8\utility.c >>> >>>List 5.01: >>>F:\List\Native\4\attacks.c >>>F:\List\Native\4\board.c >>>F:\List\Native\4\captures.c >>>F:\List\Native\4\hash.c >>>F:\List\Native\4\init.c >>>F:\List\Native\4\interface.c >>>F:\List\Native\4\list.c >>>F:\List\Native\4\make.c >>>F:\List\Native\4\moves.c >>>F:\List\Native\4\next.c >>>F:\List\Native\4\pawns.c >>>F:\List\Native\4\phase.c >>>F:\List\Native\4\recog.c >>>F:\List\Native\4\score.c >>>F:\List\Native\4\search.c >>>F:\List\Native\4\sort.c >>>F:\List\Native\4\speed.c >>>F:\List\Native\4\time.c >>>F:\List\Native\4\undo.c >>>F:\List\Native\4\utility.c >>> >>>List 5.04: >>>F:\Dezember 2002\Referenz List 504\Native\attacks.c >>>F:\Dezember 2002\Referenz List 504\Native\board.c >>>F:\Dezember 2002\Referenz List 504\Native\captures.c >>>F:\Dezember 2002\Referenz List 504\Native\evasions.c >>>F:\Dezember 2002\Referenz List 504\Native\hash.c >>>F:\Dezember 2002\Referenz List 504\Native\init.c >>>F:\Dezember 2002\Referenz List 504\Native\interface.c >>>F:\Dezember 2002\Referenz List 504\Native\io.c >>>F:\Dezember 2002\Referenz List 504\Native\list.c >>>F:\Dezember 2002\Referenz List 504\Native\make.c >>>F:\Dezember 2002\Referenz List 504\Native\moves.c >>>F:\Dezember 2002\Referenz List 504\Native\next.c >>>F:\Dezember 2002\Referenz List 504\Native\pawns.c >>>F:\Dezember 2002\Referenz List 504\Native\phase.c >>>F:\Dezember 2002\Referenz List 504\Native\root.c >>>F:\Dezember 2002\Referenz List 504\Native\score.c >>>F:\Dezember 2002\Referenz List 504\Native\search.c >>>F:\Dezember 2002\Referenz List 504\Native\speed.c >>>F:\Dezember 2002\Referenz List 504\Native\timer.c >>>F:\Dezember 2002\Referenz List 504\Native\uint64.c >>>F:\Dezember 2002\Referenz List 504\Native\undo.c >>>F:\Dezember 2002\Referenz List 504\Native\utility.c >>> >>> >>>List 5.12: >>>Has the symbols stripped. >>> >>>Now, most of the module names are pretty generic. And many of the crafty module >>>names are not present (e.g. the EPD stuff). However, there are also some >>>striking similarities. An example is searchr.c [in the List versions 4.x], >>>which is a name unique to crafty modules as far as I have ever seen. >>> >>>His evaluation debugger uses symbol names very similar to those in crafty, such >>>as: >>> >>> material_score >>> pawn_structure_score >>> passed_pawn_score >>> king_safety_score >>> interactive_score >>> total_score >>> >>>It seems that he has studied crafty carefully in the very least. It is also >>>possible that he simply modeled List's evaluation factor names after those he >>>saw in crafty. It would not even be necessary to examine the source code to do >>>that. >>> >>>My theory is that he may have started with crafty some long time ago, and did >>>major surgery. As time went by, the program became quite different. However, >>>when he was called out on the carpet, perhaps he realized that the crafty >>>heritage would be strong enough to be considered a clone. >>> >>>The silence now is rather alarming, since so much time has gone by. >>> >>>So I am guessing nothing will ever be said about it. It would be nice if he >>>would clarify things for us. >> >>Wow. I too thought is was a totally false accusation, now it rather seems your >>theory is more near the truth. In itsself it is no problem to start with Crafty >>and modify it. In fact this has always been encouraged by Bob. There are several >>authors who started with old programs like GNU and went their own way with it. >>It's difficult. How much do you need to have changed to rightfully call it your >>program? That's why I don't like copying code at all. Ideas, yes. Code, no. I >>can understand Bruce, who wrote his own TB code for this reason. Not that I go >>that far. >> >>Bas. In my opinion, if you start with someone else's program, the finished product will never totally belong to you. In any case, you should acknowledge the heritage in your program credits. And if the author places restrictions on the code, you should follow the restrictions. For instance, if the program you borrow from says that derivatives must be open source then your program must be open source. If the copyright says your project must be GPL if you use the code, then your project must be GPL. If the copyright says you cannot use the code at all, then you cannot use it at all. If the copyright says that you must ask permission, then you must ask permission. If the copyright says that you must give credit, then you must give credit. The only legal reason to use something without asking permission is if the code is explicitly placed in the public domain by the author. Even in that case, it would be good to mention that you used it. There are (of course) alternatives. For instance, if a program has restrictions that you do not like then find another one that does not have such stringent restrictions. And if you cannot find any programs with restrictions you are willing to accept then you have two choices: 1. Write a program completely from first principles. 2. Do not write a chess program. In general, this is not done. There are a large number of TSCP clones, where the TSCP heritage is never mentioned. There are several GnuChess clones where the heritage is never mentioned. I believe that there are crafty clones where the heritage is not mentioned. This is probably true of many other chess engines, and it is a terrible shame. >Some of us don't have TB code for that reason. It does not add much strength [if any] anyway.
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.