To Moderation - personal attacks on Vas

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

Moderators: hgm, Harvey Williamson, bob

Forum rules
This textbox is used to restore diagrams posted with the [d] tag before the upgrade.
User avatar
michiguel
Posts: 6387
Joined: Thu Mar 09, 2006 7:30 pm
Location: Chicago, Illinois, USA
Contact:

Re: To Moderation - personal attacks on Vas

Post by michiguel » Sat Dec 12, 2009 2:24 am

Milos wrote:
kingliveson wrote:illogical.c

Code: Select all


#include <stdio.h>

int main&#40;void&#41;
&#123;	
	char answer;
	printf&#40;"Is Rybka the strongest chess engine? Enter y or n&#58; ");
	scanf&#40;"%c",&answer&#41;;
	printf&#40;"", answer,"\n");

	if &#40;answer == 'y')
		ruleOne&#40;);
	else
		ruleTwo&#40;);

    return 0;
&#125;

 ruleOne&#40;)
&#123;
	printf&#40;"Rybka is the strongest chess engine.\n");	
&#125;
 ruleTwo&#40;)
&#123;
	printf&#40;"Rybka is not the strongest chess engine.\n");
	ruleThree&#40;);	
&#125;
 ruleThree&#40;)
&#123;
	printf&#40;"Any chess engine stronger than Rybka, must per force be a clone of Rybka.\n");
	ruleFour&#40;);	
&#125;
 ruleFour&#40;)
&#123;
	printf&#40;"Any clone of Rybka, is Rybka.\n");
	ruleOne&#40;);	
&#125;
Pseudocode
:D
It is quite possible this _humor_ would sound really funny in some other language. Somehow, in C, it doesn't sound funny at all.

Miguel

noctiferus
Posts: 364
Joined: Sun Oct 04, 2009 11:27 am
Location: Italy

Re: To Moderation - personal attacks on Vas

Post by noctiferus » Sat Dec 12, 2009 7:55 am

<arturo100>
The first link is readable only after registering to the Rybkaforum

arturo100
Posts: 53
Joined: Thu Jun 25, 2009 8:34 am

Re: To Moderation - personal attacks on Vas

Post by arturo100 » Sat Dec 12, 2009 10:31 am

Thanks for the info. I had a look at them. There are several points that need to be addressed. Unfortunately, still no code is provided to support the claims, so we have to interpret them quite cautiuosly.

The first thing that comes to my mind is why Vas didn't answer. There could be several alternative reasons. The first one could be that he feels guilty. The second one could be that he doesn't want to give away information about his code. However, to tell you the truth, I see that all these claims are compatible with the fact the he studied deeply the fruit code and they don't necessarily imply an infringement of the GPL licence.

Alexander Schmidt wrote:
arturo100 wrote:The first link doesn't work.
It works if you are registered at the Rybka forum :)

Perhaps you could explain to me, then, why:

Rybka's piece square tables are generated from the same code as Fruit's (same KnightRank, etc. constants, but different KnightRankOpening weights)
Rybka's pawn evaluation is virtually identical to Fruit's (different weights again, candidate pawns and backward pawns have a very slightly different formulation)
Rybka's passed pawn evaluation is virtually identical to Fruit's (same bonuses using the quad array {0...,26,77,154,256}, only difference is weights and free_passer split into 3 separate bonuses and based on rank)
Rybka's piece evaluation is virtually identical to Fruit's (different weights only)
Rybka's king shelter evaluation is virtually identical to Fruit's (different weights again, king square generalized to C1, E1, or G1 to store in the pawn table, and a slightly different formula for shelter_file()/storm_file())
Rybka's king safety evaluation is virtually identical to Fruit's (different weights for KingAttackWeight, KingAttackUnit)
Rybka's "pattern" evaluation is virtually identical to Fruit's (different weights, TrappedBishop is not halved for A6/H6).

