Please, that's enough clones and reclones polemics,

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

Moderators: hgm, Rebel, chrisw

benstoker
Posts: 342
Joined: Tue Jan 19, 2010 2:05 am

Re: Please, that's enough clones and reclones polemics,

Post by benstoker »

Dann Corbit wrote:
benstoker wrote:
Dann Corbit wrote:
benstoker wrote:Tell me if I'm wrong, but I would wager that 10 or 15 years ago there were very significant differences between the top 10 chess engines in both "Ideas" and code. Contrast that with today; I bet the top 5 or 10 engines all use the same ideas. All use bitboards. All use all of the state of the art ideas in computer chess. If you don't use the state of the art ideas, your engine will simply not be in the top. The differences are but shades of gray compared to 10 years ago.
{snip}

Fruit is quite a strong engine that does not use bitboards.
The switch to bitboards was inevitable once 64 bit CPUs, operating systems, and compilers went mainstream. The 0x88 (and derivatives) approach was competitive when CPUs were 32 bits, but the advantages of bitboards were always clear in the 64 bit area.

The strongest engines that are not commercial have always shared the best ideas. That's why programmers come to places like CCC and discuss how their chess engines work. Alpha Beta was not independently invented by all of the programmers and yet they all have been using it since ages and ages ago. The idea to quiesce a search has been shared for decades. Hash tables, move ordering, null move, double null move, all of these ideas have been shared for a very long time.

I don't think that there has ever been too big of a beef about sharing of and using ideas. The problems arise when ideas are taken in a way that is not approved of. This is an old story too. BIONIC (which I coined as "Belive It Or Not, It's Crafty") is one example of unauthorized use of code, as was Voyager. There were many others besides. And so what is being churned over and over here is not new waters that we have never seen. It is the same old scum, stirring up from the bottom.
My point is that the State of the Art in computer chess is today widely known and documented; not so much 10 or 15 years ago. Changes and new inventions in the evolution of computer chess is today slowing down significantly, compared to 10 years ago.

Everything that rises must converge.

I bet you can make a list of absolutely essential Ideas that simply must be included in a top performing chess engine today, without which, the engine is just not a top tier program. And I bet 10 or 15 years ago there could be a whole lot more variance in what was essential for a top tier program. Since that time the natural progression is to slowly bring together in one engine the best ideas in the science.

I suppose another way to say it, is that originality in chess engines today is just a lot harder to come by than it was 10 years ago.

It's like squeezing blood out of a turnip. Or, how many different ways can you cook a pancake in 2011?
You lose your bets.

There is no difference between 15 years ago and today except that there are some new things like LMR that were simply not available 15 years ago.

Originality in computer chess today is identical to originality in computer chess 15 years ago.

What do you think there is that has changed in the last 10-15 years aside from a few new techniques? Lots of good ideas were widely known 10-15 years ago. They were implemented across all the engines.

15 years is a bit of a long reach, because we would only have 3 engines:
GnuChess, Crafty, and Arasan
but 10 years ago, we would have had this list:
[SNIP]

Almost all of those engines would have had:
alpha-beta
quiescent search
SEE
Hash tables
null move heuristic
move ordering
killer moves
lazy eval
check extensions
recapture extensions
king safety/mobility/passed pawns & pawn structure/bishop pair/bad bishop/center control

That's because those are the techniques that were known in that day.
Now, a few of those engines would not have some of those techniques. Those would be the weaker engines that were just beginning to be programmed, just like today.

Today, the list is longer, but the end result is the same. The strongest engines use the strongest techniques. I think that this is one of the things that Anthony Cozzie did not like about computer chess (everyone does the same stuff, for the most part).

You might imagine it is bad for so many chess engines to be doing stuff the same for all this time. And yet we see computer chess rapidly moving forwards anyway. Why is that? Because there will always be innovators like Dr. Hyatt and Fabian and Tord, etc. who are willing to share what they learn.

IMO-YMMV
You've made my point more strongly than I managed, with the reference to Cozzie - everyone does the same stuff, for the most part.

Here's the IPON list:

Code: Select all

Rank Name                      Elo    +    - games score oppo. draws 
   1 Houdini 1.5a             3011   15   15  2200   83%  2739   22% +3
   2 Deep Rybka 4             2954   14   13  2200   78%  2742   31% +1
   3 Stockfish 2.01 JA        2916   13   13  2200   73%  2743   33% -3
   4 Critter 0.90 SSE42       2888   13   12  2200   70%  2745   35% -4
   5 Komodo64 1.3 JA          2830   12   12  2200   62%  2747   36% +1
   6 Naum 4.2                 2825   12   12  2200   61%  2747   38% +3
   7 Deep Shredder 12         2800   12   12  2200   57%  2749   38% 
   8 Gull 1.1                 2788   12   12  2200   56%  2749   37% +0
   9 Deep Fritz 12 32b        2780   12   12  2200   55%  2749   37% +1
  10 Deep Sjeng c't 2010 32b  2779   12   12  2200   54%  2749   37% +2
  11 Protector 1.4.0 x64      2756   12   12  2200   51%  2751   38% -2
  12 spark-1.0 SSE42          2751   12   12  2200   50%  2751   39% -3
  13 HIARCS 13.2 MP 32b       2746   12   12  2200   49%  2751   39% -5
  14 Zappa Mexico II          2706   12   12  2200   44%  2753   36% -7
  15 Deep Onno 1-2-70         2682   12   12  2200   40%  2754   38% -2
  16 Deep Junior 12           2680   12   12  2200   40%  2754   31% +2
  17 Hannibal 1.0a            2679   12   13  2200   40%  2754   33% -3
  18 Toga II 1.4 beta5c BB    2670   12   12  2200   38%  2754   37% +0
  19 Umko 1.1 SSE42           2631   13   13  2200   33%  2756   35% -2
  20 Loop 13.6/2007           2618   13   13  2200   31%  2757   33% +4
  21 Jonny 4.00 32b           2605   13   13  2200   30%  2757   30% -9
  22 Crafty 23.3 JA           2595   13   13  2200   29%  2758   29% -5
  23 Spike 1.2 Turin 32b      2579   13   13  2200   26%  2759   30% +3
