Programmer code of honor (update)

Discussion of chess software programming and technical issues.

Moderator: Ras

Adam Hair
Posts: 3226
Joined: Wed May 06, 2009 10:31 pm
Location: Fuquay-Varina, North Carolina

Re: Programmer code of honor (update)

Post by Adam Hair »

lkaufman wrote:. In my view Houdini forfeits any rights to object to others disassembling it due to its own origin. I don't think we have used any original Houdini ideas in Komodo, but that's because there are so few of them, not because we consider it wrong to do so.
This whole thing is becoming a bit absurd. It is a bit funny to read "The bottom-line is that this "code of honor" remains empty talk when the #2 and #3 engines freely use RE of the #1 engine, apparently to the universal approval of the forum members. " when the first public version of #1 was much more closely based on another engine than admitted. But, that in no way makes it okay to disassemble Houdini for the purpose to improve another engine.

About the number of original ideas in Houdini. I have no idea how many there are. But, if there are just a few, they must be damn effective.
User avatar
Eelco de Groot
Posts: 4676
Joined: Sun Mar 12, 2006 2:40 am
Full name:   Eelco de Groot

Re: Programmer code of honor (update)

Post by Eelco de Groot »

Dan Honeycutt wrote:
lkaufman wrote: Since Houdini itself is a clone of a program (Ippolit) that was clearly based on disassembled Rybka code even though greatly modified, I think it's pretty funny that you object to others decompiling Houdini. I would not encourage others to decompile an original program. In my view Houdini forfeits any rights to object to others disassembling it due to its own origin. I don't think we have used any original Houdini ideas in Komodo, but that's because there are so few of them, not because we consider it wrong to do so.
I don't agree. We assume Houdini is a combination of Ippolit and Robert's improvements. The Ippolit portions are freely available to anybody. Robert's improvements if he doesn't want to share them should get the same protection from RE as they would if they were housed in a program he wrote from scratch.

Best
Dan H.
Larry is implicitly stating here that he has the copyright to parts of the Ippolit code, by extension this code may be found in all its derivatives. He has stated before on this forum that there are tables in Ippolit that are directly traceable to Rybka, of which parts he has the sourcecode.

Copyright is shared with Vasik Rajlich, but Rajlich has indicated in the past he did not think it worth it to legally do something about this. Short of the legal road the only body we have have that could give some official verdict on this would be the ICGA, Ippolit has never as far as I know requested to participate in the World Championship that is organized by ICGA, but if the 'consensus' would be understood as such that Ippolit is now public domain, in its entirety, inevitably, if it is not clear which parts could be copyrighted by Larry Kaufman and Vasik Rajlich, these parts could turn up in participants code, without any intent of wrongdoing. So that seems to me enough ground to investigate this further, and may also be seen as necessary for any possible review of the Rybka case itself should this ever be requested by Rybka's author(s) or representatives thereof.

This just as an outsider's opinion of course.

Regards, Eelco
Debugging is twice as hard as writing the code in the first
place. Therefore, if you write the code as cleverly as possible, you
are, by definition, not smart enough to debug it.
-- Brian W. Kernighan
User avatar
Dan Honeycutt
Posts: 5258
Joined: Mon Feb 27, 2006 4:31 pm
Location: Atlanta, Georgia

Re: Programmer code of honor (update)

Post by Dan Honeycutt »

Eelco de Groot wrote:
Dan Honeycutt wrote:
lkaufman wrote: Since Houdini itself is a clone of a program (Ippolit) that was clearly based on disassembled Rybka code even though greatly modified, I think it's pretty funny that you object to others decompiling Houdini. I would not encourage others to decompile an original program. In my view Houdini forfeits any rights to object to others disassembling it due to its own origin. I don't think we have used any original Houdini ideas in Komodo, but that's because there are so few of them, not because we consider it wrong to do so.
I don't agree. We assume Houdini is a combination of Ippolit and Robert's improvements. The Ippolit portions are freely available to anybody. Robert's improvements if he doesn't want to share them should get the same protection from RE as they would if they were housed in a program he wrote from scratch.

