Of course, if I really thought it was important (and I don't), I would go to the source, rather than trying to read the tea leaves.
Because of your inaccurate statement up above.
Do a bit of research. Unless you don't trust what Vas has said previously, namely that his bitboard programs have all been based on Crafty's rotated bitboard code...
This is flat out wrong since R4 was NOT based on Crafty's rotated bitboard code. Capiche?
BTW he _has_ admitted, several times previously, that he copied the rotated bitboard code from Crafty. SO the code is in rybka 1.0 beta and later versions until supposedly version 4 where he then used Pradu's magic bitboard stuff instead.
Seems like my statement is perfectly correct and matches what is known.
That's the complete post. You made it, and it's not accurate. It's not my fault you're going senile.
I'm not twisting words, snipping to take things out of context, claiming I have studied something when I have not, made up legal statements and then posted them as fact, etc. One has to be careful when living in a glass house...
> BTW he _has_ admitted, several times previously, that he copied the rotated bitboard code from Crafty.
Huh? No he hasn't. The code isn't even the same.
Now, it would seem, that you even contradict Vas who has stated multiple times that he copied the rotated bitboard from Crafty, until he switched to the magic stuff in R4. I will go look again, to find the notes I made to see what you might mean by "different indexing"...
And how would it not have any "initialization code" at all? The rotated tables have to come from somewhere, they are large and if initialized at compile time, they would make the binary enormous. In particular, these:
The first 4 add up to 64K entries = 512K bytes if initialized. And then another 256K for the second batch. How would one initialize those things???
> And how would it not have any "initialization code" at all? The rotated tables have to come from somewhere, they are large and if initialized at compile time, they would make the binary enormous. In particular, these:
> BITBOARD bishop_attacks_rl45;
> BITBOARD bishop_attacks_rr45;
> BITBOARD rook_attacks_r0;
> BITBOARD rook_attacks_rl90;
> int bishop_mobility_rl45;
> int bishop_mobility_rr45;
> int rook_mobility_r0;
> int rook_mobility_rl90;
> The first 4 add up to 64K entries = 512K bytes if initialized. And then another 256K for the second batch. How would one initialize those things???
in Rybka it is
this adds up to 16K entries = 128K, and it is indeed pre-initialized and contained in the executable.
You mean like those? :) We finally decided that the original Rybka was a copy of Crafty 19.x, and our best estimate was roughly Crafty 19.10 based on the time frame. The above is from Crafty 19.10 for reference. When I did a "cd" to the old versions, I apparently either left off the 1 in .10 or the 0, as versions thru 19.8 used the older approach, newer versions were changed to reduce the size of the arrays. the two end-bits in the occupied squares of a rank/file/diagonal are irrelevant to a sliding piece. Hence the reduction of the occupancy subscript by 2^2.
Rybka 1.6.1 has the bishop shift tables:
.rdata:005BC2C0 byte_5BC2C0 db 0, 0, 4, 7, 11, 16, 22, 29
.rdata:005BC2C0 db 0, 4, 7, 11, 16, 22, 29, 37
.rdata:005BC2C0 db 4, 7, 11, 16, 22, 29, 37, 44
.rdata:005BC2C0 db 7, 11, 16, 22, 29, 37, 44, 50
.rdata:005BC2C0 db 11, 16, 22, 29, 37, 44, 50, 55
.rdata:005BC2C0 db 16, 22, 29, 37, 44, 50, 55, 59
.rdata:005BC2C0 db 22, 29, 37, 44, 50, 55, 59, 0
.rdata:005BC2C0 db 29, 37, 44, 50, 55, 59, 0, 0
.rdata:005BC300 byte_5BC300 db 29, 22, 16, 11, 7, 4, 0, 0
.rdata:005BC300 db 37, 29, 22, 16, 11, 7, 4, 0
.rdata:005BC300 db 44, 37, 29, 22, 16, 11, 7, 4
.rdata:005BC300 db 50, 44, 37, 29, 22, 16, 11, 7
.rdata:005BC300 db 55, 50, 44, 37, 29, 22, 16, 11
.rdata:005BC300 db 59, 55, 50, 44, 37, 29, 22, 16
.rdata:005BC300 db 0, 59, 55, 50, 44, 37, 29, 22
.rdata:005BC300 db 0, 0, 59, 55, 50, 44, 37, 29
These are similar to Crafty, except the 6 corner squares have been zeroed and the tables reversed due to not having Crafty's weird square mapping. The tables in both programs are byte arrays. So looking back now, they are pretty similar (I think before I compared the first couple entries in the tables and concluded they were completely different... huh). But since every rotated bitboard implementation is going to be similar, and there's no initialization code to be found, (even back in 1.6.1), it's hard to say if this was really copied or not. By the time we get to R1, the rotated bitboard code is mostly the same, except similar tables are used for rooks (instead of calculating the shifts like Crafty), and the tables are 4-byte ints rather than bytes. Looking back on it now, I'd say there's a decent chance it was copied and modified from Crafty (why wouldn't it be in 1.6.1?), and that survived into the R1 series. But Vas definitely never said this publicly. He never said he copied Pradu's code either, we just know that from Mark.
ie the table is irrelevent, it has to be that way because "concerns for efficiency may limit the possible ways to achieve a particular function, making a particular expression necessary to achieving the idea"
The second step is to remove from consideration aspects of the program which are not legally protectable by copyright. The analysis is done at each level of abstraction identified in the previous step. The court identifies three factors to consider during this step: elements dictated by efficiency, elements dictated by external factors, and elements taken from the public domain.
The court explains that elements dictated by efficiency are removed from consideration based on the merger doctrine which states that a form of expression that is incidental to the idea can not be protected by copyright. In computer programs, concerns for efficiency may limit the possible ways to achieve a particular function, making a particular expression necessary to achieving the idea. In this case, the expression is not protected by copyright.
Eliminating elements dictated by external factors is an application of the scènes à faire doctrine to computer programs. The doctrine holds that elements necessary for, or standard to, expression in some particular theme can not be protected by copyright. Elements dictated by external factors may include hardware specifications, interoperability and compatibility requirements, design standards, demands of the market being served, and standard programming techniques. Finally, material that exists in the public domain can not be copyrighted and is also removed from the analysis.
I also point out en passent that there was absolutely no filtering applied at all in the process of producing results for the eval-function-plagiarism document. Not only was filtering (required as part of due legal process) not considered but no thought at all was given to a suitable filtering methodology at the abstraction level used. Simply, this renders the entire document (eval-function-plagiarism) invalid. Watkins did not do what he should have done and did not even consider it at all. Bad science. Throw the document in the bin, together with the entire report on Vas which critically depends on it.
Just to make this clear to everyone reading: YES THERE IS COPIED CODE. VASIK IS GUILTY. GET OVER IT.
>> Just to make this clear to everyone reading: YES THERE IS COPIED CODE. VASIK IS GUILTY. GET OVER IT.
Oh, and where is your Abstraction-Filtration-Comparison test?
If you're really the 'expert' you pretend to be you should've known that there's no evidence whatsoever for your crazy and libelous claims that VR copied code, violated the GPL etc. without AFC test.
Trotzky is absolutely right whenever he claims that all your evidence about Rybka's apparent similarity to Fruit is the result of an Apple & Orange comparison.
Yeah, that's it's exactly what it is: Comparing a dubious RE disassembly of Rybka 1.0 to Fruit's actual C-source code can't ever yield the conclusion that source code was copied, and even less so is it suitable to impend GPL violation on someone without having done
an AFC test in the first place (for the purpose of determining which portions of Fruit's C-source code where copyright-able at all, and which lines of Fruit's source code were not protected by GPL
Possible reasons why some portions of source code can't be protected under copyright (and no, simply using GPL doesn't automatically grant you the authorship of your whole source code)
- there may be several lines of code which can't be protected because they couldn't be programmed in some other way,
- another reason why certain parts of your source code mustn't be taken into consideration (for a regular copyright infridgement proceeding) can be, that several other programs, which may have existed even before Fruit 2.1 came along,
contained identical code lines (which basically renders these portions of source code to be under Public Domain, and my guess is that this is exactly what VR means, whenever he says that - in case he copied code, then only such code lines which could've
been found in several other programs, too.
so that's why these lines of code can securely be treated as 'Public Domain' (from a legal perspective: The true 'original' author in these cases usually can't be determined reliably any longer, thus these portions of source code are treated as
Public Domain and mustn't be taken into consideration for Copyright Infridgement issues)
- constant numbers or tables of numbers usually can't be programmed in 'some other way' (it's usually dictated by the syntax rules of C or whatever programming language you use), hence they are generally NOT protected under copyright.
There are several more reasons why major portions of source code must be excluded in the first place, before a regular expert witness will deal with any further comparisons (regarding source code similarity or code copying.)
Btw. using a RE disassembly for AFC-test purpose wouldn't be admisible (in a proceeding) anyways.
Ok, hope I didn't bore you with facts you should have known, long before you ever compared your very first line of Rybka's RE disassembly to Fruit's sources.
Because you failed to do an AFC-test, because you compared an unadmisible piece of evidence (RE Rybka) to Fruit's source, because you pretended to be able to reconstruct the exact lines of C-Code VR must have used due to your 'knowledge' about assemblers (You would be surprised how different two lines of C-Code can be, and are still mapped to the same machine instruction by modern-day compilers ...), because of all of these flaws in your submission of 'apparent' proves regarding VR violating GPL,
there are only two reasonable conclusions why you came up with your pipe dreams:
- You didn't know a thing of assemblers, AFC-tests, about the graveness of imputing Copyright Infridgement on a (former) programming fellow etc., hence you're both incompetent and irresponsible and shouldn't have been appointed as the ICGA's primary
expert witness ever. No regular jury on earth would ever accept such an unqualified and incompetent expert witness, ever.
- You really did know about assemblers, AFC-tests, about the graveness of imputing Copyright Infridgement on VR etc.. However, you nevertheless chose to mislead your ICGA-inquisitors with your 'expertises' of a coffee cup reader, because comparing a RE disassembly to actual C-source code is like an Apple & Orange comparison. (What a surprise! Both are Fruits! ). Most likely you just wanted to get rid of VR because you knew you couldn't ever write a program as strong as Rybka. Hence you mislead your
ICGA-fellows on purpose.
Well, your ingenious 'expertises' and findings about similarities of Rybka and Fruit may impress a bunch of narrow-minded, self-proclaimed 'programmers' at talkchess, or - even easier - software users here on the Rybka Forums,
but from now on be assured that Trotzky won't be your only contradictor here when you or Bobby show up and accuse VR blatantly of having commited GPA violations, Copyright Infridgements and who knows what else VR may have done (in your fanatasy).
... of being highly incompetent, because they didn't do an AFC-test.
I was going to bring this up at some future point, but you preempt me ... when talking about Filtertion in A-F-C.
You know the definition and formula for piece mobility? Of course, it is well known and defined, for example, in the programmer wiki
"Mobility with Bitboards
For programs using Bitboards, piece mobility can be calculated very quickly either by Population Count or a SIMD-wise kind of weighted population count."
The popcount version can be written in one line of code and I defy any sensible programmer to do it by anything other than popcount(squaresattackedbitmap less friendlyoccupiedsquaresbitmap)
But, if you dare, in your bitboard program, to do a mobility count on knights according to the wiki formula, BB-Watkins will add 80% to your Fruit plagiarism score, and then, if you dare to do a mobility count on bishops, again according to the wiki formuka, BB-Watkins will hit you with another 80% plagiarism score!!!!!
Insanity. And, as you state above, the code should get thrown straight out of the comparison process in the FILTRATION stage at least on grounds "there may be several lines of code which can't be protected because they couldn't be programmed in some other way", or, as I would put it, on grounds of speed of code and utility and as the wiki says: do it with popcount.
So we have two lots of 80% plagiarism score equivalent (at least) in the Rybka "plagiarism" score which SHOULD NOT BE THERE.
I had expected that at least as single programmer peer would have stood up and had declared against his panelists why their whole procedere is such a shit against another peer. I mean, isnt it a known truth in the saying, who might be without faults he might throw the first stone. But moral and ethics is rare these days. The more so must be highlighted what Trotsky and Mec are doing here for the cause of fairness and justice. That Bob Hyatt does ignore all that proves that also the secretariat isnt sober in legal respect. The whole verdict against Vas isnt kosher. Because nobody with a rest of self-respect would never step forward and cooperate with such a bunch of biased losers.
But don't let that stop your wrangling...
You do not have to "filter" when you show _exact_ copying over hundreds of consecutive lines of code...
we are not trying to prove that "ideas were copied exactly." We proved that _code_ was copied exactly. You are in the _wrong_ section of copyright law.
I also do believe that he publicly stated that he had changed to magic move generation by the time Rybka 4 was released.
One gets the impression that you are street-fighting and not actually searching for truth.
I think the "corner zeros" are irrelevant, because when you exclude the rightmost and leftmost bit (since the final square on any rank/file/diagonal is attacked whether it is occupied or not) you can either shift one of them off, or for the 6 corner squares the occupancy is "zero" no matter what is on the board. In looking, since he apparently initialized them externally, this change was probably obvious once one looks at the attack data. I couldn't believe how obvious it was to me, after I realized it, that the two end bits are irrelevant and reduces the size of the tables by 4x. Fortunately, I eventually did.
Also, Crafty hasn't had the "crayish" square mappings for several years. I'd have to look to see when it changed. It is possible that this was changed then, I am not sure...
Whether pre-beta Rybkas violated Crafty's license is pretty irrelevant to me. The only people that were potentially harmed were the beta testers. The only significance is showing the pedigree of Rybka. Vas said before that Rybka started in 2003, and he had never done a rewrite from scratch. This seemed incredulous to me--why was so much of the base structure so similar to Fruit (UCI parser etc.)? Once the pre-beta Rybkas were made available, it was basically proven that Vas' statement was a lie (I would seriously doubt anyone's mental ability if they disputed this). While Mark and I only looked at portions of the early Rybkas (I spent maybe a couple weeks on it), we were unable to find any code that they shared with R1.
Coming back to R1/Fruit, yes, if you look at each example in detail, you can't say there is much hard evidence of direct code copying. As I said to Vas, I'm only completely certain that three characters were copied ("0.0"). But given the entire picture (how similarities to Fruit are all over the place, and the previous Rybka versions shared no code) it's just so obvious to me that Vas took Fruit as a base and rewrote things on top of it, presumably until he felt it was "clean". For all the debate, I'm really puzzled why people (who are sufficiently knowledgeable) would dispute this. A lot of talk has been about the evaluation, and while that is interesting from an originality standpoint, it's perfectly reasonable to say that it's OK as long as no code copied. But once the pre-beta Rybkas were released, it was all over. The pre-beta Rybkas were IMO the lynchpin of the entire case--no wonder Vas was pissed when they were leaked (once again, huge credit to Olivier). After that, it became very hard to claim that Rybka didn't start life as Fruit. In fact, I would tend to doubt their mental ability as above, but since so many seem to have differing opinions, I'll just say I disagree :)
While Mark and I only looked at portions of the early Rybkas (I spent maybe a couple weeks on it), we were unable to find any code that they shared with R1.
Coming back to R1/Fruit, yes, if you look at each example in detail, you can't say there is much hard evidence of direct code copying.
As I said to Vas, I'm only completely certain that three characters were copied ("0.0").
it's just so obvious to me that Vas took Fruit as a base and rewrote things on top of it, presumably until he felt it was "clean".
agreed, although it may have been side-by-side rather than on-top-of as the actress said to the bishop
A lot of talk has been about the evaluation, and while that is interesting from an originality standpoint, it's perfectly reasonable to say that it's OK as long as no code copied.
Zach, I don't think anybody disputes what you've written, and I doubt you dispute that in the age of freely available open-source that any "new" program does not start life as one of the open source programs. I think, although my mind may be playing tricks on me, that at least one of Bob's close programmer friends program started off as Gnu, one of the world championship programs is supposed to have started off as Gnu - nothing wrong with that, as long as they get to be sufficiently different and removed from the open source origin.
> it's just so obvious to me that Vas took Fruit as a base and rewrote things on top of it, presumably until he felt it was "clean"
Assuming this is exactly what happened, which I have no reason to doubt, where do you draw the line between "acceptable" and "unacceptable"? Seems to me Vas made a judgment that after 'x' changes in form and substance the whole was "clean". But there's no objective or quantifiable 'x' threshold other than rigid absolutism, is there? And doesn't the whole case rest on the proposition that there is such a threshold, and reasonable men with specialized knowledge can ascertain what 'x' is?
I think Vas believed a 150 or 200 ELO strength increase made him invulnerable. And, of course, I am very biased in this, but from my perspective his logic was impeccable. Yes, a 150-200 ELO increase does grant certain immunity. It is not a factor that can be discarded as irrelevant. Nor can you discard subsequent further gains in ELO. Cumulatively this ought to protect a person from charges of copying, cheating, unethical behavior, etc.
Given the totality of your statements, both those that condemn Vas and moderate the allegations, how can you really believe that some great ethical crime has been committed here? Unlike others you seem like a reasonable person. I ask for a reasonable and honest answer. (Note: I am asking Zack, not anyone else.)
I think the idea that he should be protected from those charges because of some strength increase is, frankly, fucking stupid. He should be commended for his contributions to computer chess. But he should also be condemned for an ethical wrongdoing, at the very least until he ADMITS it. It's easy to see it your way, since you're benefitting from his product. To me, your words just sound like some reporter on a 24-hour news network giving extreme deference to a politician. Vas protected us from terrorism! I never really cared about Rybka at all until I heard there was Fruit code in it. If you remember, I was not in any way a competitor with Vas when I did the majority of the work investigating it. I once got sort-of-close to a draw in an online tournament and was very pleased. The only motivation I had was as an open source advocate.
(Note: I'm sorry if I sounded rude in that paragraph, it wasn't intentional. Hyperbole is the modus operandi in this forum :)).
Aside from that, I think this forum needs to, basically, chill out. There are so few posts that have any technical value at all. All of your arguing accomplishes precisely nothing. Nobody cares anymore, nobody even talks about it on Talkchess, Vas doesn't care, ...well, at least he'd have you believe that. :)
What you are suggesting is that Vas didn't just take ideas-code - but the essence of the guys work? Is that what you are saying here? The essence of Fruit! 
I'm gathering that you are not prepared to commit to making that statement. But only giving an elo est. That isn't the same thing.
>Let me put this into terms that I can understand-
btw... wow... seems Zach knocked the wind out of Nelson's sails.
"carry on my wayward son... there'll be peace when you are done... lay your weary head to rest... don't cha cry no more" (for the nelson btw)
What I see here, a wannabe member of a thought police, a hypocrit and dirty liar, who, instead of writing his own program, in other words being creative himself, prefered to invade into the program of a genius to then have the chance to steal legally because his own talents were mediocre. So, just another fachidiot.
> I think the idea that he should be protected from those charges because of some strength increase is, frankly, fucking stupid.
I don't know what he did with Fruit! Whether he was lazy and cut corners - which is what it sound like to me and not just a few people. It isn't a matter of denial as you would have it. Some of us see in the ICGA an evil intent and you see Vas as having evil intent. I'm being told that there is no evil intent on the part of the ICGA in their efforts to black ball Vas. But at the same time it is hard for any of you to conceive of Vas as having had an insight into a greater roll that the ideas behind Fruit would play in his creation of Rybka when he first set out programming. To him this would not be copying. He did actually what he said. It is a part of the creative process.
So if you want to impute motives, considering that Vas is far from some mediocre run of the mill programmer, another one might be that he saw the ideas Fruit held as rudimentary to his way of thinking and on the path toward a greater evolution of his own ideas.
I think you and others are inferring an evil intent that just may not have been there. I'm pretty tired so I hope I'm getting my point across. Artists mix ideas all the time - and Vas is...an artist whether you would like to believe that or not.
Interestingly enough every art movement historically has a period of strict conventionalism that pits itself up against the more experimental and expressive movements of the period- I don't have to tell you which will out last which and which will bring more innovation and change.
Problem with the above (Rybka is a derivative of Fruit) is based upon the unproven assumption that Vas started with Fruit and converted it. It went unchallenged in the groupthink of the wiki. It has been a mantra repeated by Hyatt for several years. And the evidence is what exactly?
"This is just so obvious to me" is not evidence.
There's more than one developmental pathway model ...
Zach/Hyatt model: starts with Fruit converts it gradually, ends up with Rybka. It's a derivative because it derives (starts from) from Fruit and there is sufficient Fruitiness left behind in the final version.
Alternative model: starts with a shell, based on Vas work with Crafty in the previous two years. Has Fruit open in another screen. Builds Rybka. The result may be Fruity but it is not a derivative.
There may be some anecdotal evidence for your model, but, as far as I can tell there is no good proof, just a groupthinky belief. Basically I think your argument is: Vas started with Fruit because he is a thief. Vas is a thief because he started with Fruit. Or, in other words, your argument is circular: the conclusion is the premise and the premise is the conclusion.
Then Zach, I'm arguing this way for years already. What should a young technically talented man do , either creating his own stuff, or accusing and chasing others. But no, he cant. He's a serial code killer. Not realising that his specific findings have no real meaning in context. Here is where his talent is cheating him. Of course he finds something, but he isnt able to make the right conclusions. He's driven by the mad delusion of greatness, that he although not competing is basically the best of all of them. What a loser!
>which I have no reason to doubt
Maybe I can give you a reason to doubt.
Strelka was Fruit with some parts of Rybka - as Ossipov stated in this post: http://rybkaforum.net/cgi-bin/rybkaforum/topic_show.pl?pid=353477#pid353477
So, yes, you find lots of Fruit in Strelka. But that does not mean there is much Fruit in Rybka. If you look at the so-called evidence, you find that the similarities they found are really meager.
OK I'm sorry but that is just completely ridiculous. I have looked at nearly every byte of the Rybka 1.0 beta binary. Rybka is even more similar to Fruit than Strelka is. And there's even "forensic" evidence that Rybka had copied code: the fact that there are multiple sort routines, different move generators store moves in different ways (one generator uses a Fruit-like data structure, the other is Strelka-like), different board initialization functions, etc. Strelka had all of that cleaned up.
The denial is getting pretty pointless.
>Rybka is even more similar to Fruit than Strelka is.
Powered by mwForum 2.27.4 © 1999-2012 Markus Wichitill