Alessandro Scotti wrote:Bill Rogers wrote:The answer to your question is made perfectly clear with the first line of the quote. "Each program must be an original piece of work".
OK, that's what I thought upon reading that line.
Bill Rogers wrote:That means if you have cloned someone elses work you can not play and if it is discovered during the tournement that your program is a clone you will be kicked out of the tournement.
I agree with this, but I can't read that so clearly in the rule text, so it leaves room for cloners to fight back!
I don't think that the definition helps.
For instance, every program uses either alpha-beta or MTD(f) in one form or another and the people using those algorithms did not invent them.
Are the programs therefore original?
I think we would all agree that the answer is a clear 'YES!'.
So what (then) does 'original' mean?
To clone something is to take without permission and without credit.
For some kinds of licenses, only credit is necessary (e.g. Berkeley style license with advertizing clause).
For other kinds of license, you must make the program open source if you use the code (e.g. GPL).
For every program on earth, the *ideas* are NOT protected. The fundamental algorithms that underly the processes (e.g. alpha-beta) do not have copyright protection {although an instance of the algorithm does have copyright protection -- but this does not protect it from a rewrite}.
You can protect fundamental algorithms with patent (distateful to me).
At any rate, I think that the thing desired is to prevent theft of intellectual property. That would mean:
0. Wholesale use of a program without permission (e.g. Voyager, Old Blind Dog, etc.)
1. Use of code that is altered in only a minor way without permission (Cut and paste into a program of the same type). This is hard to manage, but on rare occasions it would be possible
2. Use of a patented algorithm would certainly also be a violation (despite my disdain for the concept)
I do not think that this is an easy problem to settle.
Consider pvs chess search. There are only so many ways to outline a PVS search, so it is going to look about the same in every program. How will we know if someone cut and pasted a pvs search and then reworked it a bit for their program verses writing it from first principles? Answer: It will be very, very difficult to know [read: 'basically impossible']. The only cheaters that will be easy to catch are the really big cheaters (category 0 above).
Part of the morass that we have mired ourselves into is the result of not programming in a literate way. And by that I mean in a way that emulates how we would write a research paper. If we should put down the sources of where we found the information (e.g. the chess paper that contained the algorithm, the sources studied, etc.) then I think it would alleviate the problem to a large degree. Even in the case where we study someone's code I think in general they will be flattered if we credit them and insulted if we steal from them. It's just common sense.
I don't have any answers for the problem, unfortunately. As long as there are people willing to do things in an underhanded way instead of above-board, there will always be problems.