Print 30 comment(s) - last by hanmen.. on Jul 8 at 2:40 AM

Rybka, a four-time world computer chess champion, has been branded a cheater by the sport's governing body.  (Source: Vasik Rajlich)

Author Vasik Rajlich and his teammates allegedly enhanced the engine's performance by injecting it with uncredited source code from other engines. The cheating was reportedly noticed when Rybka began making similar moves to the other engines.  (Source: Vasik Rajlich)

Vasik Rajlich currently resides with his wife Iweta, a female chess Grandmaster, in Poland.  (Source: Vasik Rajlich)
Code theft -- the performance enhancing drug of the future?

From Barry Bonds to Lance Armstrong, many of the sporting world's legendary figures have been discolored by "cheating" scandals, in which they were accused of taking performance enhancing drugs (PEDs).  The typical response has always been the same -- deny, deny, deny.  

Now one of the world's first computer athletes is facing a scandal that is unfolding in a very similar fashion.

An organization known as the International Computer Games Association (ICGA), which pits computers against each other in tournaments of Chess, Go, and other games, has found [press release] by a 5-0 vote that one of its grand champions was a cheater.  The vote follows a lengthy investigation that included reverse-engineering of source code, to prove the digital "doping".  

Much as the NCAA has continually waged a war against cheaters in the world of United States collegiate sports or Major League Baseball has been forced to contend with its own cheating scandal, the ICGA wiped the record books clean for the World Computer Chess Championship from 2007 to 2010, bumping the runner-up(s) to first place.

The decision came after it was found that the winning engine, Rybka, illegally enhanced its performance by using code from two other engines -- Crafty and Fruit -- without permission.

Fruit was the runner up for the title in 2005 and its code was published under the Gnu Public License.  The panel presiding over the case concluded that Rybka could legally have made use of the code in question given the GPL, but would have had to have credited it -- which it did not.  Thus, it was Rybka's refusal to share the spotlight that proved its downfall.

The copied code was first noticed when some noted that Rybka's was performing a series of moves eerily similar to the Crafty and Fruit.

As a result of the code lifting, Rybka is "banned for life" from the tournament, as is its creator Vasik Rajlich, as per a sentence passed down by a 34-member arbitration panel.

Worse yet, Mr. Rajlich -- an international master level human chess player -- is expected to give back his prize money.  From this source [PDF] we know that he won €1,000 ($1,593 USD) for his 2010 victory -- it is unclear how much his winnings from the other three titles total.

Mr. Rajlich denied the charges, but refused to fully participate or defend himself in the investigation.  He merely wrote in a short email:

Rybkahas does not "include game-playing code written by others", aside from standard exceptions which wouldn't count as 'game-playing'.

The vague phrase "derived from game-playing code written by others" also does not in my view apply to Rybka.

Mr. Rajlich is a graduate of the Massachusetts Institute of Technology (MIT) and currently resides in Warsaw, Poland.  Iweta Rajlich, Mr. Rajlich's wife, is regarded as one of the world's top female chess players, to this day.

It is unclear how the decision will effect other non-ICGA victories of Rybka.  For example in 2007 in a match entitled "Everything but a pawn", Rybka took home €11,000 ($15,930 USD) in a fan-sponsored prize for defeating human chess grand master Jaan Ehlvest. 

Rybka is driven by a cluster of computers that contains "one w5580, two Skulltrails, another Harpertown oct, and five i7-920s, for a total of 52 cores" in 2009.  More details on the engine and its 2009 victory can be read here.

Comments     Threshold

This article is over a month old, voting and posting comments is disabled

By RedemptionAD on 7/1/2011 1:29:08 PM , Rating: 5
I have yet to meet a programmer that didn't copy and paste code from somewhere else. Thats how compatability is ensured with alot of programs, common interface with common code with a slightly different perspective taken to make it a little different. It's like copyrighting the color blue or salt. It's just a different recipe that it takes to make a good program.

RE: Coders
By kraeper on 7/1/2011 2:16:18 PM , Rating: 4
Apparently the only real problem here was not citing his sources.

I really only have one word for this whole article: Nerds.

RE: Coders
By RedemptionAD on 7/1/2011 2:25:14 PM , Rating: 2
The people who's college work I did for them didn't cite their source either. I didn't ask for credit though, just money. ;)

RE: Coders
By Totally on 7/2/2011 9:07:16 AM , Rating: 5
Well, that's cheating. Just because [insert lames reason] doesn't mean okay.

