Sensational! Y.Ossipov talking about STRELKA

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

Moderators: hgm, Rebel, chrisw

Bryan Hofmann

Re: Sensational! Y.Ossipov talking about STRELKA

Post by Bryan Hofmann »

Dann Corbit wrote:Strelka is not written in the style of fruit.

Fruit consists of three times as many C++ files as the C files of Strelka.
Now that I know the heritage, I can spot (for instance) that pawn_info_t of strelka and fruit are very similar. There are twice as many structure types in Fruit as there are in Strelka. There are 55 functions in Strelka and 257 functions in Fruit 22. Strelka is a bitboard engine and fruit is not. The style of Strelka's author is not like Fabian (does not use the assert() masterfully like Fabian for instance -- not a single assert in the whole code base).

The code is quite significantly rewritten, but I can now see the Fruit skeleton for some functions.
I concur with Dann on this. As many of you know or may not know I have been the individual performing the compiles for Fruit including the commercial versions and beta versions of the closed source. A basic idea is there but there is no copying of the GPL code.


Bryan
Edsel Apostol
Posts: 803
Joined: Mon Jul 17, 2006 5:53 am
Full name: Edsel Apostol

Re: Sensational! Y.Ossipov talking about STRELKA

Post by Edsel Apostol »

Hello everyone,

I had been a silent audience to this forum for a while. Just reading and reading and takes all the information there is.

These Strelka stuff on a programmers point of view is interesting. I am also a chess engine programmer. It's been three years since I was caught up with this hobby and two years since I had my own chess enigne. I have two engines now actually, the latest is a complete rewrite.

I admit that I also used/borrowed a lot of ideas from open-source programs most especially Fruit and Glaurung but it doesn't mean that I copy/paste the actual source code. I tried to understand the idea and implement it as I understand it. This might also be the case in Strelka. The author might also used/borrowed the ideas on these open-source programs (specifically Fruit) but it is not a copy/paste type of thing.

The question now would be: what is the motivation of the Strelka author to release his program, to make it appear that it is a Rybka clone, so that it would gather much interest, and will therefore caught the attention of the entire computer chess community?

I will give my ideas here. Just my two cents.

First, maybe the author of Strelka discovered how Rybka has attained its status now and since it doesn't give due credit to where it has get its phenomenal strenght (in this case, the ideas from Fruit), he intentionally release his engine that has a similar "path taken as Rybka" so that when he will be judged as a mere hacker, the author of Rybka will be judged the same as well.

Second, maybe he just want to share the secrets of how to make a stronger engine based on what he has discovered, since the author of Rybka will be unlikely to do so, all for the sake of the betterment of the computer chess programming. Maybe he wants to have a name in the history of the computer chess.

There are still a lots of "maybes" but all of this will go down into these:

What would the consequences and the implications of this happenings now for the future of Computer Chess? The secrets of Rybka will be unveiled, other authors will learn of this ideas and will implement it in their own engines. Rybka domination will never last for so long. There will be a revolution on computer chess programming.

There is two sides on this: a negative effect for the author of Rybka, and a positive effect to the Computer Chess Programming in general.

The root of all of this is Fruit. Fabien is still the real genius. Wait until Fabien will learn of this material imbalance ideas and Fruit will be on top again.


In the end, anyones point of view will only depend on which side they are in.

Just my two cents.

Edsel Apostol
gerold
Posts: 10121
Joined: Thu Mar 09, 2006 12:57 am
Location: van buren,missouri

Re: NEW TRANSLATION

Post by gerold »

Dann Corbit wrote:
Ryan Benitez wrote:Some of the bugs in the 2 engines are inherited from Fruit actually. Fruit has very few bugs compared to other engines but some of the hack fixed bugs pop up when trying to cover your roots. I don't know how much if any GPL code either engine has, I am very open to the possibility that neither engine ever technically had any Fruits code in it at all. It is possible to rewrite Fruits algorithms in your own code and inherit the same bugs. Given the language barrier I don't think it is far to judge Osipov at this point. Keep in mind that people have very little to gain from making illegal clones of GPL engines and a lot to lose. The GPL gives programmers a lot of freedom to contribute to a project in a positive way. As someone who has not read this forum in several months it is disappointing to come back to see such a witch hunt for clones and so little positive computer chess talk.
I have mixed feelings about it.
It is clear that he has his own innovation in Strelka.
It is also clear that he has borrowed ideas from others.