I have confirmed all of this from reverse engineering Rybka 1, though anyone can see for themselves by looking at *****. Rybka's entire evaluation is basically an optimized and tuned bitboard translation of Fruit's, with Fruit's material evaluation replaced by the infamous lookup table. EVERY single evaluation term in Rybka 1, except for the material imbalance table, appears in Fruit. If everyone wants to consider that "original", then computer chess is really dead.

And this is only the evaluation. There are many more similarities...


Not exactly what you are looking for, maybe someone else has a better link...

kingliveson

Re: To Moderation - personal attacks on Vas

Post by kingliveson » Sat Dec 12, 2009 11:08 am

michiguel wrote:
Milos wrote:
kingliveson wrote:illogical.c

Code: Select all


#include <stdio.h>

int main&#40;void&#41;
&#123;	
	char answer;
	printf&#40;"Is Rybka the strongest chess engine? Enter y or n&#58; ");
	scanf&#40;"%c",&answer&#41;;
	printf&#40;"", answer,"\n");

	if &#40;answer == 'y')
		ruleOne&#40;);
	else
		ruleTwo&#40;);

    return 0;
&#125;

 ruleOne&#40;)
&#123;
	printf&#40;"Rybka is the strongest chess engine.\n");	
&#125;
 ruleTwo&#40;)
&#123;
	printf&#40;"Rybka is not the strongest chess engine.\n");
	ruleThree&#40;);	
&#125;
 ruleThree&#40;)
&#123;
	printf&#40;"Any chess engine stronger than Rybka, must per force be a clone of Rybka.\n");
	ruleFour&#40;);	
&#125;
 ruleFour&#40;)
&#123;
	printf&#40;"Any clone of Rybka, is Rybka.\n");
	ruleOne&#40;);	
&#125;
Pseudocode
:D
It is quite possible this _humor_ would sound really funny in some other language. Somehow, in C, it doesn't sound funny at all.

Miguel
Well, you have to find humor in at least one below:

Illogical.java

Code: Select all

import java.util.Scanner;

public class Illogical &#123;

	public static void main&#40;String&#91;&#93; args&#41;
	&#123;
		System.out.print&#40;"Is Rybka the strongest chess engine? Enter y or n&#58; ");
		Scanner input = new Scanner&#40; System.in );
		String answer = input.nextLine&#40;);
		
		if &#40;answer.equals&#40;"y"))
			ruleOne&#40;);
		else
			ruleTwo&#40;);	
	&#125;


	static void ruleOne&#40;)
	&#123;
		System.out.println&#40;"Rybka is the strongest chess engine.");	
	&#125;
	static void ruleTwo&#40;)
	&#123;
		System.out.println&#40;"Rybka is not the strongest chess engine.");
		ruleThree&#40;);	
	&#125;
	static void ruleThree&#40;)
	&#123;
		System.out.println&#40;"Any chess engine stronger than Rybka, must per force be a clone of Rybka.");
		ruleFour&#40;);	
	&#125;
	static void ruleFour&#40;)
	&#123;
		System.out.println&#40;"Any clone of Rybka, is Rybka.");
		ruleOne&#40;);	
	&#125;

&#125;
Illogical.cpp

Code: Select all

#include <iostream>
using std&#58;&#58;cout;
using std&#58;&#58;endl;
using std&#58;&#58;cin;

class Illogical
&#123;
	public&#58;
		void ruleOne&#40;)
		&#123;
			cout << "Rybka is the strongest chess engine." <<endl;	
		&#125;
		void ruleTwo&#40;)
		&#123;
			cout << "Rybka is not the strongest chess engine." <<endl;
			ruleThree&#40;);	
		&#125;
		void ruleThree&#40;)
		&#123;
			cout << "Any chess engine stronger than Rybka, must per force be a clone of Rybka." <<endl;
			ruleFour&#40;);	
		&#125;
		void ruleFour&#40;)
		&#123;
			cout << "Any clone of Rybka, is Rybka." <<endl;
			ruleOne&#40;);	
		&#125;
&#125;;