RE: Coders
By RedemptionAD on 7/5/2011 12:39:22 PM , Rating: 1
1. I'm not trying to justify it, but one of them was my girlfriend of 18 months total. And 2. it also taught me how much people at college actually cheat their way through. 3. I could probably test out of a Masters/Phd in about a dozen fields now as a result.

RE: Coders
By Mitch101 on 7/1/2011 5:14:09 PM , Rating: 2
So true my favorite commands in programming are cut and paste.

I wrote some original code once in Kixstart to redirect clients printers to the new server hosting them. The trick was I had to build an array because the registry keys you needed where under a sub key for whatever the client/support named the printer on the desktop. They would be under something like Steves_Printer/HPLaserjet4 and the next guy cubicle4/HPLaserjet4. I gave a copy to a friend and the guy he worked with took it and got published in a magazine for it. I was peeved at first but then felt good that my code was good enough to get published even if someone else took the credit for it.

RE: Coders
By vol7ron on 7/2/2011 1:35:54 PM , Rating: 4
I'd feel good and be "peeved."

People have this false notion of what money is. Money is time, resources, survival. What if you were some kid from the streets, just getting by? Earning money could mean everything and in many cases it's the difference between an honest living and crime.

You spent your time solving a problem and someone else stole your time. It's no different from that person assigning you the job and not paying you. Life may not be fair, but in the past people would call to arms over such an occurrence.

RE: Coders
By someguy123 on 7/1/2011 6:16:07 PM , Rating: 2
I think the issue here is that that the chess computers are meant to be proprietary and compete with each other, not be some universally compatible chess playing platform.

It seems he copy-pasted some routines from competing computers and not just some underlying infrastructure, which caused Rybka to move in patterns similar to other computers.

RE: Coders
By drycrust3 on 7/2/2011 11:53:34 AM , Rating: 3
It seems he copy-pasted some routines from competing computers

As I understand the guy's defence, he said he didn't do that. What is frustrating here is the panel that determined the guy's guilt just said "could", they didn't say "did". That wouldn't hold up in a court of law, so it shouldn't hold up here.
Just because one computer makes the same moves in particular circumstances as another doesn't mean that the program was copied, it just means that the logic is similar. Since a game is involved, it is probably entirely understandable that the logic between programs is similar, even though the programmers involved may have had absolutely nothing to do with each other. What would be more telling is if this guy's computer made the same mistakes as the other programs did, because that would point to the same flaws in the logic, which in theory should be unique to the programmer. The fact that this guy's computer won the competition meant it made less mistakes than the other peoples' computers.

RE: Coders
By niva on 7/5/2011 3:46:28 PM , Rating: 2
Well he can prove his innocence very easily but releasing the source code to the body which just accused him of cheating.

The eerly similar moves is a bogus theory. In chess many times the moves are similar. Given certain position there are some obvious moves. Certain patterns are preferred over others, and there are obvious blunders. If this computer defeated the other ones clearly it chose a different variation of the moves at some point. I'm not even sure how they went about with their testing but the whole thing sounds very bogus to me.

PS. The dude's wife is a hot chess assassin, awesome!

RE: Coders
By vol7ron on 7/2/2011 1:31:13 PM , Rating: 2
Copy/pasting code has nothing to do with compatibility. The only thing it ensures is time-saving and laziness. Regardless how easy something may be, you took someone else's coding time and added it to your billable hours. The only real benefit of reusable code is that there is a broader audience, so it helps to identify/patch bugs. But I agree, coders/scripters do reuse and in many cases (for general code) it's stupid not to.

In this case, this isn't pulling some simple JavaScript from somewhere. This isn't copyrighting the color "blue" or "salt" - it isn't so general. Instead, this is an advanced algorithm, which takes a lot of time and requires an advanced skill-set, or a higher level of thinking. Only a limited set of people would be able to wrap their head around such algorithms. So, copying/pasting, or reverse-engineering is stealing someone's intellectual property. In my opinion, if you ever have to reverse-engineer something, it means you're not smart enough to come up with it yourself; thus, it's stealing.

RE: Coders
By hanmen on 7/8/2011 2:40:55 AM , Rating: 2
welcome to our online store site:
looking forward to your visiting,hope to meet your need all cheap but good quality,best

sevice ,free shipping.
welcome to our online store site:
looking forward to your visiting,hope to meet your need all cheap but good quality,best