Which one of these engines do you know or expect is using Ideas not in any of the other engines? Do they not all implement your list above?: "alpha-beta/quiescent search/SEE
Hash tables/null move heuristic/move ordering/killer moves/lazy eval/check extensions/recapture extensions/king safety/mobility/passed pawns & pawn structure/bishop pair/bad bishop/center control" If any of them did NOT use ALL of these Ideas, would they be on the IPON list? Just as you say, "the strongest engines use the strongest techniques."

I'll ask it this way. Since Fruit was born, what new Ideas have been added to the list of "strongest techniques"? 1, 2, 3, ... 10?

I'll ask it this way. Today, is it really possible to have a top tier program that is truly more than 80% different from all other top tier engines?

[Hint: The answer is NO.]
Dann Corbit
Posts: 12540
Joined: Wed Mar 08, 2006 8:57 pm
Location: Redmond, WA USA

Re: Please, that's enough clones and reclones polemics,

Post by Dann Corbit »

Milos wrote:
Dann Corbit wrote:If, in Shakespear's day, suppose that someone had improved the grammar of one of his lines, or made a really funny pun.
Does this author get full credit for "Much Ado About Nothing" by Chester Foobody?
Your analogy is wrong.
There are two extremes, one is writing or lets call it plaintext. There changing few letters or sentences doesn't practically change anything. The other is complex mechanisms lets call it ciphertext where changing one byte transforms something nice and well written into meaningless rumblings.
Then there are numerous shades of colors between those two extremes.
Chess programming is somewhere in-between but closer to ciphertext. You can change many things and still have the very same result, but you can also change few things and get something much stronger. The line that separates these is also the line between smart/successful and jealous/unsuccessful. We have both of those on this forum these days...
You missed my point entirely.
It is possible to make a very tiny change and have it create a tremendous effect, particularly if it is a bug fix.
benstoker
Posts: 342
Joined: Tue Jan 19, 2010 2:05 am

Re: Please, that's enough clones and reclones polemics,

Post by benstoker »

Dann Corbit wrote:
Milos wrote:
Dann Corbit wrote:If, in Shakespear's day, suppose that someone had improved the grammar of one of his lines, or made a really funny pun.
Does this author get full credit for "Much Ado About Nothing" by Chester Foobody?
Your analogy is wrong.
There are two extremes, one is writing or lets call it plaintext. There changing few letters or sentences doesn't practically change anything. The other is complex mechanisms lets call it ciphertext where changing one byte transforms something nice and well written into meaningless rumblings.
Then there are numerous shades of colors between those two extremes.
Chess programming is somewhere in-between but closer to ciphertext. You can change many things and still have the very same result, but you can also change few things and get something much stronger. The line that separates these is also the line between smart/successful and jealous/unsuccessful. We have both of those on this forum these days...
You missed my point entirely.
It is possible to make a very tiny change and have it create a tremendous effect, particularly if it is a bug fix.
Bug squashers are workers bees. Squashing a bug never gets a new name. SEE is not a bug squash. Bitboards isn't a bug squash. Ditto every other chess engine technique. Bug squashing is NOT a measure of originality.
Dann Corbit
Posts: 12540
Joined: Wed Mar 08, 2006 8:57 pm
Location: Redmond, WA USA

Re: Please, that's enough clones and reclones polemics,

Post by Dann Corbit »

benstoker wrote:
Dann Corbit wrote:
benstoker wrote:
Dann Corbit wrote:
benstoker wrote:Tell me if I'm wrong, but I would wager that 10 or 15 years ago there were very significant differences between the top 10 chess engines in both "Ideas" and code. Contrast that with today; I bet the top 5 or 10 engines all use the same ideas. All use bitboards. All use all of the state of the art ideas in computer chess. If you don't use the state of the art ideas, your engine will simply not be in the top. The differences are but shades of gray compared to 10 years ago.
{snip}

Fruit is quite a strong engine that does not use bitboards.
The switch to bitboards was inevitable once 64 bit CPUs, operating systems, and compilers went mainstream. The 0x88 (and derivatives) approach was competitive when CPUs were 32 bits, but the advantages of bitboards were always clear in the 64 bit area.

The strongest engines that are not commercial have always shared the best ideas. That's why programmers come to places like CCC and discuss how their chess engines work. Alpha Beta was not independently invented by all of the programmers and yet they all have been using it since ages and ages ago. The idea to quiesce a search has been shared for decades. Hash tables, move ordering, null move, double null move, all of these ideas have been shared for a very long time.

I don't think that there has ever been too big of a beef about sharing of and using ideas. The problems arise when ideas are taken in a way that is not approved of. This is an old story too. BIONIC (which I coined as "Belive It Or Not, It's Crafty") is one example of unauthorized use of code, as was Voyager. There were many others besides. And so what is being churned over and over here is not new waters that we have never seen. It is the same old scum, stirring up from the bottom.
My point is that the State of the Art in computer chess is today widely known and documented; not so much 10 or 15 years ago. Changes and new inventions in the evolution of computer chess is today slowing down significantly, compared to 10 years ago.

Everything that rises must converge.

I bet you can make a list of absolutely essential Ideas that simply must be included in a top performing chess engine today, without which, the engine is just not a top tier program. And I bet 10 or 15 years ago there could be a whole lot more variance in what was essential for a top tier program. Since that time the natural progression is to slowly bring together in one engine the best ideas in the science.

I suppose another way to say it, is that originality in chess engines today is just a lot harder to come by than it was 10 years ago.

