Adam Hair wrote:Sven Schüle wrote:Dirt wrote:Desperado wrote:I agree with you fully that formulars are not copyrightable, and i add that reversed engineered ideas,formulas are a matter of interpretation, opinion.
It is not possible to give 100% centainty that what someone interprets is inteded to be the point.
Even if an individual formula isn't copyrightable, if you use 100 formulas and 99 are the same as in another program, that probably
is a violation.
If it were as you say, then where would be the borderline? At 50? 10? 90? Why is using one non-copyrightable item no violation but using N+1 non-copyrightable items a copyright violation for some N?
Sounds wrong to me.
Hi Sven,
I am trying (and failing) to understand your response above. Let me say that I understand and agree with your concepts of evaluation criteria and evaluation logic - i.e. features and formulas. And, though I am not a programmer, I can see how the choices of evaluation criteria may dictate the formulas used, and also see how the efficient implementation of those formulas may dictate the code used.
Sven Schüle wrote:The bottom line is: it has been stated that the ICGA investigation had provided a proof that Vas had copied evaluation code from Fruit 2.1 into R1beta. But as some engine programmers like Uri, Miguel, myself and some others have pointed out various times in various discussions, what actually happened was only a heavy but legal reuse of ideas and algorithms.
I have seen stated more than once that Fruit contained little that was new. So, I would think that the reuse of individual ideas (evaluation criteria) and algorithms (formulas) from Fruit is legal. Fabian obviously did that in creating Fruit.
However, do you not think that Fabian created an original work? There are not new ideas in the evaluation, yet his selection of the evaluation criteria is unique, at least among the engines from 2005 whose code can be studied (there has been no compelling evidence presented that shows that engines of a certain strength must substantially share common evaluation criteria and no one has come forth with source code from an engine of equivalent strength from that period to show multiple occurrances of common ideas). It is not unlike works of literature or film, where individual ideas may not be unique (but definitely legal to use) but the collection of those ideas determines a unique work.
The consensus is that Rybka heavily reused ideas from Fruit. The point of contention is whether or not the heavy reuse constitutes plagiarism. From all that I have read, there does reach a point where the substantial overlap of ideas between two works indicates plagiarism. It is not a well-defined point, but it does seem to exist in most jurisdictions around the world. I'm not sure why you do not recognize the existence of such a point (or, to be more precise, a not-so-well-defined limit, beyond which denotes plagiarism). My question is: Did Vas exceed that limit? And: What is the general consensus of that limit among the authors?
Hi Adam,
let me first say that I highly appreciate the way you are entering this discussion. It is much more pleasant to talk like this than to exchange tons of misunderstandings and obfuscations of the topic.
I also would like to make clear that this reply to your post is of course not only directed towards you but can serve as a base for a general, civilized discussion in this forum.
I do not agree to defining a heavy overlap of ideas and concepts as "plagiarism" or even "copyright violation". There is only one thing that can be protected in our context (but not necessarily by 100%), and that is
code. Giving up that strict rule would bring us into a big, dark cloud, it would mean that it were fully undecidable for an individual author whether he is allowed to use a given concept or not.
My point in this discussion is that a chess engine programmer has the free and unrestricted choice not only about the set of evaluation criteria, like:
Code: Select all
- "knight mobility",
- "rook on 7th rank",
- "unstoppable passed pawn",
- "trapped bishop",
but also about the concepts how to assign values for each of these criteria (I call it "formulas" although not with a mathematical meaning, as opposed to what Bob writes who constantly misunderstands me), like these:
Code: Select all
- "assign bonus linear in number of pseudo-legal knight moves",
- "assign bonus to a rook on the 7th rank when the enemy king is on the 8th rank, or there is an enemy pawn on the 7th rank",
- "assign constant high bonus if A has a passed pawn that can't be prevented by B from promoting because B has only king+pawns left and either the king of B is outside the pawn square of the passed pawn or the king of A sufficiently guards his passed pawn to enforce promotion",
- "assign a penalty to a bishop that is trapped by a pawn configuration that matches one of these patterns, or any of its symmetric variants: wBa7/bPb6, wBb8/bPc7, wBa6/bPb5".
Here is my proof, kind of a "proof by contradiction" (although not exactly formal):
If my thesis (a programmer has the unrestricted choices that I described above) were not true then any engine that uses any single one of the concepts above in exactly the same way would already violate copyright. Only one match would already blow it up. Virtually all chess engines in the world would be illegal. Since that would obviously be a nonsensical application of rules (a law that makes all entities illegal is nonsense) it can be considered as impossible that my thesis above is false.
Given that, I can finally answer your question whether I think that Vas has exceeded the limit regarding the amount of reuse of concepts. From my side it is a clear "no", for the following reasons (focussing on the evaluation which is clearly the main part of the accusations):
1) There has been no clear definition in the past what "contains code derived from code of another program" should mean other than copying and (possibly) adapting foreign code without substantial changes, and still there is none today. Therefore the only level of orientation for programmers is the "code reuse" level, no rule excludes reuse of logical concepts.
2) I already explained my opinion that reusing N+1 concepts cannot be "forbidden" if reusing N concepts is "allowed". It can be either fully allowed or fully forbidden. Defining an arbitrary threshold is not comprehensible for anyone. As an example to emphasize this, take the summarizing table "Accumulation of scores" on page 53 of Mark Watkins' "EVAL_COMP.pdf" report. Why should it make sense to say that a "feature overlap" of about 41%-44% between evaluation functions of two engines (Crafty-Pepito, RESP-EX5b, Phalanx-Pepito) is "allowed" but about 74% (Fruit2.1-R1beta) "exceeds the limit"? How should a programmer know that the value of this "limit" has arbitrarily been set to something >44% but <74%, and more important: how should he/she measure it for his program?
3) Obviously relying on the freedom given by 1) and 2), Vas has used many evaluation concepts that are also used in Fruit (but in some other engines, too), has implemented these concepts in mostly straightforward manner using bitboards for those parts that have to access the board, and has used very different evaluation parameters resulting from heavy tuning, which caused his evaluation function to behave sufficiently different from the one of Fruit.
4) While it is certainly clear that the overall playing strength of Fruit 2.1 was not only a result of a strong evaluation but also of a decent search and of a very clear programming style leading to virtually bug-free code, we must consider the fact that the choice of evaluation criteria and concepts in Fruit 2.1 is "somehow stronger" than it was in most other engines at that time, and that until today there are certainly only few other engines that have defined both a significantly stronger and substantially different set of such eval concepts. That means: removing a substantial part of these concepts will most certainly make an engine weaker. I think we can view this as if we would remove NullMove, LMR, PVS, or KillerHeuristic from the search. The strongest engines will most probably not work well enough without one of these.
What we should not forget is that the real accusations that were brought up are on a very different level than just "heavy reuse of evaluation concepts". Bob and others have stated that it were "proven" that huge amounts of code were copied "literally" from Fruit into Rybka1 beta. With the current discussion I am making another attempt to show that this is plain wrong.
I have given my statements about the "reuse of concepts" issue above, and if the final outcome of our civilized discussion would happen to be that there were indeed a certain limit for such "heavy reuse of concepts" in computer chess which was already present and known years ago (let's say, <= 2005), and which were that limit, and how should an individual author be able to decide whether that limit is exceeded or not in his case, then I might agree to that. Currently everyone will understand that I highly doubt that, though.
Sven