sevice ,free shipping.
welcome to our online store site:
looking forward to your visiting,hope to meet your need all cheap but good quality,best

sevice ,free shipping.
welcome to our online store site:
looking forward to your visiting,hope to meet your need all cheap but good quality,best

sevice ,free shipping.

Plagerism in code
By adiposity on 7/2/2011 3:14:28 PM , Rating: 2
After looking at some of the code comparisons it does seem clear he used the same algorithms. He probably even learned the algorithms from the other sources (which were published openly). In some cases he even used the same variable names.

IMO, this does not constitute plagiarism. Even though he might very well have started with their code and modified it, you cannot prove that he did.

If I see (in someone else's code):

for (a=0; a<10; a++) myVariableName += 2;

and from that decide to use (in my own code)

while (a < 10) { myVariableName += 2; a++; }

You might conclude that I "copied" code. And maybe I did, but you can't prove it.

As for copying an algorithm, if a particular algorithm has been designed and works for a certain concept, using it is just common sense, not what I would call plagiarism. There are 1000s of software algorithms that are common place because that is the only way to efficiently write code--reuse useful algorithms.

If you take a function, paste it into your code, and call the function without examining how it works, that might be what I would call source code plagiarism. But if you have a very similar function, that uses the same basic concept, and might have been derived from another piece of code, the charges of plagiarism are harder to swallow.

Does every algorithm have to be 100% free of pre-existing ideas? In my opinion, his code is different enough to not be charged with plagiarism.

RE: Plagerism in code
By ToolmakerSteve on 7/3/2011 9:34:36 PM , Rating: 5
For complex algorithms such as found in chess programs, if you looked at other software sources while designing your own, it would be nearly impossible not to have taken ideas from it, that are due credit. If you don't give the credit, you have plagiarized. I have no doubt that he plagiarized, but convinced himself that if he made enough changes, then it wasn't plagiarism. Not correct. Neither legally, nor morally. It doesn't matter how many changes you make, if you wouldn't have come up with the end result on your own, and you don't give credit, then you have plagiarized. Importantly, we aren't talking about mere supporting details, where it would be silly not to use existing sources (and no one would take offense). We are talking about core features of the chess play. Without knowing anything about chess, or even about creating software, there is a simple thought experiment to understand how experts could decide whether it was plagiarism: compare the moves that different chess programs make in different situations. Where multiple chess programs "do the same thing" as each other, then that is "common ground", for whatever reason. But if TWO programs are found to do the same series of moves, in cases where OTHER programs behave differently, then there is something in common between the two. If this is seen in enough different situations, the odds of it being mere coincidence become astronomical. Experts in computer chess playing algorithms can judge what similarities could conceivably be coincidental.

RE: Plagerism in code
By ToolmakerSteve on 7/3/2011 9:50:20 PM , Rating: 2
The other critical detail, that must not be forgotten: when Rybka was first released, it behaved a certain way. A year after Fruit was open sourced, an upgraded Rybka behaved identical to Fruit, in certain situations. If Rajlich was independently improving his product to be competitive against Fruit, one would expect Rybka to have improved in these areas, but to behave a bit differently.

RE: Plagerism in code
By ToolmakerSteve on 7/3/2011 10:01:52 PM , Rating: 2
And here is the link to copy of the letter from the 14 chess software experts:

And in case that goes dead, here are links that it contained, to details of the evidence:

RE: Plagerism in code
By ToolmakerSteve on 7/3/2011 10:35:45 PM , Rating: 3
And here is one of the details, from examination of the "Material" page from the evidence link:
"It is interesting to note, however, that only 25 of the values are ever possible. Rybka could have simply stored the 0-25 phase without extrapolating to a larger range. Since the phase is used to index a table (see below), this means that there are 40*2 entries which are never accessed in this table. In my opinion, this makes it clear that the original code wasn't understood fully.

NOTE: This won't mean anything to YOU, unless you are an expert programmer. What it means to ME is that there is absolutely no way ANY programmer, regardless of skill level, would have written the code that Rajlich wrote, EXCEPT as a translation of code he didn't really understand. If he were writing ORIGINAL code to index into a table, the table would have only had 26 entries (0..25). If I were on a jury, this one fact alone would be enough for me to convict him of plagiarism. (Not that I would do so, on a single fact. I'm just stressing how strongly I view this particular detail.)

RE: Plagerism in code
By ToolmakerSteve on 7/3/2011 10:47:57 PM , Rating: 2
To make the point clearer: it isn't that there was a table, with some unused locations at the end of it. What is seen, is a table with addresses 0 thru 64, with the 0 thru 26 valid entries stretched across it, such that #26 ends up in #64. This doesn't happen by accident. Indeed, it doesn't happen at all, when programmers write programs. I have no doubt as to how this happened: it is an optimization of the Fruit implementation (converting a formula to a lookup table), without understanding what the original formula was doing. If Rajlich had understood the original formula, he would have removed the constant multiplier. But since he did not understand it, he did a brute force translation of the formula into this larger table, even though what he ended up with is strikingly peculiar.

What really happened.
By LockeChess on 7/2/2011 5:16:09 AM , Rating: 2
If you cannot beat your opponent at chess some will do anything to get their hands on the World Title. Turns out that this was a completely flawed witch-hunt (which any court would tell you).
The plaintiffs were judge, jury and executioners and not one legal expert was part of the panel
(or consulted). Some panelists are now asking for their names to be removed, only 14 of the 34 actually voted, and many of those who did vote are Rybka's direct competitors and will now receive World Champion titles as a result.

RE: What really happened.
By imaheadcase on 7/2/2011 9:38:34 AM , Rating: 2
Crafty, not sure Fruit, is open source, widely available for free. Dr. Robert Hyatt works on it constantly, competes in tournaments all the time.

To say it was "for the world title to accuse him" is bollucks, they do it for fun/knowledge period.

Most the programs work in different ways, so its easily noticed. Just like human chess players, computers use pretty common moves they do over and over, can be repeated in lots of games. Crafty uses Chess tables that it calls from for common openings/end games. SO when it starts playing super fast without "thinking" of moves, its just called from a database of games.

RE: What really happened.
By drycrust3 on 7/2/2011 3:08:38 PM , Rating: 3
and many of those who did vote are Rybka's direct competitors and will now receive World Champion titles as a result.

To be completely fair those who could have been seen as being advantaged by this should have abstained. This whole thing smacks more of jealousy than of cheating.

By frobizzle on 7/1/2011 12:32:06 PM , Rating: 1
And in other Earth-shattering news, scientists predict night will follow day for an indefinite amount of time.

By geddarkstorm on 7/1/2011 1:58:41 PM , Rating: 4
What? Really? Frick... I better update my computer models.

By StealthX32 on 7/1/2011 12:48:47 PM , Rating: 2
I know you were being facetious labeling this as "doping", but doping really does happen in championship chess...,15...

And in darts.

RE: Mislabeling...
By JasonMick (blog) on 7/1/2011 1:00:01 PM , Rating: 2
I know you were being facetious labeling this as "doping", but doping really does happen in championship chess..

The labeling is meant to be a little tongue in cheek, but let's face it, the term is colloquialism that has been arbitrarily defined by the sporting community, the likes of which has not yet been defined by the artificial intelligence sporting community.

Thus you could legitimately argue that "injections" (inclusion) of stolen source was an example of "doping" in the world of artificial intelligence.

By MrBlastman on 7/1/2011 12:51:05 PM , Rating: 3
It looks like they juts kicked him in his bits. I guess he should have spent more time letting his wife play with his pawn instead of trying to promote it through a sleight of his own hand.

He needs to get a grip.

By Spookster on 7/1/2011 4:38:00 PM , Rating: 2
So what happens when the computer gets roid rage? And does the computers nuts shrivel up like berries?

Caption contest
By Etern205 on 7/2/2011 12:41:49 PM , Rating: 2
I think that Lance pic will make a good caption contest.

"small fish"
By Murst on 7/4/2011 2:34:55 AM , Rating: 2
Rybka translates to "small fish"

Very appropriate :)

Also, it would not be very surprising to find out that "Fruit" copied its code from somewhere else either. Many of the algorithms used in chess programs have had many studies published about them, and they're used as lecture materials in college logic & algorithm courses. Surely stuff like that doesn't require attribution.

By sinfulmonk on 7/5/2011 6:14:23 AM , Rating: 2
is cheating!

"Intel is investing heavily (think gazillions of dollars and bazillions of engineering man hours) in resources to create an Intel host controllers spec in order to speed time to market of the USB 3.0 technology." -- Intel blogger Nick Knupffer
Related Articles

Copyright 2015 DailyTech LLC. - RSS Feed | Advertise | About Us | Ethics | FAQ | Terms, Conditions & Privacy Information | Kristopher Kubicki