It's like squeezing blood out of a turnip. Or, how many different ways can you cook a pancake in 2011?
You lose your bets.

There is no difference between 15 years ago and today except that there are some new things like LMR that were simply not available 15 years ago.

Originality in computer chess today is identical to originality in computer chess 15 years ago.

What do you think there is that has changed in the last 10-15 years aside from a few new techniques? Lots of good ideas were widely known 10-15 years ago. They were implemented across all the engines.

15 years is a bit of a long reach, because we would only have 3 engines:
GnuChess, Crafty, and Arasan
but 10 years ago, we would have had this list:
[SNIP]

Almost all of those engines would have had:
alpha-beta
quiescent search
SEE
Hash tables
null move heuristic
move ordering
killer moves
lazy eval
check extensions
recapture extensions
king safety/mobility/passed pawns & pawn structure/bishop pair/bad bishop/center control

That's because those are the techniques that were known in that day.
Now, a few of those engines would not have some of those techniques. Those would be the weaker engines that were just beginning to be programmed, just like today.

Today, the list is longer, but the end result is the same. The strongest engines use the strongest techniques. I think that this is one of the things that Anthony Cozzie did not like about computer chess (everyone does the same stuff, for the most part).

You might imagine it is bad for so many chess engines to be doing stuff the same for all this time. And yet we see computer chess rapidly moving forwards anyway. Why is that? Because there will always be innovators like Dr. Hyatt and Fabian and Tord, etc. who are willing to share what they learn.

IMO-YMMV
You've made my point more strongly than I managed, with the reference to Cozzie - everyone does the same stuff, for the most part.

Here's the IPON list:

Code: Select all

Rank Name                      Elo    +    - games score oppo. draws 
   1 Houdini 1.5a             3011   15   15  2200   83%  2739   22% +3
   2 Deep Rybka 4             2954   14   13  2200   78%  2742   31% +1
   3 Stockfish 2.01 JA        2916   13   13  2200   73%  2743   33% -3
   4 Critter 0.90 SSE42       2888   13   12  2200   70%  2745   35% -4
   5 Komodo64 1.3 JA          2830   12   12  2200   62%  2747   36% +1
   6 Naum 4.2                 2825   12   12  2200   61%  2747   38% +3
   7 Deep Shredder 12         2800   12   12  2200   57%  2749   38% 
   8 Gull 1.1                 2788   12   12  2200   56%  2749   37% +0
   9 Deep Fritz 12 32b        2780   12   12  2200   55%  2749   37% +1
  10 Deep Sjeng c't 2010 32b  2779   12   12  2200   54%  2749   37% +2
  11 Protector 1.4.0 x64      2756   12   12  2200   51%  2751   38% -2
  12 spark-1.0 SSE42          2751   12   12  2200   50%  2751   39% -3
  13 HIARCS 13.2 MP 32b       2746   12   12  2200   49%  2751   39% -5
  14 Zappa Mexico II          2706   12   12  2200   44%  2753   36% -7
  15 Deep Onno 1-2-70         2682   12   12  2200   40%  2754   38% -2
  16 Deep Junior 12           2680   12   12  2200   40%  2754   31% +2
  17 Hannibal 1.0a            2679   12   13  2200   40%  2754   33% -3
  18 Toga II 1.4 beta5c BB    2670   12   12  2200   38%  2754   37% +0
  19 Umko 1.1 SSE42           2631   13   13  2200   33%  2756   35% -2
  20 Loop 13.6/2007           2618   13   13  2200   31%  2757   33% +4
  21 Jonny 4.00 32b           2605   13   13  2200   30%  2757   30% -9
  22 Crafty 23.3 JA           2595   13   13  2200   29%  2758   29% -5
  23 Spike 1.2 Turin 32b      2579   13   13  2200   26%  2759   30% +3
Which one of these engines do you know or expect is using Ideas not in any of the other engines? Do they not all implement your list above?: "alpha-beta/quiescent search/SEE
Hash tables/null move heuristic/move ordering/killer moves/lazy eval/check extensions/recapture extensions/king safety/mobility/passed pawns & pawn structure/bishop pair/bad bishop/center control" If any of them did NOT use ALL of these Ideas, would they be on the IPON list? Just as you say, "the strongest engines use the strongest techniques."

I'll ask it this way. Since Fruit was born, what new Ideas have been added to the list of "strongest techniques"? 1, 2, 3, ... 10?

I'll ask it this way. Today, is it really possible to have a top tier program that is truly more than 80% different from all other top tier engines?

[Hint: The answer is NO.]
My point was that nothing has changed from ten years ago.
Ten years ago, the strongest engines used the best ideas that were available at that time.

As for originality, the originality of the current crop of engines is at least as high as it was ten years ago.

Even though everyone uses pvs (for instance) it is possible to do a better job of writing a pvs search and that somewhat better job can make your engine search much deeper.

So even though the concepts are present in almost all programs, they do not have identical strengths.

It is the same in any sector of computer science. A recent database program will have an inverted list, a btree, and a hash table at least. But some vendors will implement it a little bit better than the others.

Do you imagine that Tord did not innovate?
Of course he did.

We would have asked the same question ten years ago about Dr. Hyatt and the answer would have been the same.

We learn from the innovations and move forward and there is nothing wrong in that. It has always happened that way, and furthermore it is a good thing.

There is no beef (so far as I know) from using the concepts from another program {and there never has been}. The outcry that rises up comes from using someone else's code without permission and claiming that you did it.

This will also bring an outcry ten years from now. The programs will be a lot stronger. And there will be a longer list of common techniques that all of the top programs exercise. But, the more everything changes, the more everything stays the same.
Dann Corbit
Posts: 12540
Joined: Wed Mar 08, 2006 8:57 pm
Location: Redmond, WA USA

Re: Please, that's enough clones and reclones polemics,

Post by Dann Corbit »