int main&#40;)
&#123;
	char answer;
	cout <<  "Is Rybka the strongest chess engine? Enter y or n&#58; ";
	cin >> answer;	
	Illogical newRule;

	if &#40;answer == 'y')
		newRule.ruleOne&#40;);
	else
		newRule.ruleTwo&#40;);

    return 0;
	
&#125;
Illogical.cs

Code: Select all

using System;


public   class Illogical
&#123;
    static void Main&#40;string&#91;&#93; args&#41;
    &#123;
        Console.Write&#40;"Is Rybka the strongest chess engine? Enter y or n&#58; ");

        String answer = Console.ReadLine&#40;);
		
        if &#40;answer =="y")
                ruleOne&#40;);
        else
                ruleTwo&#40;);
    &#125;

    static void ruleOne&#40;)
    &#123;
        Console.WriteLine&#40;"Rybka is the strongest chess engine.");	
    &#125;
    static void ruleTwo&#40;)
    &#123;
        Console.WriteLine&#40;"Rybka is not the strongest chess engine.");
        ruleThree&#40;);	
    &#125;
    static void ruleThree&#40;)
    &#123;
        Console.WriteLine&#40;"Any chess engine stronger than Rybka, must per force be a clone of Rybka.");
        ruleFour&#40;);	
    &#125;
    static void ruleFour&#40;)
    &#123;
        Console.WriteLine&#40;"Any clone of Rybka, is Rybka.");
        ruleOne&#40;);	
    &#125;
&#125;
Illogical Batch

Code: Select all

#!/bin/bash
#

ruleOne&#40;)
&#123;
  echo Rybka is the strongest chess engine. 
&#125;

ruleTwo&#40;)
&#123;
  echo Rybka is not the strongest chess engine.
  ruleThree; 
&#125;

ruleThree&#40;)
&#123;
  echo Any chess engine stronger than Rybka, must per force be a clone of Rybka.
  ruleFour; 
&#125;

ruleFour&#40;)
&#123;
  echo Any clone of Rybka, is Rybka.
  ruleOne; 
&#125;


#main

echo -n "Is Rybka the strongest chess engine? Enter y or n&#58; " 
read answer
if &#91; $answer == "y" &#93;; then
  ruleOne;
else
  ruleTwo;
fi 
Either you wanted to see a reverse engineered code of one of the binaries or perhaps you were just alluding to this comment... :lol:

Steve B
Posts: 3697
Joined: Tue Jul 31, 2007 2:26 pm
Contact:

Re: To Moderation - personal attacks on Vas

Post by Steve B » Sat Dec 12, 2009 11:39 am

several complaints have come in for the various personal attacks and OT nature of some of the posts
several branches of the thread have been removed

Hard Start To The Day At The Moderating Desk Regards
Steve
Last edited by Steve B on Sat Dec 12, 2009 12:02 pm, edited 1 time in total.

Uri Blass
Posts: 8530
Joined: Wed Mar 08, 2006 11:37 pm
Location: Tel-Aviv Israel

Re: To Moderation - personal attacks on Vas

Post by Uri Blass » Sat Dec 12, 2009 11:41 am

Nasir_Shaheen wrote:
bob wrote:
Spock wrote:For the record then - are you accusing Vas of being a liar when he says Rybka is 100% original source code ?
If he says Rybka 1 has no fruit code whatsoever, then I would certainly say that. If he simply says "Rybka has no fruit code" that is a different statement, since I have not personally looked at any disassembled Rybka 2 or 3 code at all.

But rest assured, Rybka 1 does have code from Fruit. Unless you somehow believe that two different people can write identical code completely independently, for a program as complex as chess. Students don't write identical code for assignments that are 100-200 lines long. Or even for assignments 50 lines long. Statistically, I suppose it _could_ happen. Just as I could flip 1,000,000 heads in a row. But it is not very likely at all.
Hi Hyatt , Some young programmer Zach Wegner has given some points in rybka forum to show that rybka 1 is based on fruit , the points he given are following :

