Fabien's open letter to the community

Discussion of anything and everything relating to chess playing software and machines.

Moderators: hgm, Rebel, chrisw

rodolfoleoni
Posts: 263
Joined: Mon Nov 29, 2010 9:16 pm

Re: Fabien's open letter to the community

Post by rodolfoleoni »

Houdini wrote:
Don wrote:I think you are correct. I personally AM a fan of rewrites but I think there are many chess authors that don't ever rewrite, or have only done so once in years.
Rewriting for the sake of rewriting doesn't serve any purpose at all.
Software with a good architecture will survive many years and many changes.

Robert
And your post is n. 499. My one is n. 500, if I'm quick enough ;)
Rodolfo (The Baron Team)
User avatar
Eelco de Groot
Posts: 4561
Joined: Sun Mar 12, 2006 2:40 am
Full name:   

Re: ......Any answer to this Mr Wael??

Post by Eelco de Groot »

Xann wrote:
Xann wrote:Anyone remembers this or knows who "duncan" is?
Apparently Duncan was quoting Rick Fadden :
http://www.talkchess.com/forum/viewtopi ... t&start=30

Anyone remembers this thread or knows who Rick Fadden is?

Fabien.
Hello Fabien

Some background material only; I tried to look up some more that was posted by Rick Fadden because I remembered he also posted on the Rybka forum.

Much material on other Rybka clones recently is unfortunately removed from there by moderator decision, especially posts from BB -a pseudonym, I do not know his real name- but this does not have any direct bearing on Fruit. Older posts from BB about Strelka still remain, also some interesting posts from Anthony Cozzi about Strelka, he is Anthony C. on Rybka forum. Well you already know he compared Strelka more to Fritz 5 so maybe you already read that.

About Rick Fadden, he posted as ExperiMental on Rybka forum see http://rybkaforum.net/cgi-bin/rybkaforu ... l?uid=2107 if you can log in. It is of some relevance because he is actually strengthening Vas' case there, depending on how you interpret it, at least about direct copying which would be most relevant for any GPL case.
Topic Patch for Rybka 1.0 Beta 32-bit By ExperiMental Date 2008-04-30 13:16

I would like to add further to this. This past Fall I practically "lived" inside of Fruit 2.1, since I was attempting to take the search algorithms and encode them in my program that plays the game of Chaxx (not Chess). (Chaxx I found out is nearly identical to the game of Camelot, and Capablanca and others back in the day were also known as Camelot players).

Since I recognize Fruit so easily, because I have used the code extensively and I say I lived there... As I was walking through Rybka internally, using Strelka as the guide to see everything... I never got the impression that it was Fruit or even like Fruit. I may need to be extra clear here. Looking inside: Rybka does not look like Fruit. It has a completely different "Look and Feel."

My own guess is that the ideas in Fruit probably did motivate Vas to do his own R&D in the same areas of search where Fruit had led the way. I think Rybka may use some ideas from Fruit but they are implemented in a completely different or foreign environment.

I have walked through vast amounts of Rybka following assembly language instructions one after the other, with all hard-wired constants in the Rybka binary appearing in exactly the same spots, in the same order, with all code matching... in the Strelka 2.0 source. I have seen so, so much exact match-up that I could *prove* that Strelka is a pure reverse engineering of Rybka.

--------

Jury Osipov used the variable names of Fruit and he used the naming convention of fruit, with the underscore characters between names and with all lower case, as in "full_search", "full_check_search", "full_pv_search", "move_do_null"...

My guess is that Jury was using the source of Fruit 2.1 as something to help him understand the functions and variables inside of Rybka, and as he reverse engineered Rybka he used the variable names and naming convention of Fruit, but all of the code you see in Strelka is lined up in exactly the same order, with the same calculations, the same function calls, the same numeric constants, and the same arguments to functions as Rybka 1.0 Beta.

I'm back to working inside of Fruit 2.1 because I am improving my Chaxx playing program and I do not see this same match-up between Rybka/Strelka and Fruit 2.1.

My opinion is that by looking inside, Rybka does not have direct copying from Fruit.
In the Talkchess thread you posted above link to, if I read one of Juri Osipov's replies and interpret this rather freely, it is suggesting to me that he could not have dissassembled Rybka 1.0 and made a working C program out of it in two years without some other means but maybe then I'm reading too much into that, Juri states this could not be done with Fritz but as far as I know Frans Morsch codes everything in assembly which would be much harder to turn into C than Rybka 1.0 which presumably started somewhere as C
Osipov Jury