benstoker wrote:
Dann Corbit wrote:
Milos wrote:
Dann Corbit wrote:If, in Shakespear's day, suppose that someone had improved the grammar of one of his lines, or made a really funny pun.
Does this author get full credit for "Much Ado About Nothing" by Chester Foobody?
Your analogy is wrong.
There are two extremes, one is writing or lets call it plaintext. There changing few letters or sentences doesn't practically change anything. The other is complex mechanisms lets call it ciphertext where changing one byte transforms something nice and well written into meaningless rumblings.
Then there are numerous shades of colors between those two extremes.
Chess programming is somewhere in-between but closer to ciphertext. You can change many things and still have the very same result, but you can also change few things and get something much stronger. The line that separates these is also the line between smart/successful and jealous/unsuccessful. We have both of those on this forum these days...
You missed my point entirely.
It is possible to make a very tiny change and have it create a tremendous effect, particularly if it is a bug fix.
Bug squashers are workers bees. Squashing a bug never gets a new name. SEE is not a bug squash. Bitboards isn't a bug squash. Ditto every other chess engine technique. Bug squashing is NOT a measure of originality.
I disagree. That was Fabian's biggest innovation, by far.

If you should happen to read his code, examine his use of assert().
Far more than any other reason, that is why his program was so shockingly strong at the time. More important than the evaluation innovations, and more important than the search innovations.

Anything is an innovation if other people are not doing it or are not doing it as well as you are.

Writing bug free code is more important than you imagine.

Every strong chess program has bugs in it. If you can remove half of them, it will make that program much stronger (if you concentrate on the right sort of bugs).
benstoker
Posts: 342
Joined: Tue Jan 19, 2010 2:05 am

Re: Please, that's enough clones and reclones polemics,

Post by benstoker »

Dann Corbit wrote:
benstoker wrote:
Dann Corbit wrote:
benstoker wrote:
Dann Corbit wrote:
benstoker wrote:Tell me if I'm wrong, but I would wager that 10 or 15 years ago there were very significant differences between the top 10 chess engines in both "Ideas" and code. Contrast that with today; I bet the top 5 or 10 engines all use the same ideas. All use bitboards. All use all of the state of the art ideas in computer chess. If you don't use the state of the art ideas, your engine will simply not be in the top. The differences are but shades of gray compared to 10 years ago.
{snip}

Fruit is quite a strong engine that does not use bitboards.
The switch to bitboards was inevitable once 64 bit CPUs, operating systems, and compilers went mainstream. The 0x88 (and derivatives) approach was competitive when CPUs were 32 bits, but the advantages of bitboards were always clear in the 64 bit area.

The strongest engines that are not commercial have always shared the best ideas. That's why programmers come to places like CCC and discuss how their chess engines work. Alpha Beta was not independently invented by all of the programmers and yet they all have been using it since ages and ages ago. The idea to quiesce a search has been shared for decades. Hash tables, move ordering, null move, double null move, all of these ideas have been shared for a very long time.

I don't think that there has ever been too big of a beef about sharing of and using ideas. The problems arise when ideas are taken in a way that is not approved of. This is an old story too. BIONIC (which I coined as "Belive It Or Not, It's Crafty") is one example of unauthorized use of code, as was Voyager. There were many others besides. And so what is being churned over and over here is not new waters that we have never seen. It is the same old scum, stirring up from the bottom.
My point is that the State of the Art in computer chess is today widely known and documented; not so much 10 or 15 years ago. Changes and new inventions in the evolution of computer chess is today slowing down significantly, compared to 10 years ago.

Everything that rises must converge.

I bet you can make a list of absolutely essential Ideas that simply must be included in a top performing chess engine today, without which, the engine is just not a top tier program. And I bet 10 or 15 years ago there could be a whole lot more variance in what was essential for a top tier program. Since that time the natural progression is to slowly bring together in one engine the best ideas in the science.

I suppose another way to say it, is that originality in chess engines today is just a lot harder to come by than it was 10 years ago.

It's like squeezing blood out of a turnip. Or, how many different ways can you cook a pancake in 2011?
You lose your bets.

There is no difference between 15 years ago and today except that there are some new things like LMR that were simply not available 15 years ago.

Originality in computer chess today is identical to originality in computer chess 15 years ago.

What do you think there is that has changed in the last 10-15 years aside from a few new techniques? Lots of good ideas were widely known 10-15 years ago. They were implemented across all the engines.

15 years is a bit of a long reach, because we would only have 3 engines:
GnuChess, Crafty, and Arasan
but 10 years ago, we would have had this list:
[SNIP]

Almost all of those engines would have had:
alpha-beta
quiescent search
SEE
Hash tables
null move heuristic
move ordering
killer moves
lazy eval
check extensions
recapture extensions
king safety/mobility/passed pawns & pawn structure/bishop pair/bad bishop/center control

That's because those are the techniques that were known in that day.
Now, a few of those engines would not have some of those techniques. Those would be the weaker engines that were just beginning to be programmed, just like today.

Today, the list is longer, but the end result is the same. The strongest engines use the strongest techniques. I think that this is one of the things that Anthony Cozzie did not like about computer chess (everyone does the same stuff, for the most part).

You might imagine it is bad for so many chess engines to be doing stuff the same for all this time. And yet we see computer chess rapidly moving forwards anyway. Why is that? Because there will always be innovators like Dr. Hyatt and Fabian and Tord, etc. who are willing to share what they learn.

IMO-YMMV
You've made my point more strongly than I managed, with the reference to Cozzie - everyone does the same stuff, for the most part.

Here's the IPON list:

Code: Select all