There is one thing that is disturbing:
He consistently failed to give credit (at least for ideas) to:
Fruit
Rybka
Beowulf

His usage of information from each system is on the edge of right/wrong and I have no idea if he has actually broken rules. But (at least emotionally) I think it is wrong that he did not give any credit in his write up for Strelka. Now, there are others that have done similar things (borrowing ideas without giving credit is quite common in computer chess) but in this case it seems more extreme than others to me.

I actually feel dissapointment on both sides of the fence. It really cools my love for computer chess in general.
Why? you did nothing wrong. Maybe help bring this out in the
open and getting the guy to talk about it. Now we know what
took place for the most part,if he told the truth about how he
wrote the program. Thanks for your help and input.

Gerold.
Dann Corbit
Posts: 12606
Joined: Wed Mar 08, 2006 8:57 pm
Location: Redmond, WA USA

Re: Sensational! Y.Ossipov talking about STRELKA

Post by Dann Corbit »

I don't know if the whole affair has strengthened or weakened computer chess.

I think that the idea that hiding strong programs from chess programmers will advance computer chess is like saying that if we hide implementations of Radix sort, quicksort, and heapsort from students learning how to write a sort function, then they will write better sorting algorithms. Ludicrous.

Everyone that agreed that hiding ideas is a good idea has (I am totally sure) extracted ideas from other programmers and not invented all of their program's brains by themselves. And if there were no strong programs or excellent chess programming papers to read from, then their programs would be little stronger than TSCP.

I think that chess competition has become a bad thing. Competition is good when it drives innovation, but bad when it encourages information hoarding.

As far as the whole clone problem goes --

I think that the main problem is that there is no such thing as a definition of what a clone program is. In some sense, every successful chess program is a clone. Do they or do they not all contain some variant of alpha-beta (mtd(f) and variants are all closely related and can be derived from a simple, similar model)? How about hash tables? How about piece square tables? How about bitboards and 0x88 reference systems? These were all implemented by someone else and yet used in many non-inventor's chess programs. Have these programmers done something wrong? What exactly is the line that is crossed in going from non-clone program to clone program? I don't see this as clear cut as others do.

If then, these ideas are transplanted into chess programs and not invented does that make them clones? I think we would agree that if someone studied the algorithms and wrote their own, then it is not a clone (or is it? I thinks some people might consider even this case one of cloning). But what if they took the original source and rewrote it over and over again. Now, the new version is not distinguishable from the one written from first principles. The only way that we can tell the difference between the two is by the honesty of the programmers who did it.

I don't see any solutions to these problems and I can't say whether the Strelka author is in the right or in the wrong or whatever. But it seems to me that the competition aspect of chess programming has gone beyond the useful stage where ideas are shared easily and has changed itself into something rather sinister. It reminds me of Marx and Engel's description of capitalism where the making of more money just to make more money starts to dominate the process rather than the earlier goals of production.

In short, I think that the chess community has taken a wrong road somewhere, but I have no idea how to get the car back on the road or even if that is what we should do.
User avatar
mclane
Posts: 18769
Joined: Thu Mar 09, 2006 6:40 pm
Location: US of Europe, germany
Full name: Thorsten Czub

Re: Sensational! Y.Ossipov talking about STRELKA

Post by mclane »

In some sense, every successful chess program is a clone
its a matter of degree here. yes you are right.
Thomas Cutter

Re: NEW TRANSLATION

Post by Thomas Cutter »

Ryan Benitez wrote:Some of the bugs in the 2 engines are inherited from Fruit actually.
If I understand correctly, you say, that Rybka inherited at least a particular bug from Fruit.
User avatar
GenoM
Posts: 910
Joined: Wed Mar 08, 2006 9:46 pm
Location: Plovdiv, Bulgaria

Re: Sensational! Y.Ossipov talking about STRELKA

Post by GenoM »

