Fabien's open letter to the community

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

Moderators: hgm, Rebel, chrisw

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 »

De Vos W wrote:
hgm wrote:
Roger Brown wrote:
De Vos W wrote:
I find your prejudice and intellectual dishonesty extremely irritating, please join the Rybka forum.


Hello De Vos,

Other persons may find other things extremely irritating about your presentations but I say that you should stay right here.

:-)

Later.
Actually I consider any dislike / rejection / attack I get from him as the best compliment a person can get, as for me he is the personification of evil, maliciousness and moral corruption on this forum. So anything that upsets or irritates him must be good and noble. :lol: :lol: :lol:
Hey Spartacus! Keep it cool it is time now! Go peddling some pieces with your infantile "Spartan Chess" I know you must have a hard time finding players for your crap game!
But just throw a little party with yourself... :lol: :lol: :lol:
This kind of post has no place here. Continued activity like this will likely have unpleasant repercussions... It is bad enough to make disparaging comments in a post that actually has technical content. But even that is not the case here...
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 »

Chan Rasjid wrote:
bob wrote:
hgm wrote:
mwyoung wrote:The proof is the author of Fruit himself. "Fabien's open letter to the community". And Vas statement that he claimed that Strelka 2.0 is a clone of Rybka 1.0. This linked Fruit code with Rybka code.
Read it again, then. As many times as it needed to register. He says "legally 'there is no issue". Which means no GPL violation, i.e. no copying of code.

Now I understand of course you take Fabien for an idiot, so that you can ignoe what he writes completely, and just want to use the fact that he says anything at all as a good opprtunity to shoot off your mouth aganst those that you dislike.

But I take Fabien kind of seriously. "No copying of code, but a translation of the algorithm".

So 'poof' goes your 'proof'...
I think you are misinterpreting "translation". Certainly if I translate a book from German to English and sell it as my own, I'll run afoul of copyright laws pretty quickly if the English copy sells well.
This is where most are wrong and HGM right.

The idea of 'derived work' has never been tested yet in any court (internet). Most legal/technical experts interpret 'derived work' in GPL to only include 'copy and paste'. The notions about derived work accepted in general copyright laws do not apply in GPL.

Rasjid
I simply do not agree, nor do I think a court would should this be tested. One can't translate from C to C++ and call that "new and original" and nobody in their right mind would think that is acceptable. Otherwise there can be absolutely no challenge to the legitimacy of ippolit and friends, because they are a translation from binary executable in x86 assembly language to C. So it can't be wrong, correct? That argument has more holes than Swiss Cheese.
Dann Corbit
Posts: 12538
Joined: Wed Mar 08, 2006 8:57 pm
Location: Redmond, WA USA

Re: Fabien's open letter to the community

Post by Dann Corbit »

bob wrote:
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...
Not even with a tiny little UCI parser, and not even when the person who studied the code has phenomenal memory (as in the case of a chess master, typically). I also posted previously two different algorithms that produced identical assembly language due to compiler optimizations.

I am not saying that Vas has done nothing wrong. I am saying that it is possible that he has done nothing legally wrong.

The same thing goes (in my mind) for those who did the IPPOLIT stuff and for Houdini.

On the other hand, I do think that *suspicion* is very well founded.
To me there is a very sharp divide between:
"He did something wrong!"
and:
"He may have done something wrong."
User avatar
Houdini
Posts: 1471
Joined: Tue Mar 16, 2010 12:00 am

Re: Fabien's open letter to the community

Post by Houdini »

playjunior wrote: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?
There isn't really any conflict between a good (high-level) architecture and a significant degree of (low-level) optimizations.
In C++ a lot of optimizations can be hidden in templates or classes, and become effectively hidden for the rest of the application.

Robert
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 »

Xann wrote:
bob wrote:
Xann wrote:How are these differences possible?
It's because I, and I assume some others as well, look "through" the code all the way to what it computes (the mathematical function that the code implements).
And we compare what Strelka computes with what Fruit computes.
"What", not "how".
And we find a match.

Bob, does this makes sense to you?

Fabien.
Yes and No.

Yes, in that comparing outputs is one way to detect similarity. But it doesn't guarantee that one is a derivative or cousin of the other. But it makes you think. The harder process is the one several of us undertook, led by Zach, to actually compare pieces of Rybka binary, de-compiled by hand back to C, against pieces of the Fruit source. That was more eye-opening.
Just making sure there is no misunderstanding here.

By "compute" I mean pieces of code, not the engine I/O.
E.g. a bitboard bishop mobility vs. board scan one.

Fabien.
Even that is not clear. For example, anything one does in mailbox, I can do in bitboard, and vice-versa. If I do _exactly_ the same thing, because I copy the code and then adapt it to bitboard, I don't call that "original". I did a ton of this on the first Crafty, in fact, copying code from Cray Blitz (after translating it to C)...
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 »