Rank Name                      Elo    +    - games score oppo. draws 
   1 Houdini 1.5a             3011   15   15  2200   83%  2739   22% +3
   2 Deep Rybka 4             2954   14   13  2200   78%  2742   31% +1
   3 Stockfish 2.01 JA        2916   13   13  2200   73%  2743   33% -3
   4 Critter 0.90 SSE42       2888   13   12  2200   70%  2745   35% -4
   5 Komodo64 1.3 JA          2830   12   12  2200   62%  2747   36% +1
   6 Naum 4.2                 2825   12   12  2200   61%  2747   38% +3
   7 Deep Shredder 12         2800   12   12  2200   57%  2749   38% 
   8 Gull 1.1                 2788   12   12  2200   56%  2749   37% +0
   9 Deep Fritz 12 32b        2780   12   12  2200   55%  2749   37% +1
  10 Deep Sjeng c't 2010 32b  2779   12   12  2200   54%  2749   37% +2
  11 Protector 1.4.0 x64      2756   12   12  2200   51%  2751   38% -2
  12 spark-1.0 SSE42          2751   12   12  2200   50%  2751   39% -3
  13 HIARCS 13.2 MP 32b       2746   12   12  2200   49%  2751   39% -5
  14 Zappa Mexico II          2706   12   12  2200   44%  2753   36% -7
  15 Deep Onno 1-2-70         2682   12   12  2200   40%  2754   38% -2
  16 Deep Junior 12           2680   12   12  2200   40%  2754   31% +2
  17 Hannibal 1.0a            2679   12   13  2200   40%  2754   33% -3
  18 Toga II 1.4 beta5c BB    2670   12   12  2200   38%  2754   37% +0
  19 Umko 1.1 SSE42           2631   13   13  2200   33%  2756   35% -2
  20 Loop 13.6/2007           2618   13   13  2200   31%  2757   33% +4
  21 Jonny 4.00 32b           2605   13   13  2200   30%  2757   30% -9
  22 Crafty 23.3 JA           2595   13   13  2200   29%  2758   29% -5
  23 Spike 1.2 Turin 32b      2579   13   13  2200   26%  2759   30% +3
Which one of these engines do you know or expect is using Ideas not in any of the other engines? Do they not all implement your list above?: "alpha-beta/quiescent search/SEE
Hash tables/null move heuristic/move ordering/killer moves/lazy eval/check extensions/recapture extensions/king safety/mobility/passed pawns & pawn structure/bishop pair/bad bishop/center control" If any of them did NOT use ALL of these Ideas, would they be on the IPON list? Just as you say, "the strongest engines use the strongest techniques."

I'll ask it this way. Since Fruit was born, what new Ideas have been added to the list of "strongest techniques"? 1, 2, 3, ... 10?

I'll ask it this way. Today, is it really possible to have a top tier program that is truly more than 80% different from all other top tier engines?

[Hint: The answer is NO.]
My point was that nothing has changed from ten years ago.
Ten years ago, the strongest engines used the best ideas that were available at that time.

As for originality, the originality of the current crop of engines is at least as high as it was ten years ago.

Even though everyone uses pvs (for instance) it is possible to do a better job of writing a pvs search and that somewhat better job can make your engine search much deeper.

So even though the concepts are present in almost all programs, they do not have identical strengths.

It is the same in any sector of computer science. A recent database program will have an inverted list, a btree, and a hash table at least. But some vendors will implement it a little bit better than the others.

Do you imagine that Tord did not innovate?
Of course he did.

We would have asked the same question ten years ago about Dr. Hyatt and the answer would have been the same.

We learn from the innovations and move forward and there is nothing wrong in that. It has always happened that way, and furthermore it is a good thing.

There is no beef (so far as I know) from using the concepts from another program {and there never has been}. The outcry that rises up comes from using someone else's code without permission and claiming that you did it.

This will also bring an outcry ten years from now. The programs will be a lot stronger. And there will be a longer list of common techniques that all of the top programs exercise. But, the more everything changes, the more everything stays the same.
Okay. If I am new to chess engine programming, I will soon find that I'm on an extremely small island with very limited species propagation choices. In fact, whichever mate I choose, it's going to be incest. My engine will be a blue baby.

All the talk about lawsuits is stupid chatter. You all have to police yourselves. The tournaments must be the arbiters.

But, I've read the rules to ICGA. They're very poorly drafted.

The challenge is to define what is an 'impermissible derivative". What counts and what doesn't count as "derived". Everybody has an opinion. I bet there will never be a consensus. Even if you settle on such arbitrary measures like "not more than 80% similar", what the heck does that mean?

Think about the problem as though you are a tournament director and you want to draft a "one author, one entry" rule. The Rule must be coupled with sanctions. Go ahead, make a proposal. Rules that simply provide "no clones or no derivatives" without more fail. The Rule must clearly define what exactly "derived" means and how it is measured or determined. Does a rote copy of UCI string handling routines count toward the derivation measurment? That seems irrelevant to me. But, who knows?
User avatar
michiguel
Posts: 6401
Joined: Thu Mar 09, 2006 8:30 pm
Location: Chicago, Illinois, USA

Re: Please, that's enough clones and reclones polemics,

Post by michiguel »

benstoker wrote:
Dann Corbit wrote:
benstoker wrote:Tell me if I'm wrong, but I would wager that 10 or 15 years ago there were very significant differences between the top 10 chess engines in both "Ideas" and code. Contrast that with today; I bet the top 5 or 10 engines all use the same ideas. All use bitboards. All use all of the state of the art ideas in computer chess. If you don't use the state of the art ideas, your engine will simply not be in the top. The differences are but shades of gray compared to 10 years ago.
{snip}

Fruit is quite a strong engine that does not use bitboards.
The switch to bitboards was inevitable once 64 bit CPUs, operating systems, and compilers went mainstream. The 0x88 (and derivatives) approach was competitive when CPUs were 32 bits, but the advantages of bitboards were always clear in the 64 bit area.

