> Not allowable.
I'm interested in this. Can I ask if you think the following is allowable?
1) I write an opening book, lots of green and red moves in it, created through 1000's hours of analysis/tuning/game playing and sell it (copyrightable etc)
2) A competitor wants to get the lines out of my book and put them in his book to sell
3) The competitor does not look in my book to steal my lines, instead he plays two engines against eachother, both using my book, truncates all the games at book exit and imports them into his book
So effectively he gets my lines that way.
Is this allowable?
I think the argument would be simply that he did use your book to produce his book, and I don't think there would be any possible way the copyright infringement claim could be denied, if he explains the process exactly as you explained it.
For the Fruit/Crafty question, Nope. The algorithms are different. The implementations are different. In fact, the basic "concepts" are different, because I have two. One that expects to be given a move to test, one that expects to be given a position and a target square, where the move has already been made. If they are "joined at the hip" then you should find _some_ code that is identical. There is none.
> But if you copy a couple of hundred lines of code, and change just 4 constants for each piece type, that is _not_ OK. That's the point.
That might work. But I thought we'd got past the PST issue being anything to do with alleged code copying? It's now in the realm of alleged data copying. Writing a Microsoft Excel macro to produce the PST values is also a possibility, then we would not have code copying we would have idea copying, a Fruit idea re-implemented in a spreadsheet.
Something similar could have happened here:
"Vas looked at the Fruit code, saw how PSTs were generated and implemented the idea, with some changes, in a spreadsheet".
Neither you or I can prove he did this or if he copied Fruit code. In either case he kept both at home and did not ship this PST generating thing, whatever it was, just the output of it (=PST numbers), in Rybka. Go back to your own statement -> "There was NO CODE COPYING for the PST issue. NONE. NADA. ZILCH. ZIPPO. " <- you were spot on with that.
I would challenge you to study Fruit's PSTs and then produce a spread sheet that produces those numbers. Without having Fruit's PSTs right beside you so that you can continue to tweak the cells until you get a dead match. That's a completely bogus argument, and anyone using it is just grasping at straws.
As I said, there was no "code copying". Because vas took the _output_ of the fruit PST initialization code and copied _that_.
> I would challenge you to study Fruit's PSTs and then produce a spread sheet that produces those numbers.
?? I said you'd look at the Fruit code and re-implement the PST formula, with some changes, in a spreadsheet. This removes any code copying issue and makes it idea copying. What you are saying is that copying this idea makes Rybka a derivative of Fruit, which is something that an impartial third party needs to decide, in my opinion.
> 64 fruit values as a starting point. And at that point, you are no longer using an idea...
If these 64 values were used to make calculations in the Rybka PSTs (and I don't know if they were or not) .. is that a bad thing? Is there a sign saying "do not use these numbers under pain of death" on them? I guess what I am asking is are they copyrighted, those numbers, so that no-one else can use them? (If they were used at all).
As you can see, the "idea" is quite abstract. The implementations are unique and vary all over the place. DB did it a different way. If the "shape" of the tree changed dramatically, indicating that move ordering is suddenly not working as well as it should, they would extend the time even before the score dropped, because that "shape change" was often a precursor to a "score change." At times, the score change was +, but at times -.
The difference between idea and implementation is significant.
> The difference between idea and implementation is significant.
I 100% agree with this Bob. Back during the Rybka 4.1 beta testing I ran the following three cutechess matches for fun:
TC 40/5s+1s repeating, three 100 game matches:
Score of Rybka1.0beta-w32 vs Fruit21-w32: 50 - 14 - 36
ELO difference: 131
Score of Rybka1.0beta-x64 vs Fruit21-w32: 59 - 5 - 36
ELO difference: 210
Score of Rybka1.0beta-x64 vs Fruit21-x64: 68 - 8 - 24
ELO difference: 241Amazing that these allegedly copied 64 numbers work so much better in Rybka. I would have no idea of how to get so much more value out of these numbers than Fruit did, could be in the different implementation?
Nobody has not said he didn't change anything. You can find two consecutive versions of Crafty that are almost 200 Elo apart. One before we did the evaluation tuning using our cluster, the second after a few hundred million games had been played. Yet the code is the same. We just tweaked scores here and there, maybe deleted something that didn't look so good here, added a few lines over there. And Bingo, after considerable effort, and several months of work, +200.
That's no different than the fruit->rybka case.
The problem here is that programmers object to someone copying someone else's code, and taking a _huge_ short-cut through the software life-cycle. Starting with the best open-source program lets you start, from day 1, working on improvements, where otherwise you would spend day 1 just figuring out where to start with the design. And then the coding. And then all the testing and debugging. Just to get to fruit 2.1's "state of the art".
That's the issue here.
> You can find two consecutive versions of Crafty that are almost 200 Elo apart. One before we did the evaluation tuning using our cluster, the second after a few hundred million games had been played. Yet the code is the same.
Ok so we have two crafty's that are just about the same code-wise but play very differently due to tuning (well done btw).
> That's no different than the fruit->rybka case.
That's what we haven't seen yet, anything that makes the rybka code the same code as fruit, in the same way that your two versions of crafty were just about the same.
> That is just not going to happen with two independent programs...
Rybka and Fruit cannot be totally independent because Vas said he went through Fruit and took many things. But you were suggesting that Rybka and Fruit were as dependent on eachother as your two crafty's and there is no evidence for that at all.
All of the top modern engines are co-dependent in some form or another. Even crafty and fruit. You took from Fruit (not like Vas "going backwards and forwards taking many things") but in another way.
When you used open source fruit as an opponent (albeit compiled with your libs to allow it to work in your cluster), you were effectively using a brute-force approach to suck the knowledge out of fruit, it's chess strength in the form of games against crafty, and then you subsequently used this knowledge to tune crafty to make it play better. You wouldn't have got such a large elo boost if you had used say gnuchess as an opponent. The testing that you did is a good idea in my opinion, look at the elo boost you got.
Your crafty program has gained a lot from fruit. *If* (I don't know) you've done the same brute-force cluster approach using crafty against open source Stockfish (again with Stockfish compiled using your cluster support libs), then you've taken from Stockfish too. If you didn't have these stronger engines to pit crafty against, you would not have achieved the elo improvements that you've made in crafty through cluster tuning.
Imagine how you would feel if crafty had been at the top for the last five years using this approach and then a bunch of individuals came along and said "Ugh, this Hyatt is at the top for five years because he cluster-tuned his crafty against all the best engines out there, he used their outputs to make his program play better, it makes us sick!"
Ideas are abstract. Implementing them takes many lines of code. Code that won't look anything alike unless the code is copied. I give relatively simple programming assignments every week. And not a single program looks even to be "close" to another program. I'll remind you, for a given functional description of a program, there are an _infinite_ number of different source programs that will produce _exactly_ that functional behavior. What's the chances two people pick the _identical_ syntactical construction out of that infinite set of choices? Pretty damned low.
http://chessprogramming.wikispaces.com/Rybka-Fruit+Controversy
"2004
In January, Rybka competed in CCT6, the largest online author-based tournament (a posting of Rajlich's from time gives a "Rybka 1.3" as a version number). In April, Rybka 1.5 enters the privately-run author-based tournaments Chess War V and Le Systeme du Saison. In October(?), Rybka 1.6 enters Chess War VI and AEGT 3. Rybka 1.6 also competed in Chess War VII."
So it definitely was a different Rybka (1.3) than the one that you disassembled (1.6.1) which participated in CCT6. You completely failed to mention this in our thread where we discussed it, and it explains why you won't check the output of the binary you have against the moves that Rybka 1.3 played in CCT6, because you *know* they won't match.
There is the (remote due to it's performance) possibility you mention that Vas copied crafty and entered it in CCT6, but there are at least two others:
1) Rybka 1.3 was completely different from 1.6.1 and Vas moved to a crafty codebase after Rybka 1.3, erroneously entering these in Chess War (but no crafty code in the ICGA ruled CCT6 though)
2) As Trotsky pointed out in another post, Vas himself did not publish this Rybka 1.6.1 on a link available to the general public, so we can't check it. This Rybka 1.6.1 which you have, cannot reliably ("provenance" I believe he said a court called it) be traced back to Vas, it could have been created by some Rybka-hater (which I know that *you* know there are many of) that hacked a crafty to make it look like a Rybka
You and I don't know, but the standard of evidence needs to be higher.
You won't remember, but you and I first conversed via email over 15 years ago where you kindly helped me get crafty running on an IBM mainframe, there was initially some problem with the inline asm on a big-endian machine, IIRC. You were very helpful, my deep respect for you is turning into deep disagreement over the way you are handling these current issues in trying to cover all dissent, I know that you don't care but I find it unfortunate.
I do not see why it is so hard to differentiate "idea" from "implementation of an idea". They are _not_ the same thing. Ideas are abstract, and are often quite easy to come up with. They can be hellishly hard to implement, particularly when the code has to be as efficient as possible to avoid dragging the search speed down and hurting more than the idea helps.
For example, "I want to build a model airplane with a gas engine and use a radio transmitter to control the flight surfaces and engine speed." That was a pretty simple idea many years ago. Implementing that idea took years and led to a _huge_ industry today. There are dozens of transmitter/receiver/servo manufacturing companies scattered all over the world, hundreds of model airplane kit and engine manufacturing companies scattered all over the world. And thousands of companies that make accessories for them. The "idea" was easy to come up with. The "implementation" was a many-year exercise. There is an enormous difference between "idea" and "code". Here, we claim that Rybka took _code_. Not _ideas_.
For the provenance of Rybka, we had a tester for a well-known rating list provide the code. We had at least 3 early versions of Rybka. I have these three on my laptop:
Rybka-1.5.32.zip
Rybka-1.4.32.zip
Rybka-1.6.1.32.zip
The tester received them _directly_ from Vas. And I do not believe that anyone doubts that that happened...
> Rybka-1.5.32.zip
> Rybka-1.4.32.zip
> Rybka-1.6.1.32.zip
Did you look at 1.3, the one that is said to have played in CCT6?
> So I am not sure why 1.3 is in the discussion at all.
I mentioned it as it is on your wiki.
http://chessprogramming.wikispaces.com/Rybka-Fruit+Controversy
"2004
In January, Rybka competed in CCT6, the largest online author-based tournament (a posting of Rajlich's from time gives a "Rybka 1.3" as a version number). In April, Rybka 1.5 enters the privately-run author-based tournaments Chess War V and Le Systeme du Saison. In October(?), Rybka 1.6 enters Chess War VI and AEGT 3. Rybka 1.6 also competed in Chess War VII."
> But notice I did not "suck any code out of fruit."
Yes I agree with that, but the code is only a means to an end, chess playing. You didn't take the means, you took the end. I guess it's where you draw the line.
> Wait. Didn't _someone_ do just that? :)
Maybe he did it TWICE to convince some guy that he was splitting at the root
I even have the output to absolutely prove it if you want to debate it further...
point taken.
There is a big difference between copying a block of code, and playing games against that same program and learning from them. You _still_ have to write the code for your own engine, playing games doesn't magically create new code out of thin air...
"their strength, and their speed, are still based in a world that is built on rules. Because of that, they will never be as strong, or as fast, as *you* "Before you tuned, Fruit was stronger than crafty. You tuned against Fruit (and others), and crafty became stronger than Fruit. To be stronger than the thing you are tuning against you need to invent something.
I only have one engine in my current testing that is stronger than Crafty, that being stockfish. I have to have source to test because of some cluster library issues. I have several opponents that are weaker. Doesn't hurt a thing.
For many years, programmers had no choice but to test against their own engines. You don't think we got stronger each year, back then? If the newer engine beats the older one, then it is better, obviously.
> I only have one engine in my current testing that is stronger than Crafty, that being stockfish.
Perhaps you should only cluster test crafty-v-crafty then you will not be open to the challenge that you are taking the fruits of other engines. It's your call.
Btw, I firmly believe that ideas are more important than code (see last post from "McKoder" on this forum). The folks that wrote the Inception movie said the following which I agree with:
"What is the most resilient parasite? Bacteria? A virus? An intestinal worm? An idea. Resilient... highly contagious. Once an idea has taken hold of the brain it's almost impossible to eradicate."
My point is by testing against other programs you can only go so far, after that you need to invent something new.
I think this is a ridiculous line of reasoning...
It is not even on the same planet with copying stuff...
> I think this is a ridiculous line of reasoning...
You are, of course, entitled to your opinion.
> Do you really expect everyone to stop playing in tournaments so that they no longer "learn" from their opponents?
I am not talking about playing in tournaments I am talking about brute force cluster testing (millions of games, etc).
Again, this is completely unrelated to copying code...
> Again, this is completely unrelated to copying code...
Of course it's unrelated, just as you admit the Rybka PST issue is unrelated to code copying, it's about alleged data copying.
With the massive cluster testing you do, however you want to spin it, you are sucking on the fruits of another programmers work to improve your program. There is no doubt. Incidentally, I think it's a good thing.
> This Rybka 1.6.1 which you have, cannot reliably ("provenance" I believe he said a court called it) be traced back to Vas,
Several early versions were forwarded to us still attached to the original emails from Vas so the provenance can be proved.
I'll let some one else go over the technical details of your explanation.
Sum up all of my posts since I joined, and then sum up all of the posts on this topic, and I will not account for even 1/4 of them. Maybe not 10%.
You are obsessed with making sure nothing gets by. Is something still out there that threatens you and keeps you on, Bob.
Do you know of some data that may have been obfuscated and you want to be here to challenge it when it comes through? Somehow you feel you can't afford to leave the scene can you? It isn't a potential crime scene is it? I hope this is not the case for your sake- what that would do to your reputation and standing in the computer chess committee would be devastating and pale before anything that has happened to Vas.
Powered by mwForum 2.27.4 © 1999-2012 Markus Wichitill