Best
Dan H.
Larry is implicitly stating here that he has the copyright to parts of the Ippolit code, by extension this code may be found in all its derivatives. He has stated before on this forum that there are tables in Ippolit that are directly traceable to Rybka, of which parts he has the sourcecode.

Copyright is shared with Vasik Rajlich, but Rajlich has indicated in the past he did not think it worth it to legally do something about this. Short of the legal road the only body we have have that could give some official verdict on this would be the ICGA, Ippolit has never as far as I know requested to participate in the World Championship that is organized by ICGA, but if the 'consensus' would be understood as such that Ippolit is now public domain, in its entirety, inevitably, if it is not clear which parts could be copyrighted by Larry Kaufman and Vasik Rajlich, these parts could turn up in participants code, without any intent of wrongdoing. So that seems to me enough ground to investigate this further, and may also be seen as necessary for any possible review of the Rybka case itself should this ever be requested by Rybka's author(s) or representatives thereof.

This just as an outsider's opinion of course.

Regards, Eelco
Hi Eelco,

I don't know if Robert did something wrong taking from Ippolit but, for the sake of discussion, let's say he did. That still does not give others the right to do him harm. There is a name for that. It's called vigilante justice and no matter how right it may feel it's still wrong.

Just another outsider's opinion.

Best
Dan H.
User avatar
Rebel
Posts: 7407
Joined: Thu Aug 18, 2011 12:04 pm
Full name: Ed Schröder

Re: Programmer code of honor (update)

Post by Rebel »

Houdini wrote: The bottom-line is that this "code of honor" remains empty talk when the #2 and #3 engines freely use RE of the #1 engine, apparently to the universal approval of the forum members.
From the top-15 of the CCRL list so far only the author of Vitruvius subscribed. One day I might organanize the PC authors only WCCC :twisted:
diep
Posts: 1822
Joined: Thu Mar 09, 2006 11:54 pm
Location: The Netherlands

Re: Programmer code of honor (update)

Post by diep »

lkaufman wrote:
diep wrote:
Houdini wrote:
diep wrote:Disassembling houdini isn't needed. it's total trivial that it's using the same evalution like all the clones do.
You haven't got a clue.
In fact if we kick out the deep futility out of ivanhoe, which is an obvious and illegal Rybka/Fruit clone, and add a very old years 90 extension, then we have Houdini.
If you don't mind please let us know exactly what years old "90" extension you are referring to. Frankly, if some old idea has been shown to help a modern program, I'd like to try it in Komodo. Regarding "deep futility", are you saying that Houdini reduced the maximum depth at which Ivanhoe does futility? If so we already use less plies of futility than Ivanhoe in Komodo. Do you think this reduction could explain a significant part of the elo gain of Houdini 1.5 over Houdini 1.0/Ivanhoe?
For the record, I don't think we are using any original Houdini ideas in Komodo, if there are any. I think we are using one or two Stockfish ideas that found their way into Houdini.
This raises another question: Is looking at decompiled code for the purpose of seeing what old ideas have been resurrected in a different ethical category than looking at decompiled code for original ideas?
Larry, from all people in the world, i'm the last to even have time to reverse engineer anyone. First of all i'm one of those who invented a bunch of algorithms himself and several of my tricks boosted the elo of Rybka, therefore also the rybka clones.

And no i didn't like that.

To give one example of what i invented somewhere start 21th century and which i used in Diep for nullmove:

if( static eval >= beta + S ) then R = R+1;

I'm the one inventing that. I never had the machine power to test whether it worked well at bigger search depths. First of all diep never got those depths.

I just put it in Diep and for example world champs 2004 and onwards i played with it.

How did it end up in Rybka?
I don't know. Someone illegally took it over from me obviously.

In end 90s i invented extension, for some who were around back then, tactics was important mid 90s. It solved lots of tactical positions back then for Diep. Realize back then Diep got just a few plies. So did nearly everyone. Crafty got bigger depths end 90s, but didn't see anything tactical (cheapo quiescencesearch).

One extension i used there to big effect, it's very interesting to mention that 1 year after i put it into effect, that suddenly Rebel also had this extension.

I never posted about it.

Oh rybka rybka. How surprisingly. Ordering in root. Whether it delivers elo i don't know, as i never did do it differently since mid 90s, but how i order moves there, that's also how Rybka 3 is doing it. Not sure whether the clones took it over from rybka3 - didn't check. I never posted this anywhere.