The strongest engines that are not commercial have always shared the best ideas. That's why programmers come to places like CCC and discuss how their chess engines work. Alpha Beta was not independently invented by all of the programmers and yet they all have been using it since ages and ages ago. The idea to quiesce a search has been shared for decades. Hash tables, move ordering, null move, double null move, all of these ideas have been shared for a very long time.

I don't think that there has ever been too big of a beef about sharing of and using ideas. The problems arise when ideas are taken in a way that is not approved of. This is an old story too. BIONIC (which I coined as "Belive It Or Not, It's Crafty") is one example of unauthorized use of code, as was Voyager. There were many others besides. And so what is being churned over and over here is not new waters that we have never seen. It is the same old scum, stirring up from the bottom.
My point is that the State of the Art in computer chess is today widely known and documented; not so much 10 or 15 years ago. Changes and new inventions in the evolution of computer chess is today slowing down significantly, compared to 10 years ago.
I have no idea what evidence you are basing this statement. The reality is completely different, 180 of what you are saying.
Everything that rises must converge.
More than converging, we are exploding.

Miguel

I bet you can make a list of absolutely essential Ideas that simply must be included in a top performing chess engine today, without which, the engine is just not a top tier program. And I bet 10 or 15 years ago there could be a whole lot more variance in what was essential for a top tier program. Since that time the natural progression is to slowly bring together in one engine the best ideas in the science.

I suppose another way to say it, is that originality in chess engines today is just a lot harder to come by than it was 10 years ago.

It's like squeezing blood out of a turnip. Or, how many different ways can you cook a pancake in 2011?
Dann Corbit
Posts: 12540
Joined: Wed Mar 08, 2006 8:57 pm
Location: Redmond, WA USA

Re: Please, that's enough clones and reclones polemics,

Post by Dann Corbit »

benstoker wrote:
Dann Corbit wrote:
benstoker wrote:
Dann Corbit wrote:
benstoker wrote:
Dann Corbit wrote:
benstoker wrote:Tell me if I'm wrong, but I would wager that 10 or 15 years ago there were very significant differences between the top 10 chess engines in both "Ideas" and code. Contrast that with today; I bet the top 5 or 10 engines all use the same ideas. All use bitboards. All use all of the state of the art ideas in computer chess. If you don't use the state of the art ideas, your engine will simply not be in the top. The differences are but shades of gray compared to 10 years ago.
{snip}

Fruit is quite a strong engine that does not use bitboards.
The switch to bitboards was inevitable once 64 bit CPUs, operating systems, and compilers went mainstream. The 0x88 (and derivatives) approach was competitive when CPUs were 32 bits, but the advantages of bitboards were always clear in the 64 bit area.

The strongest engines that are not commercial have always shared the best ideas. That's why programmers come to places like CCC and discuss how their chess engines work. Alpha Beta was not independently invented by all of the programmers and yet they all have been using it since ages and ages ago. The idea to quiesce a search has been shared for decades. Hash tables, move ordering, null move, double null move, all of these ideas have been shared for a very long time.

I don't think that there has ever been too big of a beef about sharing of and using ideas. The problems arise when ideas are taken in a way that is not approved of. This is an old story too. BIONIC (which I coined as "Belive It Or Not, It's Crafty") is one example of unauthorized use of code, as was Voyager. There were many others besides. And so what is being churned over and over here is not new waters that we have never seen. It is the same old scum, stirring up from the bottom.
My point is that the State of the Art in computer chess is today widely known and documented; not so much 10 or 15 years ago. Changes and new inventions in the evolution of computer chess is today slowing down significantly, compared to 10 years ago.

Everything that rises must converge.

I bet you can make a list of absolutely essential Ideas that simply must be included in a top performing chess engine today, without which, the engine is just not a top tier program. And I bet 10 or 15 years ago there could be a whole lot more variance in what was essential for a top tier program. Since that time the natural progression is to slowly bring together in one engine the best ideas in the science.

I suppose another way to say it, is that originality in chess engines today is just a lot harder to come by than it was 10 years ago.

It's like squeezing blood out of a turnip. Or, how many different ways can you cook a pancake in 2011?
You lose your bets.

There is no difference between 15 years ago and today except that there are some new things like LMR that were simply not available 15 years ago.

Originality in computer chess today is identical to originality in computer chess 15 years ago.

What do you think there is that has changed in the last 10-15 years aside from a few new techniques? Lots of good ideas were widely known 10-15 years ago. They were implemented across all the engines.

15 years is a bit of a long reach, because we would only have 3 engines:
GnuChess, Crafty, and Arasan
but 10 years ago, we would have had this list:
[SNIP]

Almost all of those engines would have had:
alpha-beta
quiescent search
SEE
Hash tables
null move heuristic
move ordering
killer moves
lazy eval
check extensions
recapture extensions
king safety/mobility/passed pawns & pawn structure/bishop pair/bad bishop/center control

That's because those are the techniques that were known in that day.
Now, a few of those engines would not have some of those techniques. Those would be the weaker engines that were just beginning to be programmed, just like today.

Today, the list is longer, but the end result is the same. The strongest engines use the strongest techniques. I think that this is one of the things that Anthony Cozzie did not like about computer chess (everyone does the same stuff, for the most part).

You might imagine it is bad for so many chess engines to be doing stuff the same for all this time. And yet we see computer chess rapidly moving forwards anyway. Why is that? Because there will always be innovators like Dr. Hyatt and Fabian and Tord, etc. who are willing to share what they learn.

IMO-YMMV
You've made my point more strongly than I managed, with the reference to Cozzie - everyone does the same stuff, for the most part.

Here's the IPON list:

Code: Select all

