> EDIT: I also attempted to read the links that Rebel posted, but they were very difficult to read, and I couldn't make heads or tails of them.
Chess programmer stuff.
Furthermore you must be familiar with ASM programming because the ICGA evidence is extracted from the Rybka executable into readable C-source code. We claim the C-code is FALSE. That C-code is not in Rybka at all. Here is what Vasik said about that code to Levy:
Hi David,
I'm not really sure what to say. The Rybka source code is original. I used lots of ideas from Fruit, as I have mentioned many times. Both Fruit and Rybka also use all sorts of common computer chess ideas.
Aside from that, this document is horribly bogus. All that "Rybka code" isn't Rybka code, it's just someone's imagination.
Best regards,
Vas
Several chess programmers have started a counter investigation and confirm Vas is right.
Pages to read:
http://www.top-5000.nl/evidence.htm
http://www.top-5000.nl/fruitification.htm
http://www.top-5000.nl/se.htm
What I meant by "difficult to read" was not "too complicated to read", but rather, badly organized and written in broken english. Just copy a specific part of the document you want me to respond to and I will.
> Just copy a specific part of the document you want me to respond to and I will.
Just show me why this Rybka ASM code:
test QWORD PTR [r14+r10*8+0x22b20],rdi
jne 0x408908
test QWORD PTR [r14+r10*8+0x22f20],rbx
jne 0x4088e6
test QWORD PTR [r14+r10*8+0x23320],rbx
je 0x408908
test QWORD PTR [r14+r10*8+0x249f40],rdi
jne 0x408908
is supposed to be Fruit C-code:
if ((t1 & BitLE[rank]) == 0) {
backward = true;
// really backward?
if ((t1 & BitRank1[rank]) != 0) {
ASSERT(rank+2<=Rank8);
if (((t2 & BitRank1[rank])
| ((BitRev[board->pawn_file[opp][file-1]] |
BitRev[board->pawn_file[opp][file+1]]) &
BitRank2[rank])) == 0) {
backward = false;
}}
else if (rank == Rank2 && ((t1 &
BitEQ[rank+2]) != 0)) {
ASSERT(rank+3<=Rank8);
if (((t2 & BitRank2[rank])
| ((BitRev[board->pawn_file[opp][file-1]] |
BitRev[board->pawn_file[opp][file+1]]) &
BitRank3[rank])) == 0) {
backward = false;
}}}
Good luck with that.
Looks like a very interesting task
I think you are waiting on a kid who is in Junior High school. That for the most part did an admirable job of holding it together for as long as he did, but has depleted his limited supply of pre-maturity resources and has gone to bed- or is busy doing whatever 14 year old's do these days.
At chess application level, both pieces detect backward pawns and adjust score depending on open file and phase.
This can be expected from chess engines: backward pawns are explained in Kmoch part 1, chapter 1.
At source code level they are completely different, call it original. Even in the absense of Rybka's source, there is no way that Fruit's code can be compiled into Rybka's binary. The sources must be different due to the bitmap implementation highly optimized vs. 0x88-like coding and not caring about speed at all. This should not be news.
If we compare the structure/formula between the two programs:
Fruit's pattern:
if no friendly pawns behind or next to me (main condition):
if the square in front has any side's pawn, or is attacked by an opponent pawn:
--> is backward (case 1)
or
if pawn still on rank 2, and also there is an adjacent pawn on rank 4, and:
if any side's pawn in front on rank 3 or 4
--> is backward (case 2)
or if opponent pawn attacks rank 2, 3, or 4
--> is backward (case 3)
Rybka's pattern can't be reconstructed from the given code snippet alone, because
part of it comes from the masks in the lookup table. But some information is in there:
The main condition is likely the same. (But it corresponds to general chess knowledge.)
The condition for case 1 can be the very similar as well, except for ignoring own pawns.
The other conditions related to 2nd rank pawns seem rather arbitrary in fruit, and they don't seem to match in Rybka:
The condition for case 2 and 3 look rather different from judging by the structure of the expression alone.
So the patterns used by both programs appear to be essentially different.
There are some similarities still:
The score adjustment doesn't depend on any other attributes in both programs,
such as board location, piece attacks on the pawn, presence of opponent
rooks on the file if is open (or presence of opponent rooks at all).
The same score adjustment is given under all conditions, instead of tuning each condition in isolation.
Except that both programs take file status into account. (That is common practice by itself as well.)
But both do so only for the opening and not the endgame. That is rather weird.
What are possible explanations for this:
1. Definition was taken from fruit or a common ancestor.
2. Definition was inspired by fruit or a common ancestor.
3. Conventional chess wisdom dictates this must be the case. Every IM knows this.
4. Tuning was in fact done with 2 endgame parameters, but coincidently yielded the same value for both conditions.
5. Tuning started out with 2 parameters, yielded very similar values, and they were folded back into one.
This is hardly an essential similarity. But overall also not a big deal.
The values themselves, in [cP]:
Backward/Opening: 8 vs. ~12.7
Backward/OpeningOpen: 16 vs. ~27.3
Backward/Endgame: 10 vs. ~9.3
Thus the weights are different even after scaling to cP.
(The approximate values are rather similar, but that is dictated by the game.)
Code copy? No, no such claim was made in the report.
Formula copy? No.
Derivative? In the report this item comes back as one number in a comparison table.
This particular item was scored as 50% similar in the comparison report, not 100%.
50% is given for the presence of a similar evaluation terms in both programs but different details otherwise.
The same score as Phalanx, Pepito and Crafty. Only Faile was considered to be matching somewhat better.
An argument can be that the 50% should be lower for such terms.
Then the next exercise to do is to see what happens to the comparison if all 50%s are changed throughout the cross-table.
This can be expected from chess engines: backward pawns are explained in Kmoch part 1, chapter 1.
At source code level they are completely different, call it original. Even in the absense of Rybka's source, there is no way that Fruit's code can be compiled into Rybka's binary. The sources must be different due to the bitmap implementation highly optimized vs. 0x88-like coding and not caring about speed at all. This should not be news.
If we compare the structure/formula between the two programs:
Fruit's pattern:
if no friendly pawns behind or next to me (main condition):
if the square in front has any side's pawn, or is attacked by an opponent pawn:
--> is backward (case 1)
or
if pawn still on rank 2, and also there is an adjacent pawn on rank 4, and:
if any side's pawn in front on rank 3 or 4
--> is backward (case 2)
or if opponent pawn attacks rank 2, 3, or 4
--> is backward (case 3)
Rybka's pattern can't be reconstructed from the given code snippet alone, because
part of it comes from the masks in the lookup table. But some information is in there:
The main condition is likely the same. (But it corresponds to general chess knowledge.)
The condition for case 1 can be the very similar as well, except for ignoring own pawns.
The other conditions related to 2nd rank pawns seem rather arbitrary in fruit, and they don't seem to match in Rybka:
The condition for case 2 and 3 look rather different from judging by the structure of the expression alone.
So the patterns used by both programs appear to be essentially different.
There are some similarities still:
The score adjustment doesn't depend on any other attributes in both programs,
such as board location, piece attacks on the pawn, presence of opponent
rooks on the file if is open (or presence of opponent rooks at all).
The same score adjustment is given under all conditions, instead of tuning each condition in isolation.
Except that both programs take file status into account. (That is common practice by itself as well.)
But both do so only for the opening and not the endgame. That is rather weird.
What are possible explanations for this:
1. Definition was taken from fruit or a common ancestor.
2. Definition was inspired by fruit or a common ancestor.
3. Conventional chess wisdom dictates this must be the case. Every IM knows this.
4. Tuning was in fact done with 2 endgame parameters, but coincidently yielded the same value for both conditions.
5. Tuning started out with 2 parameters, yielded very similar values, and they were folded back into one.
This is hardly an essential similarity. But overall also not a big deal.
The values themselves, in [cP]:
Backward/Opening: 8 vs. ~12.7
Backward/OpeningOpen: 16 vs. ~27.3
Backward/Endgame: 10 vs. ~9.3
Thus the weights are different even after scaling to cP.
(The approximate values are rather similar, but that is dictated by the game.)
Code copy? No, no such claim was made in the report.
Formula copy? No.
Derivative? In the report this item comes back as one number in a comparison table.
This particular item was scored as 50% similar in the comparison report, not 100%.
50% is given for the presence of a similar evaluation terms in both programs but different details otherwise.
The same score as Phalanx, Pepito and Crafty. Only Faile was considered to be matching somewhat better.
An argument can be that the 50% should be lower for such terms.
Then the next exercise to do is to see what happens to the comparison if all 50%s are changed throughout the cross-table.
Hi Marcel,
Thanks for contributing a fair and balanced review.
Your first sentence: At chess application level, both pieces detect backward pawns and adjust score depending on open file and phase.
1. It's not proven that those 4 conditions are about backward pawn evaluation. When I put a breakpoint with IDA Pro and run the debugger, look into the values and registers it's all very inconclusive without a proper understanding of the Rybka's essentials. It's one of the complaints I have about the RE job of Zach and Mark. 2-3-4 conditions and then adding to score is what a chess program evaluation mainly is all about. In this case the Rybka investigators have proven the code in question is in EVAL due to the obvious MG/EG interpolation pattern but not that it is about backward pawn evaluation. Without a detailed description what happens at register level this remains an assumption.
2. Second complaint. When I read how Garwin describes the RE process of the Rybka investigators I am horrified. The absence and refusal of a detailed description at register level to proof backward pawn evaluation makes me shiver especially when I am told by Zach, "do the homework yourself". The refusal makes me doubt the whole RE process.
3. Third complaint. The Rybka investigators have never reported the result of using a program like BINDIFF or any other automatic tool designed to identify outright code copying. One can only presume that they tried those methods, the methods failed to return the results they expected, so they rejected the conclusions of the automatic tools and resorted to manual inspection.
4. Fourth complaint. The absence of the Abstraction-Filtration-Comparison test widely adopted by courts in software plagiarism cases. Common public concepts used in various other programs can't be used as evidence for code theft.
EDIT: Bindiff
Thanks for contributing a fair and balanced review.
Your first sentence: At chess application level, both pieces detect backward pawns and adjust score depending on open file and phase.
1. It's not proven that those 4 conditions are about backward pawn evaluation. When I put a breakpoint with IDA Pro and run the debugger, look into the values and registers it's all very inconclusive without a proper understanding of the Rybka's essentials. It's one of the complaints I have about the RE job of Zach and Mark. 2-3-4 conditions and then adding to score is what a chess program evaluation mainly is all about. In this case the Rybka investigators have proven the code in question is in EVAL due to the obvious MG/EG interpolation pattern but not that it is about backward pawn evaluation. Without a detailed description what happens at register level this remains an assumption.
2. Second complaint. When I read how Garwin describes the RE process of the Rybka investigators I am horrified. The absence and refusal of a detailed description at register level to proof backward pawn evaluation makes me shiver especially when I am told by Zach, "do the homework yourself". The refusal makes me doubt the whole RE process.
3. Third complaint. The Rybka investigators have never reported the result of using a program like BINDIFF or any other automatic tool designed to identify outright code copying. One can only presume that they tried those methods, the methods failed to return the results they expected, so they rejected the conclusions of the automatic tools and resorted to manual inspection.
4. Fourth complaint. The absence of the Abstraction-Filtration-Comparison test widely adopted by courts in software plagiarism cases. Common public concepts used in various other programs can't be used as evidence for code theft.
EDIT: Bindiff
I can add:
Moving up the abstraction levels takes us increasingly away from the code and towards the idea(s), opening up a grey scale of what is and what is not allowed (code is not, ideas are).
One senses that the attack team is aware of this problem, but fails to address it, except insofar as the ICGA (if not Hyatt) call the creation of Rybka "plagiarism" rather than "copyright infringing", but try to get around this by pointing at the volume of use of ideas/features. Volume of usage is yet another grey scale, how much is too much? Is it ok to use some but not lots (essentially the Hyatt defence that his PST usage is fair, but Vas's is not)? In addressing volume, there was no filtration on common usage, thus volume is exaggerated in this regard ( as well as others).
Moving up the abstraction levels takes us increasingly away from the code and towards the idea(s), opening up a grey scale of what is and what is not allowed (code is not, ideas are).
One senses that the attack team is aware of this problem, but fails to address it, except insofar as the ICGA (if not Hyatt) call the creation of Rybka "plagiarism" rather than "copyright infringing", but try to get around this by pointing at the volume of use of ideas/features. Volume of usage is yet another grey scale, how much is too much? Is it ok to use some but not lots (essentially the Hyatt defence that his PST usage is fair, but Vas's is not)? In addressing volume, there was no filtration on common usage, thus volume is exaggerated in this regard ( as well as others).
My personal thinking on this is that rule #2 is ultimately doomed, partly because of this issue you mention. Either that, or it will continue to get amended with more and more exceptions over the years. But I realize I'm not expressing a majority opinion among existing programmers.
I don't think such is the case yet for the Rybka 2.3.2a case (e.g. scoring backward pawns with 2 opening parameters but just 1 for the endgame is a rather arbitrary choice that I don't believe to be essential for the concept of backward pawns at all), but it will become an issue for the 'foreseeable' future when engines approach perfection (~4000 elo). My reasoning is that evaluation and search in the end are mathematical models trying to express the essence of a position within a minimum amount of CPU cycles. That is an optimization problem within a bounded solution space. When programs start to approach the limit of how far this tree search method can go, there must inevitably be convergence at the lower abstraction levels resulting in less room for individual expression. So ideas, formulas and code should come closer together, in more cases fusing. Filtration in A-F-C should then excuse all of those parts.
There is also a (Western) cultural aspect to this rule (or IP protection in general), where individual achievement and attribution is given a high value. In a way that is refreshing about the IP* movement: it dismisses all of that.
I don't think such is the case yet for the Rybka 2.3.2a case (e.g. scoring backward pawns with 2 opening parameters but just 1 for the endgame is a rather arbitrary choice that I don't believe to be essential for the concept of backward pawns at all), but it will become an issue for the 'foreseeable' future when engines approach perfection (~4000 elo). My reasoning is that evaluation and search in the end are mathematical models trying to express the essence of a position within a minimum amount of CPU cycles. That is an optimization problem within a bounded solution space. When programs start to approach the limit of how far this tree search method can go, there must inevitably be convergence at the lower abstraction levels resulting in less room for individual expression. So ideas, formulas and code should come closer together, in more cases fusing. Filtration in A-F-C should then excuse all of those parts.
There is also a (Western) cultural aspect to this rule (or IP protection in general), where individual achievement and attribution is given a high value. In a way that is refreshing about the IP* movement: it dismisses all of that.
If rule 2 is doomed, so is competition between chess programs as we know it. No one is going to be interested in a clone circus event. What, exactly, is the challenge when you copy a very strong engine and make a few minor changes to hopefully improve it, most likely without having any clue as to how it actually plays the game? If you guys think that clone wars will attract interest, I really think you are mistaken. I think it will be the beginning of the end... Can it be made better? The rule itself? Probably not. But there can be some additional requirements instated to at least make the clone complaints easier to resolve without the RE trials and tribulations we now have in the Rybka/Fruit case.
> If rule 2 is doomed, so is competition between chess programs as we know it. No one is going to be interested in a clone circus event.
You are presupposing again something that has not happened and is only one possible outcome. Consensus alone would probably rule you wrong. I would think that the obvious might for a change become the rule instead of abstractions that have no bases in reality ruling the day.
What does "doomed" mean? Rule 2 dies. NOT replaced with another rule that disallows copying. It is obvious that many of you have switched sides. You howled when strelka hit the street. You howled when ip* and friends hit the street. Now you discover that Rybka started as a copy of another program, and so you think copying is OK. In other words, if Rybka was copied, it was BAD. Now that Rybka was shown to be a copy itself, copying should be accepted.
Might think about that "change of heart" and WHY it happened...
Might think about that "change of heart" and WHY it happened...
What does "doomed" mean?
Rule 2 dies.
Either that or its interpretation shifts back to focus on 'avoiding near-identical entrants' and 'attribution', instead on punishing re-use by itself.
Rule 2 dies. NOT replaced with another rule that disallows copying.
That is not what 'doomed' means. That is what 'doomed-and-not-replaced-means', and nobody is saying that here, you're fabricating that.
Neanderthals were doomed. The Roman Empire was doomed. The Soviet Union was doomed. The betamax video standard was doomed.
And all were replaced.
Rule 2 dies.
Either that or its interpretation shifts back to focus on 'avoiding near-identical entrants' and 'attribution', instead on punishing re-use by itself.
Rule 2 dies. NOT replaced with another rule that disallows copying.
That is not what 'doomed' means. That is what 'doomed-and-not-replaced-means', and nobody is saying that here, you're fabricating that.
Neanderthals were doomed. The Roman Empire was doomed. The Soviet Union was doomed. The betamax video standard was doomed.
And all were replaced.
My interpretation is simple. "doomed" means it disappears. Doesn't mean "changed" or "modified"...
There is little doubt that most HERE want to see "anything is allowed." There is little doubt that most chess program authors do NOT want to see that.
There is little doubt that most HERE want to see "anything is allowed." There is little doubt that most chess program authors do NOT want to see that.
>There is little doubt that most HERE want to see "anything is allowed."
I don't want to see this.
It might be interesting to have such a rating list just to see what it says, but I'd be concerned about the differences between programs being so small that they are under the margin of error for testing.
The problem that I see is that rule #2 is open to too much interpretation for modern times. In the past I think its intuitive and "common sense" interpretation and agreement between the programmers was enough to cover it healthily without issue. Even 15 years ago when it was still the ICCA things were probably fine.
Times have changed though, there's like thousands of engines and tons of code everywhere and everyone has immediate access to it through the net. A lot of the chess engine stuff is so mapped out that it is hard to be absolutely original if you study modern chess programming. With something like bitboards when performing certain tasks there are only a few implementations that are intuitive and efficient and many of these are known.
I think if you were to have some kind of omniscient god eye and you could see how often code snippets are reused and found in various programs and where they first originated you'd be astonished.
I mean look at how standard the parts are, you need the protocol, winboard or UCI or both, and these have a particular specification. You need the rules of chess otherwise it's not a chess engine. You've got a board representation, of which there are only so many good ones, bitboards being the fastest.
The search as far as I know has got to use some form of minimax. It has to have a hash to store what it's already looked at. The evaluation has to have bonuses and penalties of some form.
There is still plenty of room for originality even with all of this, but I think that rule #2 is just not powerful enough to handle the matter properly. The current trend is going towards a norm, that is engines cannot expect to get a high rating unless they are at least fast and this usually means tailoring them to run on the most common computer systems: x86-32 and especially x86-64.
It's kind of like if you had a soap box derby with all the same parts. At first with races taking place in different regions you'd have a lot of variety, especially if the areas did not communicate with each other.
However add a ton of instant communication of ideas, sharing of schematics, and make an entire field out of it even for a decade and you would start to see a lot of cars looking the same as the norm is found for what works. Sure, occasionally there will be a big development that will change things substantially, but these will get fewer and fewer as time goes on. There would be plenty of accusations of design copying I'm sure, especially in cases where one or two minor changes makes a big difference. The one who discovered these changes wants credit but could instead be shunned for copying the rest of the design which is unfortunately required to make it work.
The only way through a dilemma like this is to adapt the rules to reflect the state of the competition. Make the rules more verbose, more specific, and in some cases more flexible.
Excellent comments reflecting and elaborating on Soren's CB observations.
Right from the outset of this debate-back at the beginning! While everyone else was arguing code - I was pointing to RULE NUMBER # 2. The first time I read it, I was struck at how vaguely defined it was. And even attempted to place it into historic perspective.
Right from the outset I saw that your entire argument hinged on how you were defining the term "original". You never even thought to challenge a colleague who stated that when in dialogue with you, back in 2001 had said, " It is sufficient to acknowledge that *everything* we do is built upon the work of others."
It was his second sentiment that you ended up latching on to,
"With the the Nalimov TBs, you only need to ask his permission, give credit where
credit is due and to say "thank you".
Leaving you to response with-
Out of everything you said, that last sentence leaves me the most "chilled".
IE, in my case, I got code from Eugene, he has access to my code in return.
We _both_ gain, as if he decides to write a new chess engine, he has samples
for lots of current ideas. Should I decide to write yet another TB generator,
I have samples from him for current ideas.
In the case of the commercial programs, _what_ does he get in return?
zilch...
That has _always_ been a bothersome point to me...
But, here we are discussing... and you still ignoring...that fundamental fact of what your colleague pointed out so succinctly in back in 2001!
And your focused concentration has but narrowed exclusively, this time around on to one particular commercial program, and its programmer!
Right from the outset I saw that your entire argument hinged on how you were defining the term "original". You never even thought to challenge a colleague who stated that when in dialogue with you, back in 2001 had said, " It is sufficient to acknowledge that *everything* we do is built upon the work of others."
It was his second sentiment that you ended up latching on to,
"With the the Nalimov TBs, you only need to ask his permission, give credit where
credit is due and to say "thank you".
Leaving you to response with-
Out of everything you said, that last sentence leaves me the most "chilled".
IE, in my case, I got code from Eugene, he has access to my code in return.
We _both_ gain, as if he decides to write a new chess engine, he has samples
for lots of current ideas. Should I decide to write yet another TB generator,
I have samples from him for current ideas.
In the case of the commercial programs, _what_ does he get in return?
zilch...
That has _always_ been a bothersome point to me...
But, here we are discussing... and you still ignoring...that fundamental fact of what your colleague pointed out so succinctly in back in 2001!
And your focused concentration has but narrowed exclusively, this time around on to one particular commercial program, and its programmer!
Yes, the programmer that copied the source code of another and claimed it was his original work. Nothing more, nothing less...
the programmer that copied the source code of another and claimed it was his original work.
Bob Hyatt, claiming that the Fruit bishop PST in Crafty was his own, original work.
Bob Hyatt, claiming that the Fruit bishop PST in Crafty was his own, original work.
And your argument against the commericial programmer continued against a colleagues response that perhaps Nalimov received free copies of programmers chess engines in exchange for his having provided Tablebases- your response-
"That's not the same thing at all. He provides source code, ideas, explanations
in the comments, etc. Giving him a copy of a commercial engine doesn't give
him anything like what he gave them. IE he gets a "black box" that he can
play chess against.
The swap sees extremely one-sided to me..."
"That's not the same thing at all. He provides source code, ideas, explanations
in the comments, etc. Giving him a copy of a commercial engine doesn't give
him anything like what he gave them. IE he gets a "black box" that he can
play chess against.
The swap sees extremely one-sided to me..."
And this is relevant how? You want to imply Vas was a target solely because he was a commercial programmer? SMK (Shredder) was untouchable for several years. Why was HE not targeted? Richard Lang certainly turned the CC world upside down for a few years with genius. Why not him? Or Morsch (Fritz)? That argument holds no merit regarding why this investigation was done. It was done because a large group of programmers, both commercial AND amateur asked the ICGA to investigate.
SMK, nor Fritz or any other commercial engine has occupied the number one spot in the years Rybka played!
So? They occupied #1 for several years earlier. What is magic about the late 2000's, that was not important in the late 90's or early 2000's???
5 straight years?
Deep thought for 10 straight years.
SMK for at least 3 years.
Is 5 years somehow a magic number that is more important than 3 or 10?
Junior/Shredder alternated for 6-7 years. > 5 years between them... Would seem that everyone would be just as jealous of that and go after both...
SMK for at least 3 years.
Is 5 years somehow a magic number that is more important than 3 or 10?
Junior/Shredder alternated for 6-7 years. > 5 years between them... Would seem that everyone would be just as jealous of that and go after both...
Was Deep Thought commercial? SMK for a least? ( Carnegie Mellon University= IBM's Deep Blue?) Stop groping Bob!
Depends on your definition of commercial. DT had a HUGE corporation behind it. SMK (Shredder), Ban (Junior), Lang (genius) and Morsch (Fritz) were certainly commercial. And all did quite well, if you ignore deep thought / deep blue... After 1997 Deep Thought / Blue vanished, leaving those at the top.
BTW DB was IBM, not CMU. CMU was deep thought.
BTW DB was IBM, not CMU. CMU was deep thought.
You are burying yourself here Bob!
What did IBM do for Nalimov?
What does Nalimov have to do with IBM? He works for MicroSoft...
Always has, or at least as long as I have known him, which goes back into the mid-90's...
Always has, or at least as long as I have known him, which goes back into the mid-90's...
You just tried to place Deep thought into the same mix as commercial programs! Above you complained that commercial programs gave nothing back to Nalimov! eh!
You are trying to make the point that being on top for 5 years is the issue. Deep Thought refutes that. If you want to make the statement that a commercial being on top for 5 years is the issue, then the other commercial programs I cited become a refutation... Either way, the statement is invalid.
But, what I am pointing out here is- that your sense of what is considered "original" morphs into a subjectively constricting definition when your focus is applied to Rybka. You seem to lack all objectivity when it comes to Rybka!
My views on Rybka are completely objective. Completely supported by all the evidence compiled over the past 3 years or so...
Nothing more, nothing less...
"original" means "not copied." Either literally copied or non-literally copied. Just not copied.
Nothing more, nothing less...
"original" means "not copied." Either literally copied or non-literally copied. Just not copied.
Bob, Do you think Deep Blue had the kind of hardware accessible to all competitors? Competing with IBM?
No, why?
I had a similar advantage using the big Crays.
I had a similar advantage using the big Crays.
There is no proof of Rybka having copied any Fruit code to date-only wild assertions based on hypothetically formulated data based upon a highly suspect and questionable methodology.
Just so we are on the same page here Bob!
You cannot fall back on obfuscating this argument with a lot of hypothetically assumed assertions -ergo , producing your own set of presumptions, and postulating your position based upon those presumptions, and then have the balls to present them, as otherwise, fact!? Not, here, please!
This is simply looking at your prior stated opinions- regarding them for there content and striking liberality in presenting you in a much more relaxed relationship between the concept of "originality" and its definition.
You cannot fall back on obfuscating this argument with a lot of hypothetically assumed assertions -ergo , producing your own set of presumptions, and postulating your position based upon those presumptions, and then have the balls to present them, as otherwise, fact!? Not, here, please!
This is simply looking at your prior stated opinions- regarding them for there content and striking liberality in presenting you in a much more relaxed relationship between the concept of "originality" and its definition.
The concept of originality has not changed in 40 years. So I do not understand your point...
But, Bob, this response from you in response to a colleague's stated apprehension in using someone else work! You're reply is poignant to this discussion-
It doesn't bother me for lots of reasons: (1) many programs running today
have bits and pieces of my code in them; (2) most of the algorithsm I use
today are from ideas produced by others, years ago.
I don't think that just because you have something to "probe" for you, or
you have a library function that does something _else_ for you, that you
should be concerned about originality. IE how is it different to use EGTBs
than to use a compiler somebody else wrote to compile your program?
That point is totally lost on me. IE I use xboard for my GUI. I didn't
write that. I use a mega-million game PGN collection. I didn't develop
those. I use the same Zobrist hashing everybody else does. I didn't develop
that. The list goes on and on and on...
It doesn't bother me for lots of reasons: (1) many programs running today
have bits and pieces of my code in them; (2) most of the algorithsm I use
today are from ideas produced by others, years ago.
I don't think that just because you have something to "probe" for you, or
you have a library function that does something _else_ for you, that you
should be concerned about originality. IE how is it different to use EGTBs
than to use a compiler somebody else wrote to compile your program?
That point is totally lost on me. IE I use xboard for my GUI. I didn't
write that. I use a mega-million game PGN collection. I didn't develop
those. I use the same Zobrist hashing everybody else does. I didn't develop
that. The list goes on and on and on...
Not related. We were talking about PURE originality which doesn't exist. We all share a common C compiler (either intel, gcc or microsoft so there are only 3 choices to choose from). We all use the stdio library (for C) so that we have access to printf and such and don't have to write our own system calls. Thinking about that, we all share one of two operating systems that do much for us. The point of my post you quoted is that things that are "generic" should not be an issue. And as programmers, we have all previously agreed that Nalimov egtb access code is generic, since for a given chess position, there is only one possible "answer". That is not true for search and evaluation or move generation code. And we don't allow those to be "shared"...
Hence the concept often termed "the chess engine". That part of the code that does the searching, the evaluation, the pruning, the reductions, etc. That has to be original to compete... An operating system person like myself might call that "the kernel". The main parts of the code. All the "attachments" (gui, book, egtbs, pgn reading/writing, and such) are not important in this context.
Hence the concept often termed "the chess engine". That part of the code that does the searching, the evaluation, the pruning, the reductions, etc. That has to be original to compete... An operating system person like myself might call that "the kernel". The main parts of the code. All the "attachments" (gui, book, egtbs, pgn reading/writing, and such) are not important in this context.
Yeah! Sure, Bob!
Thought you had actually reached the point where you were doing a little research and asking reasonable questions. Guess I was wrong. Again.
This may be too simple a proposition, but it seems to work in the legal world in regard to things like copyright infringement:
Perhaps Vas put the same code into Rybka as Fruit...unintentionally? I can't see that, but if the code IS the same and one came before the other, there is no way to tell if that same code sprang from the mind of Vas independently or not, correct? I think in the end, it all gets down to 'A' came before 'B'...both 'A' and 'B' are used to get to point 'C'. Therefore, 'B' should have to use a different method to go to the next step 'C' if he is fully to claim originality. That said, I think the 'rules' are a bit strict...but they do exist.
Perhaps Vas put the same code into Rybka as Fruit...unintentionally? I can't see that, but if the code IS the same and one came before the other, there is no way to tell if that same code sprang from the mind of Vas independently or not, correct? I think in the end, it all gets down to 'A' came before 'B'...both 'A' and 'B' are used to get to point 'C'. Therefore, 'B' should have to use a different method to go to the next step 'C' if he is fully to claim originality. That said, I think the 'rules' are a bit strict...but they do exist.
The problem, as any programmer can explain, is that for any particular programming idea, there are a really large number of different ways to write code that does exactly the same thing. A good example is in computer science programming assignments. I give some pretty simple programming assignments in my assembly language programming course, yet no two programs ever look the same. Ditto for assignments I give in my computer architecture course, my operating system course, multiple assignments in my network programming course. Even though all the programs have the same basic "requirements", a stipulated set of input requirements, output requirements, and computational requirements, students do not come up with code that looks the same. There are even software plagiarism programs that universities use to detect copied assignments, because of this wide variation in how to express an idea in a programming language...
Too bad you can't find any copied code in released Rybkas, or this would be quite damning!
There is more than enough...
If rule 2 is doomed, so is competition between chess programs as we know it.
Some observe that the shift in competition has already happened.
What, exactly, is the challenge when you copy a very strong engine and make a few minor changes to hopefully improve it, most likely without having any clue as to how it actually plays the game?
Rethinking rule #2 doesn't imply accepting hordes of near-identical entrants. I don't know why such FUD needs to come up whenever the current formulation of the rule is discussed. It isn't a law of nature, just a human artifact. If you're implying with this sentiment that e.g. rybka and ip* fall in this 'without-a-clue' category, then I must disagree: Those authors understand very well what makes their engines tick.
Some observe that the shift in competition has already happened.
What, exactly, is the challenge when you copy a very strong engine and make a few minor changes to hopefully improve it, most likely without having any clue as to how it actually plays the game?
Rethinking rule #2 doesn't imply accepting hordes of near-identical entrants. I don't know why such FUD needs to come up whenever the current formulation of the rule is discussed. It isn't a law of nature, just a human artifact. If you're implying with this sentiment that e.g. rybka and ip* fall in this 'without-a-clue' category, then I must disagree: Those authors understand very well what makes their engines tick.
And they understand very well the "rules of competition?"
But MOST of the cloning from the past 10-15 years did NOT show authors that knew what the engines did, just someone that could either use a text editor when copying source, or a hex editor when copying binary.
If rule 2 is "doomed" that would certainly imply its demise. I don't think that will happen, else, as I said, competition is doomed as well.
But MOST of the cloning from the past 10-15 years did NOT show authors that knew what the engines did, just someone that could either use a text editor when copying source, or a hex editor when copying binary.
If rule 2 is "doomed" that would certainly imply its demise. I don't think that will happen, else, as I said, competition is doomed as well.
Powered by mwForum 2.27.4 © 1999-2012 Markus Wichitill