Oh back onto Ivanhoe. It's doing up to a ply or 9-10 futility potentially.
Practical most futility will happen last 3-4 ply or so.

As it's exponential bonus to search depth, it will keep reducing of course and win plies.

It's total trivial that doing this futility to 9 deep loses elo.

It's needless to say that loses massive elo. I never understood all those guys doing futility. In Diep i can't use it at all. If you want to do something,
then just do a cheaper nullmove last 3 - 4 plies. Not deeper than that or you will miss tactics. This is on my todo list to build for Diep as well. A big attempt there failed in 2005 when i tried to replace my entire search last few plies with a fast highspeed simple search. It's easy to see for me that this is where ivanhoe messes up versus houdini.

Now of course you search deeper doing that futility yet it backfires.

As for the extension. Houdini sees tactics faster where it involves giving check.

As the evaluation is 100% similar, very obvious to see for chessplayers, and it solves all kind of the same positions like 4-5 ply sooner than ivanhoe, meanwhile ivanhoe searches 2 ply deeper.

It's obviously tactical better.

If you go play your own engine against another version of your own engine and one of the engines is tactical better, it will win always in selfplay.

That's kind of what happens at most rating lists now, as most 'top engines' are total clones.

This will change when one guy has fixed his evaluation function enough and gets some reasonable depth without messing up too much in search.

Ivanhoe just messes up in search further it's identical to Houdini, as evaluation is the same.

It's total trivial to me that biggest difference of Diep versus the clones is in opening. If i manage to fix that, a few plies more than the turtle gets now is enough for world domination - and i'm not interested in running single core contests nor interested in rapid levels at a quadcore from half a decade ago of course.

Fixing all the old junk knowledge to modern well debugged knowledge is NOT easy.

In a given position positionally the thing is doing great, yet in opening, just simply developing quick is strategically nearly always better. That's where the deep searchers pick up massive elo, including KOmodo of course.

Now you shouldn't lose that advantage - yet it's obvious that if you want besides just deep mainline checking more elostrength you also must pick up tactics.

With simple methods you can do that.

Now i didn't check komodo, but if your material values are DIFFERENT from the rybka/fruit clones, so not nearly exactly the same, and if it also has knowledge that's NOT inside ivanhoe and clones, then you'll already see a DIFFERENT behaviour there than Houdini will have versus the other clones that are so much the same in evaluation.

The easiest way to beat someone who is identically evaluating things, is by being tactical stronger.

As soon as someone has a different evaluation function, that tactical stronger matters less.

What still wins search depth meanwhile not getting tactical too much stronger is a cheapo nullmove last 3-4 plies. Cheapest thing you can possibly do there is razoring.

if( !incheck && eval >= beta + 1 pawn ) then return eval;

making things tactical stronger there- really everything has been invented there already.

A simple trick is to check whether you were in check +2 plies direction root.
Then just do normal nullmove with qsearch, provided that nullmove also detects giving checks.

With diep's small search depths, such things lose it too much elo for now.
So i just use normal nullmove there.
SuneF
Posts: 127
Joined: Thu Sep 17, 2009 11:19 am

Re: Programmer code of honor (update)

Post by SuneF »