take it easy :)
User avatar
Rolf
Posts: 6081
Joined: Fri Mar 10, 2006 11:14 pm
Location: Munster, Nuremberg, Princeton

Re: Sensational! Y.Ossipov talking about STRELKA

Post by Rolf »

Dann Corbit wrote:I don't see any solutions to these problems and I can't say whether the Strelka author is in the right or in the wrong or whatever. But it seems to me that the competition aspect of chess programming has gone beyond the useful stage where ideas are shared easily and has changed itself into something rather sinister. It reminds me of Marx and Engel's description of capitalism where the making of more money just to make more money starts to dominate the process rather than the earlier goals of production.

In short, I think that the chess community has taken a wrong road somewhere, but I have no idea how to get the car back on the road or even if that is what we should do.
What chess community? This is still computerchess, NOT chess! And then if you mention Marx. Marx described the conditions of the economy of his times. I cant see anybody who described the actual situation in computerchess _business_ for the past thirty years. But what I can well see is that an anonymous author is trying to chase RYBKA author Vas for no other reason because he's the actually best. I already asked why nobody doctored in SHREDDER, FRITZ or JUNIOR? Shouldnt that answer the questions about STRELKA?
-Popper and Lakatos are good but I'm stuck on Leibowitz
Dave McClain
Posts: 1018
Joined: Fri Mar 10, 2006 12:56 am
Location: Major, 45 Commando, Royal Marines, Condor Barracks, Arbroath, Scotland
Full name: Dave MCClain

Re: Sensational! Y.Ossipov talking about STRELKA

Post by Dave McClain »

Dann Corbit wrote: I think that the main problem is that there is no such thing as a definition of what a clone program is. In some sense, every successful chess program is a clone. Do they or do they not all contain some variant of alpha-beta (mtd(f) and variants are all closely related and can be derived from a simple, similar model)? How about hash tables? How about piece square tables? How about bitboards and 0x88 reference systems? These were all implemented by someone else and yet used in many non-inventor's chess programs. Have these programmers done something wrong? What exactly is the line that is crossed in going from non-clone program to clone program? I don't see this as clear cut as others do.
Dann,

This is the essence of the whole problem that I made in another thread and this is where the opinions vary to no conclusion. Nearly everything we use day to day is a clone of another.

You can take a known patent of an item and make it better and apply for your own patent, it's not illegal, but you can't disguise the work of another and put your name on it.

Copying someone's else's code verbatim is of course wrong but re-writing it to make it better may or may not be acceptable, I really don't know. To what degree you can use another's idea is unknown to me and it seems this is where agreement ends regarding chess engines or perhaps any other software.

If both authors made valid attempts to improve the ideas of Fruit or Rybka without copying it verbatim, then I don't see a problem with either.
User avatar
Onno Garms
Posts: 224
Joined: Mon Mar 12, 2007 7:31 pm
Location: Bonn, Germany

Re: Sensational! Y.Ossipov talking about STRELKA

Post by Onno Garms »

Dann Corbit wrote: Now that I know the heritage, I can spot (for instance) that pawn_info_t of strelka and fruit are very similar.
I would not expect that in a well-reflected rewrite. In Fruit 2.1 pawn_info_t looks like this:

struct pawn_info_t {
uint32 lock;
sint16 opening;
sint16 endgame;
uint8 flags[ColourNb];
uint8 passed_bits[ColourNb];
uint8 single_file[ColourNb];
uint16 pad;
};

flags are not needed in a bitboard engine. because they are used to indicate if there are pawns on their base row (can be tested easily in a bitboard engine).

single_file is used for endgame evaluation only. AFAIK, Rybka prefers to rely on tablebases. I didn't test Strelka, but if it is so similar to Rybka, it should not need single_file. In addition, even if Strelka does Fruit's endgame evaluation, Fruit's tests with single_file can be done easier in a bitboard engine, so no need to store it in a hashtable in my opinion.

The purpose of pad may be to get a round sizeof(pawn_info_t) to 16 byte. At least it is not used anywhere.

In a reflected rewrite of Fruit, I would expect

struct pawn_info_t {
uint32 lock;
sint16 opening;
sint16 endgame;
uint64 passed_bits; // one for both colors is enough
};

I would't call that similar.