Joined: 21 Jan 2008
Posts: 157
Location: Russia
Posted: Wed Apr 23, 2008 10:00 am Post subject: Re: Strelka 2.0

--------------------------------------------------------------------------------

rfadden wrote:

Take a version of Fritz that plays 2850 uniprocessor 32 bit and disassemble it and completely recreate the C of the Original Fritz.



Rick.

Please take the Fritz binary and try completely recreate it into C.
If you can make this work during one year or two, you may claim that this is possible.
If not, don't talk about things in which you are not competent.
Best Regards,
Eelco
Last edited by Eelco de Groot on Thu Jan 27, 2011 1:36 am, edited 1 time in total.
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
Don
Posts: 5106
Joined: Tue Apr 29, 2008 4:27 pm

Re: Fabien's open letter to the community

Post by Don »

Houdini wrote:
Don wrote:I think you are correct. I personally AM a fan of rewrites but I think there are many chess authors that don't ever rewrite, or have only done so once in years.
Rewriting for the sake of rewriting doesn't serve any purpose at all.
Software with a good architecture will survive many years and many changes.

Robert
I don't rewrite just for the sake of it.

Don
Dann Corbit
Posts: 12537
Joined: Wed Mar 08, 2006 8:57 pm
Location: Redmond, WA USA

Re: Fabien's open letter to the community

Post by Dann Corbit »

Don wrote:
Houdini wrote:
Don wrote:I think you are correct. I personally AM a fan of rewrites but I think there are many chess authors that don't ever rewrite, or have only done so once in years.
Rewriting for the sake of rewriting doesn't serve any purpose at all.
Software with a good architecture will survive many years and many changes.

Robert
I don't rewrite just for the sake of it.

Don
Typical reasons for rewriting:
1. Change of language (e.g. C to C++)
2. Change of underlying data structures (e.g. mailbox to bitboard)
3. Increased programming ability (every decade, my programming skills increase quite a bit, so the code I wrote 20 years ago will benefit considerably from a rewrite).
4. Lost code (yes, it does happen -- I have sent code back to chess authors who lost their original code and who had also sent their code to me on several occasions, for instance).
playjunior
Posts: 338
Joined: Fri Jun 22, 2007 12:53 am

Re: Fabien's open letter to the community

Post by playjunior »

Houdini wrote:
Don wrote:I think you are correct. I personally AM a fan of rewrites but I think there are many chess authors that don't ever rewrite, or have only done so once in years.
Rewriting for the sake of rewriting doesn't serve any purpose at all.
Software with a good architecture will survive many years and many changes.

Robert
Because you are an author of one, I'll ask-just interested.

Can a top chess engine have good architecture at all? Doesn't it have to be over-optimized in a way that it nearly becomes a mess?
bob
Posts: 20943
Joined: Mon Feb 27, 2006 7:30 pm
Location: Birmingham, AL

Re: Fabien's open letter to the community

Post by bob »

Uri Blass wrote:
bob wrote:
Xann wrote:
bob wrote:Just for the record, to eliminate this specific argument, when Zach, CT, I and others looked at the fruit/rybka1 question, we did _not_ involve Strelka. Strelka was the thing that exposed the issue, but we directly compared fruit to rybka, so the strelka issue could not be raised again...
What happened then?

Fabien.
We found _lots_ of similarities. Zach created a web page that went into great detail with the analysis. There are some obvious differences between Fruit and Rybka, but there are a _ton_ of similarities. Too many to be pure luck.
Of course
It is clear that similarities between rybka and fruit are not pure luck.
Vas does not deny that he read the fruit code and learned from it and using ideas that you learned from other sources is legal.

The question is not if there is a similarity that is not pure luck between rybka and fruit
but if the similarity means that rybka(or even strelka assuming it was a closed source) is illegal derivative of fruit
and it seems that there is no agreement about it.
When I say "similarities" I mean "identical code". This has been covered ad nauseum. And "identical code" does not follow from "studying algorithms". It follows from cut and pasting source code...
bob
Posts: 20943
Joined: Mon Feb 27, 2006 7:30 pm
Location: Birmingham, AL

Re: Fabien's open letter to the community

Post by bob »

Sven Schüle wrote:
bob wrote:
Xann wrote:
bob wrote:Just for the record, to eliminate this specific argument, when Zach, CT, I and others looked at the fruit/rybka1 question, we did _not_ involve Strelka. Strelka was the thing that exposed the issue, but we directly compared fruit to rybka, so the strelka issue could not be raised again...
What happened then?