lkaufman wrote:I would be happy if decompiling were impossible. I expect that once Komodo is number one others will try to decompile it to learn its secrets. But there is nothing to be done about this.
Indeed, nothing but a gentlemans agreement that we don't do it. So if one signs and still does it, when that would make him not only a disassembler/cloner/deriver but also lier. Those who don't sign it... well, guess they aren't liers then :-)
We also have to be realistic, there is plenty of opportunity for cloning and deriving without getting caught if you are skilled enough, in the end all we have is basic trust in a swarn oath.
lkaufman wrote: To me the analogy is if Anand and Gelfand were forced to do their preparation with their seconds with open mikes that the other side could hear. They would just have to adapt to the situation.
Yes but adapt how?
If you're suggesting that everyone learns assembly only to RE Houdini and Komodo then I think that is a rather pathetic situation for computer chess. What is needed is creativity, new ideas, fresh young minds who can deliver breakthroughs, not new soup from old bones (no offence).
lkaufman wrote: So while I agree with you in principle, I don't like unenforceable rules that only harm those who chose to abide by them. I agree with Richard Vida, it's not the act of decompiling that is wrong, it's a question of what you do with the information. If you copy original ideas in detail, that is provable (with enough work and decompiling) and wrong. If you just get some general idea, let's say it inspires you to work more on time management for example, that is unprovable and in my view not objectionable. Of course there is no absolute rule that says what is ok and what is not, it's a matter of judgement.
That's a rather arbitrary distinction IMO, a bit like saying "it's okay to steal if only I keep it for myself and don't sell it on to others".
And because you take idea X and turn it into X+delta it doesn't change the fact that you still got idea X by spying.
Ideas should not be shared through RE but through normal conversation, anything else is just underhanded and sneaky.
The fact that we can't prevent people from doing it doesn't in any way excuse it, we also can't prevent speeding on the highway or prevent people from doing drugs....
diep
Posts: 1822
Joined: Thu Mar 09, 2006 11:54 pm
Location: The Netherlands

Re: Programmer code of honor (update)

Post by diep »

SuneF wrote:
lkaufman wrote:I would be happy if decompiling were impossible. I expect that once Komodo is number one others will try to decompile it to learn its secrets. But there is nothing to be done about this.
Indeed, nothing but a gentlemans agreement that we don't do it. So if one signs and still does it, when that would make him not only a disassembler/cloner/deriver but also lier. Those who don't sign it... well, guess they aren't liers then :-)
We also have to be realistic, there is plenty of opportunity for cloning and deriving without getting caught if you are skilled enough, in the end all we have is basic trust in a swarn oath.
lkaufman wrote: To me the analogy is if Anand and Gelfand were forced to do their preparation with their seconds with open mikes that the other side could hear. They would just have to adapt to the situation.
Yes but adapt how?
If you're suggesting that everyone learns assembly only to RE Houdini and Komodo then I think that is a rather pathetic situation for computer chess. What is needed is creativity, new ideas, fresh young minds who can deliver breakthroughs, not new soup from old bones (no offence).
lkaufman wrote: So while I agree with you in principle, I don't like unenforceable rules that only harm those who chose to abide by them. I agree with Richard Vida, it's not the act of decompiling that is wrong, it's a question of what you do with the information. If you copy original ideas in detail, that is provable (with enough work and decompiling) and wrong. If you just get some general idea, let's say it inspires you to work more on time management for example, that is unprovable and in my view not objectionable. Of course there is no absolute rule that says what is ok and what is not, it's a matter of judgement.
That's a rather arbitrary distinction IMO, a bit like saying "it's okay to steal if only I keep it for myself and don't sell it on to others".
And because you take idea X and turn it into X+delta it doesn't change the fact that you still got idea X by spying.
Ideas should not be shared through RE but through normal conversation, anything else is just underhanded and sneaky.
The fact that we can't prevent people from doing it doesn't in any way excuse it, we also can't prevent speeding on the highway or prevent people from doing drugs....
All nonsense aside - the thing that's missing is not a code of honor from a guy who i'm not so sure of 100% that he was following this himself in the days he COULD MAKE MONEY WITH IT.

What would have happened some years ago when guys carried other names,
is that Fabien Letouzey could start massive amount of courtcases against all the fruit clones, including Rybka and others, and also against websites.

The websites are out of the air quickly and Fabien would win all the courtcases in the long run and also end up with big amount of cash.

He can claim hundreds of thousands quite easily.
In some cases he ends up with money in others he doesn't, but it STOPS bunches of clones.

Such 'stopping actions' didn't occur simply.

If you pointed a finger even to Stefan Meyer-Kahlen in the past, Ossi Weiner would start a courtcase or 5 default where you cannot defend yourself, so you ahve to pay expensive lawyer.

In Europe you don't get back lawyer costs even if you win courtcase (that happens so seldom - we can say NEVER here for cases like this).

On the other hand if you do a bunch of such clean up actions, only the first action you'll lose quite some lawyer costs after that it's a lot cheaper as you have already the ways to do it.

That stops nearly all the clones instantly.