Rank Name                      Elo    +    - games score oppo. draws 
   1 Houdini 1.5a             3011   15   15  2200   83%  2739   22% +3
   2 Deep Rybka 4             2954   14   13  2200   78%  2742   31% +1
   3 Stockfish 2.01 JA        2916   13   13  2200   73%  2743   33% -3
   4 Critter 0.90 SSE42       2888   13   12  2200   70%  2745   35% -4
   5 Komodo64 1.3 JA          2830   12   12  2200   62%  2747   36% +1
   6 Naum 4.2                 2825   12   12  2200   61%  2747   38% +3
   7 Deep Shredder 12         2800   12   12  2200   57%  2749   38% 
   8 Gull 1.1                 2788   12   12  2200   56%  2749   37% +0
   9 Deep Fritz 12 32b        2780   12   12  2200   55%  2749   37% +1
  10 Deep Sjeng c't 2010 32b  2779   12   12  2200   54%  2749   37% +2
  11 Protector 1.4.0 x64      2756   12   12  2200   51%  2751   38% -2
  12 spark-1.0 SSE42          2751   12   12  2200   50%  2751   39% -3
  13 HIARCS 13.2 MP 32b       2746   12   12  2200   49%  2751   39% -5
  14 Zappa Mexico II          2706   12   12  2200   44%  2753   36% -7
  15 Deep Onno 1-2-70         2682   12   12  2200   40%  2754   38% -2
  16 Deep Junior 12           2680   12   12  2200   40%  2754   31% +2
  17 Hannibal 1.0a            2679   12   13  2200   40%  2754   33% -3
  18 Toga II 1.4 beta5c BB    2670   12   12  2200   38%  2754   37% +0
  19 Umko 1.1 SSE42           2631   13   13  2200   33%  2756   35% -2
  20 Loop 13.6/2007           2618   13   13  2200   31%  2757   33% +4
  21 Jonny 4.00 32b           2605   13   13  2200   30%  2757   30% -9
  22 Crafty 23.3 JA           2595   13   13  2200   29%  2758   29% -5
  23 Spike 1.2 Turin 32b      2579   13   13  2200   26%  2759   30% +3
Which one of these engines do you know or expect is using Ideas not in any of the other engines? Do they not all implement your list above?: "alpha-beta/quiescent search/SEE
Hash tables/null move heuristic/move ordering/killer moves/lazy eval/check extensions/recapture extensions/king safety/mobility/passed pawns & pawn structure/bishop pair/bad bishop/center control" If any of them did NOT use ALL of these Ideas, would they be on the IPON list? Just as you say, "the strongest engines use the strongest techniques."

I'll ask it this way. Since Fruit was born, what new Ideas have been added to the list of "strongest techniques"? 1, 2, 3, ... 10?

I'll ask it this way. Today, is it really possible to have a top tier program that is truly more than 80% different from all other top tier engines?

[Hint: The answer is NO.]
My point was that nothing has changed from ten years ago.
Ten years ago, the strongest engines used the best ideas that were available at that time.

As for originality, the originality of the current crop of engines is at least as high as it was ten years ago.

Even though everyone uses pvs (for instance) it is possible to do a better job of writing a pvs search and that somewhat better job can make your engine search much deeper.

So even though the concepts are present in almost all programs, they do not have identical strengths.

It is the same in any sector of computer science. A recent database program will have an inverted list, a btree, and a hash table at least. But some vendors will implement it a little bit better than the others.

Do you imagine that Tord did not innovate?
Of course he did.

We would have asked the same question ten years ago about Dr. Hyatt and the answer would have been the same.

We learn from the innovations and move forward and there is nothing wrong in that. It has always happened that way, and furthermore it is a good thing.

There is no beef (so far as I know) from using the concepts from another program {and there never has been}. The outcry that rises up comes from using someone else's code without permission and claiming that you did it.

This will also bring an outcry ten years from now. The programs will be a lot stronger. And there will be a longer list of common techniques that all of the top programs exercise. But, the more everything changes, the more everything stays the same.
Okay. If I am new to chess engine programming, I will soon find that I'm on an extremely small island with very limited species propagation choices. In fact, whichever mate I choose, it's going to be incest. My engine will be a blue baby.

All the talk about lawsuits is stupid chatter. You all have to police yourselves. The tournaments must be the arbiters.

But, I've read the rules to ICGA. They're very poorly drafted.

The challenge is to define what is an 'impermissible derivative". What counts and what doesn't count as "derived". Everybody has an opinion. I bet there will never be a consensus. Even if you settle on such arbitrary measures like "not more than 80% similar", what the heck does that mean?

Think about the problem as though you are a tournament director and you want to draft a "one author, one entry" rule. The Rule must be coupled with sanctions. Go ahead, make a proposal. Rules that simply provide "no clones or no derivatives" without more fail. The Rule must clearly define what exactly "derived" means and how it is measured or determined. Does a rote copy of UCI string handling routines count toward the derivation measurment? That seems irrelevant to me. But, who knows?
These are all good questions, but I don't have answers for any of them.

As far as the current situation goes, I see no obvious solutions.

As far as reuse of software ideas -> that is nothing more than good software engineering.

As far as theft of softare ideas -> inexcusably lazy, since doing it the right way is about the same difficulty and nobody will want to give you a body slam afterwards.
Dann Corbit
Posts: 12540
Joined: Wed Mar 08, 2006 8:57 pm
Location: Redmond, WA USA

Re: Please, that's enough clones and reclones polemics,

Post by Dann Corbit »

michiguel wrote:
benstoker wrote:
Dann Corbit wrote:
benstoker wrote:Tell me if I'm wrong, but I would wager that 10 or 15 years ago there were very significant differences between the top 10 chess engines in both "Ideas" and code. Contrast that with today; I bet the top 5 or 10 engines all use the same ideas. All use bitboards. All use all of the state of the art ideas in computer chess. If you don't use the state of the art ideas, your engine will simply not be in the top. The differences are but shades of gray compared to 10 years ago.
{snip}

