Tom Barrister wrote:Mr. Levy's proposal is going to face several major hurdles as far as where the line is drawn. Pardon me if this rambles a bit, repeats itself in places, or otherwise runs longer than it needs to.
1) What is the definition of cloned/stolen/derived/etc. code? Does it need to be verbatim? The same basic thing (i.e. Fruit rewritten for bitboards)? Generally the same?
This has to be the starting point. I can see two issues. (1) was something copied, and not cited? How much is too much? (2) was something copied and cited properly. How much is too much? Two different questions, two different answers. And both will take some thought to quantify.
2) How much "stolen code" constitutes a punishable offense? If, for example, a programmer took a shortcut and incorporated 12 lines of GPL-protected code, is it okay? How about 40 lines? 100 lines? 40%?
3) Are you going to punish the person/company/team for all of its output, or will punishment be confined to the engines that were proven to be in violation? For example, assume that Rybka 1.0 was Fruit. Assume Rybka 2.x was determined to be similar enough to Fruit to meet disqualification. Now assume that Rybka 3.x was determined to be completely rewritten from scratch, and it has nothing substantial to do with Fruit or any other GPL or private source. Do you strip Mr. Rajlich of all of his titles, because he cheated? Or do you just strip those won by Rybka 2 and earlier? Is the cheater banned in the future, even if he/she produces a totally "clean" engine hereafter?
Again, good questions. with lots of precedents that are contradictory. I have seen people banned for life from sporting competitions, or banned for a year, or just banned for an event...
Then there's the problem of fairness to all. If Mr. Rajlich is accused and has to produce source to the tribunal, shouldn't everybody whose engine is closed-source (commercial or private) also have to produce their source. Who's to say that the authors of commercial software such as Naum, Shredder, Fritz, Hiarcs, etc., as well as those who have private engines haven't also stolen code from GPL-protected source or from decompiled commercial engines? How many helped themselves to the Robbolito/Ippolit code, which is assumed to be Rybka?
A whole new can of worms, but one that will, of necessity, have to be opened at some point. And opening that can of worms creates a really large "project" to compare all sources. Of course at present it is even harder having to resort to decompilation.
Then there's the problem of where the line is drawn as to what needs to be revealed. If we're going to require Mr. Rajlich to reveal Rybka 1.0, why not all the other versions, as well? Since it's not fair to single out Mr. Rajlich, we need to line up all the other authors of closed-source engines and require them to all reveal the source of every version that they produced, as well. What happens if somebody refuses to reveal their source (as almost all of them will).
When we have all of the countless versions available, the next step is to wade through all of the code for each and decide what's in violation of what. Is this "snippet" a violation of GPL? Is it a violation of somebody's private source code? Who owns what? Who's going to do all of the work?
In short, the tribunal will first have to determine:
1) What is considered a violation.
2) How severe the punishment is.
3) Who has to participate, and what the penalty is for non-participation.
4) Who's going to do all of the necessary work.
Then there's another problem. What about authors who may have used what they thought was open source code but which turned out to actually be "pirated" from somebody else. Even though they may have acted in good faith, are they also guilty of being in violation?
There is legal precedent there. One necessary element of a criminal act is "intent". If someone sells you something you have no reason to suspect as stolen, and you are caught, the property will be reclaimed and you are stuck with only the recourse of going after the person that sold it to you. If a reasonable person would suspect it were stolen, such as (say) a 50" LED TV sold out of the back of a truck for $200 USD, then you could be prosecuted for receiving stolen property.
Clearly, with current rules, this is not an issue. Houdini as an example. It certainly comes from robo* and is instantly disqualified from any ICGA event. Robo* is suspected to have come from Rybka, and at the moment, would not be allowed to participate either. Now we are back to the fruit/rybka issue, which is yet to be decided.
There's no way to cut to the chase here. If somebody is required to reveal closed-source, they're going to demand that everybody else needs to, as well. If Mr. Rajlich has all titles stripped and is banned from future competition, and it turns out that Rybka 3.x and 4.x are "clean", then there will be complaints about punishment being too severe. Then there''s the dodging around that will happen to punished offenders. They'll assign their software to beards, and "clean" versions will come out under new "management", and possibly under new engine-names, demanding to be included....while the original author could still actually be doing the writing.
It's a mess, because there's no way you're going to get one author to reveal the source to his commercial and/or private engine, without that author demanding that everybody else needs to do the same thing; there's no way you're going to get a dozen authors to all agree to reveal the source to each of their versions; and if that's managed, there's no way you're going to find enough people to wade through those hundreds of versions, examine the source, and determine what's a violation and what isn't.
It wouldn't surprise me if, assuming you could get the source to every commercial engine in existence, that every last one of them contained at least some source code that was in violation of the GPL or taken from somebody else without permission. Nor would it surprise me if some of them were actually "clean".
The point is that it's too unwieldy, in my opinion, to do as Mr. Levy suggests, while being fair to everybody.
That said, it would be a great gesture if Mr. Rajlich voluntarily revealed the source to Rybka 1.0 so that he could prove that it wasn't taken directly/indirectly from Fruit. I'm not holding my breath waiting for that to happen.