And yes you can get away avoiding legal problems, but in the first place most cloners are not having even the IQ to hide it. They are such clumsy beginners that they lose elorating already if they need to modify a few parameters from a piece square table, as we can see even in rybka. There is a few exceptions to that rule, but 90% of the clones is VROOM gone.

Such cleaning up actions didn't happen.

Fabien would need to ship just 1 email to the FSF for this. I don't know why it didn't happen.
lucasart
Posts: 3242
Joined: Mon May 31, 2010 1:29 pm
Full name: lucasart

Re: Programmer code of honor (update)

Post by lucasart »

diep wrote: First of all i'm one of those who invented a bunch of algorithms himself and several of my tricks boosted the elo of Rybka, therefore also the rybka clones.

And no i didn't like that.

To give one example of what i invented somewhere start 21th century and which i used in Diep for nullmove:

if( static eval >= beta + S ) then R = R+1;
Just two questions
1/ Is Diep source code available ?
2/ Don't you think that this is a rather logical thing to test, and someone else (maybe after you but independantly if Diep's code is closed) could have thought about it ?
SuneF
Posts: 127
Joined: Thu Sep 17, 2009 11:19 am

Re: Programmer code of honor (update)

Post by SuneF »

diep wrote: All nonsense aside - the thing that's missing is not a code of honor from a guy who i'm not so sure of 100% that he was following this himself in the days he COULD MAKE MONEY WITH IT.
Paranoid much? :-)

..but I can assure you I never did such a thing.
I don't have the skills or the desire to waste time on lowlevel code, I'm more of a high-level algorithmic thinker :wink:
diep wrote: What would have happened some years ago when guys carried other names,
is that Fabien Letouzey could start massive amount of courtcases against all the fruit clones, including Rybka and others, and also against websites.

The websites are out of the air quickly and Fabien would win all the courtcases in the long run and also end up with big amount of cash.

He can claim hundreds of thousands quite easily.
In some cases he ends up with money in others he doesn't, but it STOPS bunches of clones.

Such 'stopping actions' didn't occur simply.

If you pointed a finger even to Stefan Meyer-Kahlen in the past, Ossi Weiner would start a courtcase or 5 default where you cannot defend yourself, so you ahve to pay expensive lawyer.

In Europe you don't get back lawyer costs even if you win courtcase (that happens so seldom - we can say NEVER here for cases like this).

On the other hand if you do a bunch of such clean up actions, only the first action you'll lose quite some lawyer costs after that it's a lot cheaper as you have already the ways to do it.

That stops nearly all the clones instantly.

And yes you can get away avoiding legal problems, but in the first place most cloners are not having even the IQ to hide it. They are such clumsy beginners that they lose elorating already if they need to modify a few parameters from a piece square table, as we can see even in rybka. There is a few exceptions to that rule, but 90% of the clones is VROOM gone.

Such cleaning up actions didn't happen.

Fabien would need to ship just 1 email to the FSF for this. I don't know why it didn't happen.
Frankly I couldn't care less about what is legal and what is not. It's insanely difficult to prove either way and court cases are so expensive, cumbersome and difficult to win.
Also engines are so closely related today anyway it's nearly impossible to tell if the idea is copied/translated and then altered a tad or implemented from scratch as original and legit. The resulting code could even look identical.
It's more the process than the product, and proving that the process was dishonest/illegal is nearly possible if done "properly".
diep
Posts: 1822
Joined: Thu Mar 09, 2006 11:54 pm
Location: The Netherlands

Re: Programmer code of honor (update)

Post by diep »

lucasart wrote:
diep wrote: First of all i'm one of those who invented a bunch of algorithms himself and several of my tricks boosted the elo of Rybka, therefore also the rybka clones.

And no i didn't like that.

To give one example of what i invented somewhere start 21th century and which i used in Diep for nullmove:

if( static eval >= beta + S ) then R = R+1;
Just two questions
1/ Is Diep source code available ?
2/ Don't you think that this is a rather logical thing to test, and someone else (maybe after you but independantly if Diep's code is closed) could have thought about it ?
Not at all logical to test. Especially if yo usee what else is in that executable of rybka3. Total trivial stuff. Initially what was kept behind for the clones was a passed pawn evaluation trick that won elo for rybka3. It wasn't in the ippolits....

