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...De Vos W wrote: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!hgm wrote: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.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.
But just throw a little party with yourself...
Fabien's open letter to the community
Moderators: hgm, Rebel, chrisw
-
- Posts: 20943
- Joined: Mon Feb 27, 2006 7:30 pm
- Location: Birmingham, AL
Re: Fabien's open letter to the community
-
- Posts: 20943
- Joined: Mon Feb 27, 2006 7:30 pm
- Location: Birmingham, AL
Re: Fabien's open letter to the community
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.Chan Rasjid wrote:This is where most are wrong and HGM right.bob wrote: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.hgm wrote: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.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.
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'...
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
-
- Posts: 12538
- Joined: Wed Mar 08, 2006 8:57 pm
- Location: Redmond, WA USA
Re: Fabien's open letter to the community
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.bob wrote: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...Uri Blass wrote:Of coursebob wrote: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.Xann wrote:What happened then?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...
Fabien.
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.
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."
-
- Posts: 1471
- Joined: Tue Mar 16, 2010 12:00 am
Re: Fabien's open letter to the community
There isn't really any conflict between a good (high-level) architecture and a significant degree of (low-level) optimizations.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?
In C++ a lot of optimizations can be hidden in templates or classes, and become effectively hidden for the rest of the application.
Robert
-
- Posts: 20943
- Joined: Mon Feb 27, 2006 7:30 pm
- Location: Birmingham, AL
Re: Fabien's open letter to the community
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)...Xann wrote:Just making sure there is no misunderstanding here.bob wrote:Yes and No.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, 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.
By "compute" I mean pieces of code, not the engine I/O.
E.g. a bitboard bishop mobility vs. board scan one.
Fabien.
-
- Posts: 20943
- Joined: Mon Feb 27, 2006 7:30 pm
- Location: Birmingham, AL
Re: Fabien's open letter to the community
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...SuneF wrote: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.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".
I would never have suggested that CB and Crafty could enter the same ACM event, for example.
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???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.
I renumbered the bits. That changed 10,000 lines as well. You might think before making statements that are full of holes...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.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...
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.bob wrote: Much of Crafty has no reference to bitboards. Search(). NextMove() and its friends. Quiesce().
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...
-
- Posts: 12538
- Joined: Wed Mar 08, 2006 8:57 pm
- Location: Redmond, WA USA
Re: Fabien's open letter to the community
Basic to C++?bob wrote:I don't agree with those.Dann Corbit wrote:Typical reasons for rewriting:Don wrote:I don't rewrite just for the sake of it.Houdini wrote:Rewriting for the sake of rewriting doesn't serve any purpose at all.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.
Software with a good architecture will survive many years and many changes.
Robert
Don
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).
(1) can be solved via translation. A good program can be translated to a new language without rewriting a thing...
Pascal to Java?
Fortran to C?
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.(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.
I have done it, but typically with small projects. TSCP needs a complete rewrite, for instance.(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.
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.(4) Never had that happen to the current version of code since I always keep duplicates and backups scattered around.
-
- Posts: 127
- Joined: Sat Jan 22, 2011 7:14 pm
- Location: Lille, France
Re: Fabien's open letter to the community
Same here, not "original".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)...
Fabien.
-
- Posts: 3245
- Joined: Thu Mar 09, 2006 9:10 am
Re: Fabien's open letter to the community
"ten lines per hour" ?Dann Corbit wrote: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. ...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.
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
http://www.chess.hylogic.de
-
- Posts: 6401
- Joined: Thu Mar 09, 2006 8:30 pm
- Location: Chicago, Illinois, USA
Re: Fabien's open letter to the community
he meant "ten bug-free lines per hour."Matthias Gemuh wrote:"ten lines per hour" ?Dann Corbit wrote: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. ...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.
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.