SuneF wrote:
bob wrote: Still do not follow. Let's take Crafty. Which was, originally a bitboard version of Cray Blitz. And to further complicate it, it was ported from FORTRAN to C. The first step was FORTRAN to C, then from mailbox to bitboard. Is that a "rewrite" Hardly. That is a translation, just as converting from German to English is not a "rewrite".
You did however change the name from Cray Blitz to Crafty. That indicates to me that even you consider such a big rewrite as being a new engine.
I changed the name because I no longer used Cray, and "blitz on a PC" would be _far_ weaker. And since I entered the new version in USCF, it had to have a different name per their requirements...

I would never have suggested that CB and Crafty could enter the same ACM event, for example.

Did Crafty produce the exact same output as Cray Blitz - I think not. Due to the change in structures there would have been stuff left out or modified. The core of the engine is completely altered, it is not a simple translation.
So you are telling _me_ what my program does? Go find the 1981 issue of Chess Life that had the output from Cray Blitz when playing USCF Master Joe Sentef (first master to lose a long-time-control tournament game against the computer.) Compare that output to Crafty. you might choose to "change your tune". Yes crafty goes deeper. But output is _identical_... Wonder why that is???
bob wrote: So bitboard or mailbox is irrelevant. Crafty went from traditional Slate/Atkin bitboards, to rotated bitboards, to magic move generation.
Yet the program was exactly the same (except for speed) for each conversion...
You can't compare going from mailbox to bitboard with going from rotated to magics. The first is a total rewrite of 10000 lines of code while the second is just changing a few macros.
I renumbered the bits. That changed 10,000 lines as well. You might think before making statements that are full of holes...

bob wrote: Much of Crafty has no reference to bitboards. Search(). NextMove() and its friends. Quiesce().
As I mentioned Strelka looks different from Fruit there as well, so even in places that _could_ have been left untouched the code has changed. Strelkas's nextmove looks more like it is Crafty inspired actually.

Maybe there would have been more obvious similarities in code had we had the original to compare with instead of a reverse engineered engine with its own improvements...
Dann Corbit
Posts: 12538
Joined: Wed Mar 08, 2006 8:57 pm
Location: Redmond, WA USA

Re: Fabien's open letter to the community

Post by Dann Corbit »

bob wrote:
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...
Basic to C++?
Pascal to Java?
Fortran to C?
(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.
Crafty is a giant machine with nearly 40K lines of code. At ten lines per hour and $100/hour that would translate to $400,000 worth of work. It would be a titanic effort, therefore, to rewrite crafty. Smaller programs of a few hundred lines would be far more likely candidates for such an effort.
(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.
I have done it, but typically with small projects. TSCP needs a complete rewrite, for instance.
(4) Never had that happen to the current version of code since I always keep duplicates and backups scattered around.
It is the result of carelessness when code is lost, but it does happen. I suspect that you have lost at least one or more snapshot of a released version of Cray Blitz or Crafty (at least in the early stages) because with hobby projects that are not producing revenue we sometimes are not quite as careful as when a big pile of money is at stake.
Xann
Posts: 127
Joined: Sat Jan 22, 2011 7:14 pm
Location: Lille, France

Re: Fabien's open letter to the community

Post by Xann »

bob wrote:Even that is not clear. For example, anything one does in mailbox, I can do in bitboard, and vice-versa. If I do _exactly_ the same thing, because I copy the code and then adapt it to bitboard, I don't call that "original". I did a ton of this on the first Crafty, in fact, copying code from Cray Blitz (after translating it to C)...
Same here, not "original".

Fabien.
User avatar
Matthias Gemuh
Posts: 3245
Joined: Thu Mar 09, 2006 9:10 am

Re: Fabien's open letter to the community

Post by Matthias Gemuh »

Dann Corbit wrote:
bob wrote: (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.
Crafty is a giant machine with nearly 40K lines of code. At ten lines per hour and $100/hour that would translate to $400,000 worth of work. ...
"ten lines per hour" ?

You translate huge chunks of code almost as fast as you can type. Why should average speed drop to "ten lines per hour" ?
I don't know about the $100/hour in USA.
Was Crafty 40K lines of code back then ?

Your $400,000 may be way off the mark.

Matthias.
My engine was quite strong till I added knowledge to it.
http://www.chess.hylogic.de
User avatar
michiguel
Posts: 6401
Joined: Thu Mar 09, 2006 8:30 pm
Location: Chicago, Illinois, USA

Re: Fabien's open letter to the community

Post by michiguel »

Matthias Gemuh wrote:
Dann Corbit wrote:
bob wrote: (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.
Crafty is a giant machine with nearly 40K lines of code. At ten lines per hour and $100/hour that would translate to $400,000 worth of work. ...
"ten lines per hour" ?
he meant "ten bug-free lines per hour."
That includes debugging, testing, etc.

Miguel

You translate huge chunks of code almost as fast as you can type. Why should average speed drop to "ten lines per hour" ?
I don't know about the $100/hour in USA.
Was Crafty 40K lines of code back then ?

Your $400,000 may be way off the mark.

Matthias.