So you see there also that most of the cloning is source code based.
I dare to say that the guys who built rybka3, they simply had source codes of many private engines. Obviously illegal.

They tried some cheapskate tricks and the ones that worked they kept.
Nothing was selfinvented.

The razoring idea in rybka (cheap nullmove i call it) was not new either. Revived by Omid David Tabibi in Falcon around 2001. He didn't publicly post this.

How did it end up in rybka? I don't know.

However THAT was KNOWN.

Diep's source code is not available.

In all those 20 years no one ever tried that until i tried it in Diep.

The way how i order my root moves is also not total trivial. In all those 20 years no one i ever have been seeing doing it not until after i started doing it.

There is indeed a few engines made by guys known how to debug who also do it.

Maybe 1 or 2 authors i told the trick - they didn't spread that.

Then a year after it is in production executables of diep you see it everywhere suddenly. That's how it works with all tricks.

Debugging assembler is too easy.

I'm not doing it, yet it's total trivial to do.

You know there is a lot of ways to steal source code, but even then, majority of chessprogrammers reads assembler like it's C. Most know assembler better than C actually. Which makes sense if you think about it.

Computerchess is a low level sport. A few C++ guys now know hardly assembler, but that's about the only one.

There is so many things to try - and nearly no one ever tries anything you know. You just don't have the SYSTEM time to measure 1 elopoint.

Bullet some years ago also could not measure anything of that, as you just didn't get through the tactical barrier enough to measure even simple stuff.

In fact even today it doesn't work of course. Some people just tell fairy tales here.

The simple problem is TESTING whether something works and the fact that those who easily invent algorithms have something better to do than to test a chessprogram.

I hope you realize in end 90s most were doing hashtables with a SINGLE lookup. Despite that i posted it publicly here in CCC that i was doing 8 SEQUENTIAL lookups. Bob still was posting in 21th century that this was 'bad for chaining'. You had to do random lookups according to Bob and that's what crafty did do. 2 random lookups.

Until nalimov changed it for him to sequential probing...

that happened when it was obvious AMD would have a faster memory controller than intel with the opteron. Nalimov worked for wintel at that opint. Microsoft. Now he's at google.

Cilkchess at the supercomputer was doing a SINGLE probe.

They just didn't have the time to test it all you know and there is a billion tricks possible which oneas are you gonna test, if you FIGURE OUT the idea of doing more than 1 probe anyway?

Oh it was posted in CCC/RGCC?

Ah well. Have fun with that.

The tricks i described were NEVER posted.

The number of guys on this planet who have good ideas how to possibly improve, you can count on 1 hand.

the number of guys who knows how to test these ideas from others in a correct manner, now that's a LOT of folks...

they wouldn't even invent alfabeta themselves. Now speaking of a simple algorithm, alfabeta sure is something you can selfinvent.

In fact i know of at least 2 math guys who invented alfabeta themselves.
And that isn't a joke.

Even the most obvious things even posted in CCC, a forum that's the last to know something new always, wasn't getting tried, unlike some of the stronger commercials historically. they tried everything. However a number of the 'stronger' commercial engines always had programmers who stole everything by means of debugging.

There is a group who like to invent and doesn't steal and there is a rather large group that has no ethical problems with stealing algorithms.

Guys like me never did do this of course, though i AM capable of checking what goes on in other programs. I have enough ideas myself.

And no you will NOT find this trick.

Additionally it's not just 1 trick mine that was taken over. I described 2. There is more however.

I can point you to another 10 tricks that NO ONE in CCC found here which all give elo, be it little, for simple beancounters like the rybka clones. I have them on paper here. Never saw anyone refer to it and it's trivial most of those tricks never tried. Usually what doesn't work well you'll find on CCC.

They're just NOT finding things that works until someone has an executable around where they just DEBUG it. First of all it takes 6 months maybe to invent something new. Debugging it is 5 minutes.

World champs 2004. Statement from Stefan Meyer-Kahlen.

"Oh i have this wonderful new search now in Shredder it works MAGNIFICENT, but what i find so sad is that 6 months after it's released it ends up in Fritz as well".