" Rybka's piece square tables are generated from the same code as Fruit's (same KnightRank, etc. constants, but different KnightRankOpening weights)
Rybka's pawn evaluation is virtually identical to Fruit's (different weights again, candidate pawns and backward pawns have a very slightly different formulation)
Rybka's passed pawn evaluation is virtually identical to Fruit's (same bonuses using the quad array {0...,26,77,154,256}, only difference is weights and free_passer split into 3 separate bonuses and based on rank)
Rybka's piece evaluation is virtually identical to Fruit's (different weights only)
Rybka's king shelter evaluation is virtually identical to Fruit's (different weights again, king square generalized to C1, E1, or G1 to store in the pawn table, and a slightly different formula for shelter_file()/storm_file())
Rybka's king safety evaluation is virtually identical to Fruit's (different weights for KingAttackWeight, KingAttackUnit)
Rybka's "pattern" evaluation is virtually identical to Fruit's (different weights, TrappedBishop is not halved for A6/H6).

I have confirmed all of this from reverse engineering Rybka 1, though anyone can see for themselves by looking at *****. Rybka's entire evaluation is basically an optimized and tuned bitboard translation of Fruit's, with Fruit's material evaluation replaced by the infamous lookup table. EVERY single evaluation term in Rybka 1, except for the material imbalance table, appears in Fruit. If everyone wants to consider that "original", then computer chess is really dead.
And this is only the evaluation. There are many more similarities.. "
..........................................................................................................

As i don't have any back ground in Programming so I want your openion on these points . Are these points valid ?
If YES , then there is not doubt that Vas has violated the GPL.

Also in this case reverese engineering the current Rybka is absolutely legal.
Assuming that these points are valid I am not sure that it means that Vas has violated the GPL.

The GPL means that code cannot be used but not that ideas cannot be used.

People who write their code from scratch and understand fruit source before they write their own code can come to the same results without copy and paste because they remember the ideas from fruit and as you say there are differences.

The target of fruit is that people learn from it when they are free to use ideas but not code so the fact that rybka1 code and fruit code are not independent does not prove that Vas broke the GPL(starting from fruit and modifying it is not ok but there is no proof that this happened and it is also possible that Vas started from scratch after understanding fruit code).

Uri

Uri Blass
Posts: 8530
Joined: Wed Mar 08, 2006 11:37 pm
Location: Tel-Aviv Israel

Re: To Moderation - personal attacks on Vas

Post by Uri Blass » Sat Dec 12, 2009 11:49 am

Matthias Gemuh wrote:
Bill Rogers wrote:Well Alex as far as I can remember someone here decompiled both Rybka 1 and Fruit and found only a very small amount of code duplicated in both and that was not enough to claim Rybka is a clone. You should read a lot more history in this site.
Bill
Then that "someone" is either unable to decompile or unable to read decompiled code.
OTOH, the guy who by decompilation deciphered the node count obfuscation of Rybka1 proved at source code level that Rybka1 was basically Fruit21.
If you chose not to look at his lengthy evidence, blame yourself.

Matthias.
It is also possible that the "someone" has a different definition of
"very small" relative to your definition.

The question here if the facts that are proved mean that Rybka1 is basically fruit.

There is no doubts that ideas from fruit are used in rybka but the target of GPL is to protect code and not ideas.

Uri

Alexander Schmidt
Posts: 1086
Joined: Thu May 10, 2007 12:49 pm

Re: To Moderation - personal attacks on Vas

Post by Alexander Schmidt » Sat Dec 12, 2009 12:17 pm

Uri Blass wrote:There is no doubts that ideas from fruit are used in rybka but the target of GPL is to protect code and not ideas.

Uri
Taking ideas don't result in a similar UCI output. But I respect your opinion. I would wish the people would be sceptical with clone accusation also for other engines :)

Best wishes,
Alex

User avatar
Matthias Gemuh
Posts: 3238
Joined: Thu Mar 09, 2006 8:10 am
Contact:

Re: To Moderation - personal attacks on Vas

Post by Matthias Gemuh » Sat Dec 12, 2009 12:54 pm

Uri Blass wrote:
There is no doubts that ideas from fruit are used in rybka but the target of GPL is to protect code and not ideas.