Fabien.
We found _lots_ of similarities. Zach created a web page that went into great detail with the analysis. There are some obvious differences between Fruit and Rybka, but there are a _ton_ of similarities. Too many to be pure luck.
But these similarities are not a proof of code copying.

Sven
If you look at my previous comments, "similarity" is "identical code". The entire program was not copied. But large chunks were. That _is_ proof of code copying...

Since large chunks were copied, but not everything, I chose to not say "identical" to be accurate. But they are _very_ similar. Moreso when you factor out the bitboard changes...
bob
Posts: 20943
Joined: Mon Feb 27, 2006 7:30 pm
Location: Birmingham, AL

Re: Fabien's open letter to the community

Post by bob »

Don wrote:
Gian-Carlo Pascutto wrote:
hgm wrote: You've probably never written a Chess engine yourself. All authors periodically start to rewrite completely from scratch.
Bah, I don't think this is universal. Although I've done them, I'm not a fan of rewrites. Serious refactoring can be as good if the design is somewhat decent. If the engine gets big enough with features (not a factor for you, I'm sure!), the effort of rewriting becomes too big.

Of course, most people don't get a decent design the first time they write an engine, unless they were already experienced programmers. I certainly wasn't when I wrote my first engine...

But anyway, I do not believe all authors just "periodically" completely rewrite their engines.
I think you are correct. I personally AM a fan of rewrites but I think there are many chess authors that don't ever rewrite, or have only done so once in years.
And of those that did do a rewrite, I'll bet that there is lots of code carried forward. One might change the overall structure of the search code, without throwing out the move generator stuff, move ordering stuff, or evaluation...

In 42 years, I have not thrown everything away one single time. It is way counter-productive. Even going from FORTRAN to C in late 1994, I translated some code and still use it...
User avatar
Graham Banks
Posts: 41412
Joined: Sun Feb 26, 2006 10:52 am
Location: Auckland, NZ

Re: Fabien's open letter to the community

Post by Graham Banks »

bob wrote:
Sven Schüle wrote:
bob wrote:
Xann wrote:
bob wrote:Just for the record, to eliminate this specific argument, when Zach, CT, I and others looked at the fruit/rybka1 question, we did _not_ involve Strelka. Strelka was the thing that exposed the issue, but we directly compared fruit to rybka, so the strelka issue could not be raised again...
What happened then?

Fabien.
We found _lots_ of similarities. Zach created a web page that went into great detail with the analysis. There are some obvious differences between Fruit and Rybka, but there are a _ton_ of similarities. Too many to be pure luck.
But these similarities are not a proof of code copying.

Sven
If you look at my previous comments, "similarity" is "identical code". The entire program was not copied. But large chunks were. That _is_ proof of code copying...

Since large chunks were copied, but not everything, I chose to not say "identical" to be accurate. But they are _very_ similar. Moreso when you factor out the bitboard changes...
Just one question Bob. What happens if this case is tried by the FSF (and I hope it is because we all want to see the matter resolved with some finality), and Vas is cleared?

Cheers,
Graham.
gbanksnz at gmail.com
bob
Posts: 20943
Joined: Mon Feb 27, 2006 7:30 pm
Location: Birmingham, AL

Re: Fabien's open letter to the community

Post by bob »

Dann Corbit wrote:
Don wrote:
Houdini wrote:
Don wrote:I think you are correct. I personally AM a fan of rewrites but I think there are many chess authors that don't ever rewrite, or have only done so once in years.
Rewriting for the sake of rewriting doesn't serve any purpose at all.
Software with a good architecture will survive many years and many changes.

Robert
I don't rewrite just for the sake of it.

Don
Typical reasons for rewriting:
1. Change of language (e.g. C to C++)
2. Change of underlying data structures (e.g. mailbox to bitboard)
3. Increased programming ability (every decade, my programming skills increase quite a bit, so the code I wrote 20 years ago will benefit considerably from a rewrite).
4. Lost code (yes, it does happen -- I have sent code back to chess authors who lost their original code and who had also sent their code to me on several occasions, for instance).
I don't agree with those.

(1) can be solved via translation. A good program can be translated to a new language without rewriting a thing...
(2) I did the mailbox-to-bitboard translation with Crafty. It only affects a part of the code. Search is unchanged. Move ordering is unchanged. Several other things are completely board representation independent.
(3) I don't think is that common. One does not rewrite _everything_ just because they are a better programmer now than 10 years ago. you might rewrite _parts_. But not the whole thing. That is a huge waste of time and effort.
(4) Never had that happen to the current version of code since I always keep duplicates and backups scattered around.