Fruit is quite a strong engine that does not use bitboards.
The switch to bitboards was inevitable once 64 bit CPUs, operating systems, and compilers went mainstream. The 0x88 (and derivatives) approach was competitive when CPUs were 32 bits, but the advantages of bitboards were always clear in the 64 bit area.

The strongest engines that are not commercial have always shared the best ideas. That's why programmers come to places like CCC and discuss how their chess engines work. Alpha Beta was not independently invented by all of the programmers and yet they all have been using it since ages and ages ago. The idea to quiesce a search has been shared for decades. Hash tables, move ordering, null move, double null move, all of these ideas have been shared for a very long time.

I don't think that there has ever been too big of a beef about sharing of and using ideas. The problems arise when ideas are taken in a way that is not approved of. This is an old story too. BIONIC (which I coined as "Belive It Or Not, It's Crafty") is one example of unauthorized use of code, as was Voyager. There were many others besides. And so what is being churned over and over here is not new waters that we have never seen. It is the same old scum, stirring up from the bottom.
My point is that the State of the Art in computer chess is today widely known and documented; not so much 10 or 15 years ago. Changes and new inventions in the evolution of computer chess is today slowing down significantly, compared to 10 years ago.
I have no idea what evidence you are basing this statement. The reality is completely different, 180 of what you are saying.
Everything that rises must converge.
More than converging, we are exploding.
This is inevitable (in every field, not just chess programming).
http://www.wired.com/medtech/drugs/maga ... ntPage=all
Miguel

I bet you can make a list of absolutely essential Ideas that simply must be included in a top performing chess engine today, without which, the engine is just not a top tier program. And I bet 10 or 15 years ago there could be a whole lot more variance in what was essential for a top tier program. Since that time the natural progression is to slowly bring together in one engine the best ideas in the science.

I suppose another way to say it, is that originality in chess engines today is just a lot harder to come by than it was 10 years ago.

It's like squeezing blood out of a turnip. Or, how many different ways can you cook a pancake in 2011?
bob
Posts: 20943
Joined: Mon Feb 27, 2006 7:30 pm
Location: Birmingham, AL

Re: Please, that's enough clones and reclones polemics,

Post by bob »

While I don't think my old idea of "how much is permissible" is the end-all idea, it is a start.

I have taken the approach to use the following conceptual idea:

If a function that is consistent from input to output, where a move generator is a good example since each position has a fixed number of moves that can be played according to the rules of chess, then perhaps copying that is not a deal-breaker on tournament participation. I can think of other similar pieces of code, such as EGTB probing, where a given position always gives the same answer of mate in N or conversion in N or draw.

Other pieces of code clearly do not follow that concept. An evaluation function is one example. For a given position, there are an infinite number of possible different evaluation outputs. Search also, since one can reduce, extend or prune a move. So those are clearly off-limits. What else?

SEE seems to be the one input one output type of code, with some room for flexibility (do you handle pins, either absolute or not, do you check for legality, etc.) But the options are limited, and one could define, precisely, a SEE() (no pins), or SEEP() (recognizes absolute pins only), SEEAP() which recognizes things like knight pinned on queen by a bishop...

RepetitionCheck()? Rules of chess are quite precise so that might be an ok thing to borrow, although there are quite a few ways to do it (separate hash table, or a repetition list, or something else entirely). But since it is a one input, one output, it seems to fit.

So we are left with the important parts, namely the search (normal and q-search), code that deals with extensions, reductions and pruning, and all the evaluation code. The code that handles time utilization.

What about hashing? Harder case, since this is not a single input -> single output precisely. You can get lots of information from a hash table. A search result. A suggested move. A bound. A hint to avoid doing a null move search. A positional evaluation. Flags such as this was a singular position previously, etc... So maybe hashing is not a one input one output idea, particularly when there are lots of replacement strategies and such.

I think if you apply that question to each function in a chess program, you will find some that are "constant" and some that are "unique". And you might find some one input one output functions inside a non one-input-one-output function. For example, in the evaluation function, you might have a piece of code called HasOpposition(wk, bk, stm). Opposition is well-defined and for any position of the two kings and stm, that function will return T or F. So one might borrow that safely, but not the code where it is used since how you use that could vary all over the place.

One other major point. If you choose to borrow something, which for me would only include the magic move generation stuff (which, by the way does not affect my move generator code at all, I just changed a macro in a very simple way), would be that one must at least provide a proper citation or give credit to the originator of the code that was used. And one would have to abide by the GPL if pieces of a GPL program are borrowed. There is a subtle issue of a GPL program that borrows code from a non-GPL program. That's not supposed to happen, but it does, and it certainly clouds the issue.

The "heart and soul" of a chess engine is the search and evaluation. And copying that code should be a clear no-no. For those one-input-one-output functions, I don't see a problem with them. We already have several common examples. egtb.cpp was originally released as a part of Crafty, written by Eugene Nalimov. Many have used this code. Now MB has released his bitbase stuff and several have used that. Ditto for Pradu's magic move generator idea. Ditto for my rotated bitboard stuff. And we have never seen a program excluded from competition for using those. Nor should we.

There are grey areas such as piece/square tables and others. While there are an infinite number of possible piece/square tables, there are probably fewer than that useful ones. Can someone make a case for any particular piece where there are some obvious numbers and no others make any sense at all? I can't think of one, but that doesn't mean it doesn't exist. Individual scoring numbers? Would two different programmers agree on every scoring term in their evaluation? Can one make a case that fixing one value then dictates the rest if the evaluation is going to be "sane"? Doesn't seem reasonable, but doesn't seem like "impossible" could be proven.

This issue is a very complex one, and it is not going to be a quick and dirty fix I am afraid. It will take some logical/rational discourse and thought to arrive at something that is anywhere near workable.

And now you have answered the question "what is permissible?" That is only the first step, and probably the easiest step although it represents a really significant effort itself. Next is how to validate programs to screen out the bad ones. That is the real can of worms...