Uri
We are not arguing about the copying of ideas.
It is about the copying of source code.

Matthias.
My engine was quite strong till I added knowledge to it.
http://www.chess.hylogic.de

bob
Posts: 20406
Joined: Mon Feb 27, 2006 6:30 pm
Location: Birmingham, AL

Re: To Moderation - personal attacks on Vas

Post by bob » Sat Dec 12, 2009 5:42 pm

Uri Blass wrote:
Nasir_Shaheen wrote:
bob wrote:
Spock wrote:For the record then - are you accusing Vas of being a liar when he says Rybka is 100% original source code ?
If he says Rybka 1 has no fruit code whatsoever, then I would certainly say that. If he simply says "Rybka has no fruit code" that is a different statement, since I have not personally looked at any disassembled Rybka 2 or 3 code at all.

But rest assured, Rybka 1 does have code from Fruit. Unless you somehow believe that two different people can write identical code completely independently, for a program as complex as chess. Students don't write identical code for assignments that are 100-200 lines long. Or even for assignments 50 lines long. Statistically, I suppose it _could_ happen. Just as I could flip 1,000,000 heads in a row. But it is not very likely at all.
Hi Hyatt , Some young programmer Zach Wegner has given some points in rybka forum to show that rybka 1 is based on fruit , the points he given are following :

" Rybka's piece square tables are generated from the same code as Fruit's (same KnightRank, etc. constants, but different KnightRankOpening weights)
Rybka's pawn evaluation is virtually identical to Fruit's (different weights again, candidate pawns and backward pawns have a very slightly different formulation)
Rybka's passed pawn evaluation is virtually identical to Fruit's (same bonuses using the quad array {0...,26,77,154,256}, only difference is weights and free_passer split into 3 separate bonuses and based on rank)
Rybka's piece evaluation is virtually identical to Fruit's (different weights only)
Rybka's king shelter evaluation is virtually identical to Fruit's (different weights again, king square generalized to C1, E1, or G1 to store in the pawn table, and a slightly different formula for shelter_file()/storm_file())
Rybka's king safety evaluation is virtually identical to Fruit's (different weights for KingAttackWeight, KingAttackUnit)
Rybka's "pattern" evaluation is virtually identical to Fruit's (different weights, TrappedBishop is not halved for A6/H6).

I have confirmed all of this from reverse engineering Rybka 1, though anyone can see for themselves by looking at *****. Rybka's entire evaluation is basically an optimized and tuned bitboard translation of Fruit's, with Fruit's material evaluation replaced by the infamous lookup table. EVERY single evaluation term in Rybka 1, except for the material imbalance table, appears in Fruit. If everyone wants to consider that "original", then computer chess is really dead.
And this is only the evaluation. There are many more similarities.. "
..........................................................................................................

As i don't have any back ground in Programming so I want your openion on these points . Are these points valid ?
If YES , then there is not doubt that Vas has violated the GPL.

Also in this case reverese engineering the current Rybka is absolutely legal.
Assuming that these points are valid I am not sure that it means that Vas has violated the GPL.

The GPL means that code cannot be used but not that ideas cannot be used.

People who write their code from scratch and understand fruit source before they write their own code can come to the same results without copy and paste because they remember the ideas from fruit and as you say there are differences.
I have responded to this nonsensical idea many times. This is simply FALSE. You will _not_ end up with identical code, identical internal program structure (and a bizarre structure at that), same score values (exactly), etc. You get that by copying code, _not_ ideas. You just need to ask anyone that has been teaching any sort of programming language for a significant amount of time, they will give you the _same_ response.

The target of fruit is that people learn from it when they are free to use ideas but not code so the fact that rybka1 code and fruit code are not independent does not prove that Vas broke the GPL(starting from fruit and modifying it is not ok but there is no proof that this happened and it is also possible that Vas started from scratch after understanding fruit code).
It is also possible that the universe was formed by elves in a workshop somewhere. But it is not very likely...




Uri

Post Reply