# Rybka

Rybka (ceco: piccolo pesce, pronunciato) è un motore scacchistico sviluppato dal maestro internazionale di scacchi ceco Vasik Rajlich. Tra il 2007 e il 2011 Rybka è stato al vertice delle principali graduatorie di motori scacchistici ed ha vinto molti tornei, incluse quattro edizioni del campionato del mondo di scacchi per computer, dal 2007 al 2010.
Il 28 giugno 2011 Vasik Rajlich è stato squalificato a vita dalla ICGA con l'accusa di avere plagiato parte del codice sorgente di Rybka da Crafty e Fruit e gli sono stati ritirati tutti i titoli, i premi ed i riconoscimenti ottenuti. Rajlich ha sempre respinto le accuse, e alcuni esponenti del mondo dell'informatica scacchistica si sono divisi sulla legittimità del verdetto.
Come conseguenza della squalifica, Rajlich ha cessato lo sviluppo indipendente di Rybka. In seguito ha accettato l'offerta della Chessbase di unire Rybka al marchio Fritz, e il motore di Rajlich è alla base di Fritz 15 (distribuito nel 2015) e Fritz 16 (distribuito nel 2017).

## Team

Il team di Rybka era composto da Vasik Rajlich, maestro internazionale, autore principale del software, Larry Kaufman (all'epoca maestro internazionale), principale responsabile della funzione di valutazione a partire dalla versione 2.3, Iweta Rajlich, grande maestro femminile e maestro internazionale, principale tester di Rybka, Jeroen Noomen (che ha lavorato in precedenza su Rebel) e Dagh Nielsen (che è anche giocatore di scacchi avanzati), autori del libro di apertura.

## Caratteristiche

Rybka supporta sistemi con multiprocessore simmetrico (SMP). È un software closed-source, ma alcuni dettagli del funzionamento interno sono stati descritti: usa una bitboard per la rappresentazione della posizione, ed ha una ricerca ad albero con potatura alfa-beta aggressiva, con una finestra di aspirazione relativamente larga, che porta ad alberi di ricerca relativamente squilibrati. I dettagli della funzione di valutazione sono sconosciuti, ma dalla versione 2.3.1 includono il lavoro di Larry Kaufman sugli squilibri di materiale, molto del quale è basato su studi degli anni novanta.
La forza di Rybka 1.0 beta (che è liberamente scaricabile) è stato valutata pari a 2809 punti Elo (circa la stessa forza di Toga II), e Rybka 2.3.1 è stato valutato circa 200 Elo più forte della prima versione. Le versioni recenti di Rybka supportano sistemi multiprocessore, che comportano un incremento approssimativo della forza di 50 punti Elo per ogni raddoppio del numero di processori. Rybka è molto più forte – circa il 60% più veloce – se usato su sistemi a 64-bit rispetto a 32-bit. La funzione di valutazione di Rybka era considerata uno dei suoi principali punti di forza rispetto ai software rivali dell'epoca.

## Partecipazione ai tornei

Nel 2005, fra il 27 ed il 30 dicembre, Rybka partecipa al 15º International Paderborn Computer Chess Championship a Paderborn, in Germania. Ha vinto il torneo con un punteggio di 5½ su 7, davanti ad altri motori come Gandalf, Zappa, Spike, Shredder e Fruit.
Al CCT8 dal 25 al 26 febbraio, Rybka vince con 8 punti su 9, rimanendo imbattuto. Nel torneo PAL/CSS Freestyle Tournament dell'aprile 2006, Rybka 1.1 senza aiuto si piazza primo. Nel torneo finale, finisce il torneo in seconda e terza posizione, dietro Hydra. Al 6º Leiden ICT nel maggio 2006, Rybka vince con un punteggio di 8½ su 9, davanti a Sjeng, Gandalf e Shredder. Al 14º Campionato Mondiale di scacchi per computer a Torino, nel maggio 2006, Rybka, giocando sotto il nome di Rajlich, finisce secondo, ex æquo con Shredder, dopo Junior, il campione mondiale del 2006. Al PAL/CSS Freestyle Tournament del giugno 2006, il team di Rybka, giocando sotto la guida di Rajlich, pareggia per il primo posto con Intagrand. Nella finale, il team di Rybka ottiene la prima posizione con un punto di d9istacco sul secondo. Tutti gli 8 qualificati alla finale hanno usato Rybka. Nel Dutch open computer chess championship del 2006, Rybka 2.2 conclude in prima posizione con un punteggio perfetto di 9/9. Nel dicembre 2006, Rybka partecipò al 16º International Paderborn Computer Chess Championship, vincendo il torneo con un punteggio di 6½ punti su 7.
Nel febbraio 2007, Rybka partecipa al CCT9 vincendo con 6/7. Al 7º Leiden ICT nel maggio 2007 vince con un punteggio di 7½ su 9, davanti a Zappa ed HIARCS. Rybka ha vinto il 15º WCCC nel giugno 2007 con un punteggio di 10 su 11. Il team di Rybka, giocando sotto i comandi di Rajlich, nel giugno 2007 ha la meglio nella finale del PAL/CSS Freestyle con un punteggio di 6/9. Un anno dopo vince nuovamente il Dutch open computer chess championship, con un punteggio di 8/9.
Nel gennaio 2008 Ribka vince ex æquo il CCT10 con un punteggio di 5.5/7. Nell'ottobre dello stesso anno, vince il 16º WCCC a Pechino, con un punteggio di 8/9. Un mese dopo conquista imbattuto il 27º Open Dutch Computer Chess Championship con il punteggio perfetto di 9/9.
Ribka vince ancora nel marzo 2009 al CCT11 con un punteggio di 7.5/9, imponendosi poi due mesi dopo nel 17º WCCC, a Pamplona, dove ottiene un punteggio di 8.0/9, 1,5 punti sopra Junior, Shredder e Deep Sjeng. Nello stesso evento vince anche la 14th Computer Olympiad (torneo senza limiti hardware) con 5 punti (1 punto sopra Shredder) e il 17º WCCC Blitz, con 7 punti (è sempre Shredder a seguire, ad una distanza di 0,5 punti).

## Sfide individuali
### Incontri con giocatori umani

Rybka ha vinto un incontro contro il GM Jaan Ehlvest, che necessitò di un vantaggio (un pedone in più dato all'umano). Larry Kaufman finanziò un evento nel quale un grande maestro potesse affrontare Rybka in un incontro di 6 partite senza squilibri di materiale. Fu di nuovo Ehlvest ad affrontare Rybka, fornendogli un tempo di riflessione doppio ed il bianco ad ogni partita, impiegando un libro di apertura di sole tre mosse, hash limitata a 512MB e nessuna tablebase, motivo per il quale il match è stato soprannominato "tutto tranne che un pedone". Il match finì 4.5-1.5, con tre vittorie di Rybka e tre patte.
Rybka ha affrontato il GM Dzindzichashvili (con handicap di pedone e mossa) in un incontro di otto partite disputato tra il 3 e il 7 marzo 2008. Il risultato è stato 4-4.
Nel settembre 2008 Rybka ha affrontato il GM Vadim Milov, che all'epoca aveva un Elo di 2705 ed era 28º nella classifica mondiale, concluso con la vittoria di Milov per 4.5–3.5. Due partite sono state giocate in condizioni standard, con Milov al Bianco, e il GM ha perso la prima e ottenuto la patta nella seconda. Le due partite seguenti sono state disputate con handicap di mossa e pedone (Milov aveva il Bianco e si giocava senza il pedone in f7), con la prima finita in scacco perpetuo e la seconda vinta da Milov. Le ultime quattro partite sono state disputate con handicap di cambio (senza la torre in a1 e il cavallo in b8), terminate con tre patte e una vittoria di Milov.

### Incontro con Zappa

Nel 2007 Rajlich sfidò i campioni FIDE Fritz e Junior in un incontro di 24 partite con handicap di un punto a sfavore di Rybka. Le trattative con il team di Junior sono naufragate a causa di divergenze sull'hardware da usare nel match. L'offerta è stata quindi cambiata in un incontro di dieci partite contro Zappa, con un montepremi di 10 000 USD.
Zappa batté Rybka 5½-4½. La quarta partita, durata 180 mosse, è ricordata per un errore di Rybka. Il gioco stava per raggiungere la patta per 50 mosse, ma alla mossa 109 a causa di un errore di valutazione Rybka sacrificò un pedone per evitare la patta, portando alla vittoria di Zappa. Nella nona partita Rybka aveva un vantaggio di tre pedoni in una posizione vincente, quando giocò un errore grossolano alla mossa 71, non rendendosi conto che in un finale con alfieri di colore opposto era possibile ottenere la patta. Anthony Cozzie, autore principale di Zappa, ringraziò l'operatore di Zappa nel match, Erdogan Gunes, per la pazienza avuta nel proseguire queste partite fino alla fine nonostante l'esito sembrasse scontato, invece di accettare la patta nella quarta partita o abbandonare nella nona.

## Versioni

La prima beta di Rybka venne distribuita il 2 dicembre 2005.

### Rybka 3

Mentre le precedenti versioni di Rybka sono state distribuite esclusivamente da Convekta, Rybka 3 è stato commercializzato sia da Convekta che da ChessBase. Vasik Rajlich annunciò il piano per sviluppare una interfaccia utente specifica per Rybka, implementata e distribuita da ChessOK (rebrand di Convekta).
Il supporto per gli scacchi960 è stato implementato per il Chess Classic Mainz 2007, dove Rybka successivamente vinse il torneo di Scacchi960 per computer.

### Rybka 4

La quarta versione del software è stata distribuita il 26 maggio 2010, in edizioni per multiprocessore e per processore singolo. A soli quattro giorni dalla distribuzione ufficiale, Ribka 4 ha vinto il suo primo torneo, l'ICT10, con un punteggio di 8/9.
La versione 4.1 è stata distribuita il 5 marzo 2011, dopo l'inizio delle indagini contro Rybka avviate dall'ICGA, ed è l'ultima versione ufficiale del motore.

### Rybka cluster

Rajlich ha sviluppato il Cluster Rybka, denominato Rechenschieber, una versione ottimizzata di Rybka che gira su un supercomputer installato a Minden. Il progetto è nato nel settembre 2008 e dal 1º febbraio 2011 il cluster viene affittato per l'utilizzo remoto.
Il cluster è di proprietà di Lukas Cimiotti, responsabile anche della progettazione e della supervisione. È costituito da 29 motherboard, con 656 GB di RAM, 5 TB di memoria di massa su disco a stato solido, 58 socket per microprocessori (Intel, architettura Nehalem) per un totale di 296 core fisici.

### Sviluppi successivi

Alcune funzionalità sono state annunciate ufficialmente ma mai implementate, come il supporto nativo su Linux e la pubblicazione per piattaforme diverse da Windows. Rybka può essere eseguito tramite Wine, e per la versione a 64 bit gli autori del motore hanno distribuito una versione sperimentale di Wine specifica per Rybka, chiamata microwine. Il supporto per Pocket PC e altri dispositivi mobili è stato annunciato nel 2007 ma mai realizzato.
La distribuzione di una quinta major release del motore, prevista tra la fine del 2011 e l'inizio del 2012, era stata annunciata ma non è avvenuta, in quanto lo sviluppo del software è praticamente cessato a seguito dell'indagine ICGA a carico di Rajlich. Dal 2015 Rybka è stato distribuito, sotto il marchio Fritz, come motore nei prodotti Chessbase.

## Controversie
### Accuse di plagio ai danni di Rybka
#### Strelka

Nel maggio 2007 è stato distribuito un motore scacchistico chiamato Strelka (in russo, freccia), scritto da Yuri Osipov. Strelka è stato accusato di essere un clone di Rybka 1.0 beta, reingegnerizzato e leggermente modificato. Diversi giocatori osservarono che Strelka eseguiva analisi identiche a quelle di Ribka in svariate situazioni, mostrando gli stessi bug e le stesse debolezze. Osipov sostenne ripetutamente che Strelka era basato su Fruit, non su Rybka, e che le somiglianze derivassero dal fatto che anche Rybka fosse basato su Fruit, o perché la funzione di valutazione era molto simile a quella di Rybka.
Con l'uscita di Strelka 2.0 beta, il codice sorgente è stato pubblicato. Rajlich disse che Strelka 2.0 beta era certamente un clone di Rybka 1.0 beta, benché con dei miglioramenti. Sulla base di ciò, si appellò alla proprietà del codice sorgente e affermò di essere intenzionato a ri-distribuire il software a suo nome, sebbene tale minaccia non sia stata messa in atto.
Rajlich sostenne anche che "Yuri Osipov" fosse uno pseudonimo. Victor Zakharov, della società di software scacchistico Convekta, ha contattato Osipov per una collaborazione nello sviluppo di software scacchistico per dispositivi mobili, e ha detto in merito:
«I consider that Yuri Osipov (Ivanovich) is real name. He didn't hide it. However I can't state this with 100% assurance.»
«Io penso che Yuri Osipov (Ivanovich) sia un nome reale. Non lo ha nascosto. Comunque non posso esserne sicuro al 100%»
(Victor Zakharov)
Fabien Letouzey, sviluppatore di Fruit, sostenne invece che Strelka fosse un derivato di Fruit con alcune modifiche minori.

#### IPPOLIT

IPPOLIT, RobboLito, Igorrit, IvanHoe, FireBird e Fire sono una serie di forti motori scacchistici open source sviluppati da un team di programmatori anonimi che si fanno chiamare i decabristi, in riferimento all'insurrezione decabrista.
IPPOLIT è stato distribuito nel maggio 2009 con il codice sorgente, tuttavia è rimasto poco conosciuto fino a ottobre del 2009 perché molti forum scacchistici non pubblicavano materiale il cui stato legale era considerato discutibile. Vasik Rajlich ha affermato che IPPOLIT è una versione decompilata di Rybka e che le persone coinvolte l'avrebbero informato via email. Prove indiziarie del plagio secondo Rajlich sono fornite dal fatto che il codice sorgente di IPPOLIT sembra il risultato di una decompilazione, oltre al fatto che lo stile di gioco di IPPOLIT e dei suoi derivati è molto simile a quello di Rybka 3.

### Accuse di plagio ai danni di Fruit e Crafty

Alcune vecchie versioni di Rybka sono state accusate di essere un clone di Crafty, e tali versioni hanno gareggiato in competizioni nelle quali il fatto sarebbe stato motivo di squalifica. Vasik Rajlich non ha risposto a queste accuse.
Rybka è stato anche accusato di avere impiegato codice sorgente di Fruit, ma Rajlich ha negato categoricamente una simile eventualità, affermando che il codice di Rybka è interamente originale. Altre accuse di violazione della licenza GPL sono state mosse dal programmatore di software scacchistici Zach Wegner, basate su una decompilazione ed un anno di studio dell'eseguibile di Rybka 1.0. Rajlich si è inizialmente rifiutato di rispondere a tali accuse. Lo sviluppatore di Fruit, Fabien Letouzey, ha pubblicato nel gennaio 2011 una lettera aperta chiedendo chiarimenti sulla vicenda.
Il presidente della International Computer Games Association (ICGA), David Levy, ha richiesto la convocazione di un collegio di programmatori di software scacchistico per esaminare la situazione. Tra le varie possibilità vi era quella di revocare tutti i titoli ottenuti da Rybka, in virtù del punto 3.h.iv dello statuto della fondazione. Quattordici noti programmatori di software scacchistico hanno scritto una lettera aperta a David Levy, Jaap van den Herik e al consiglio della ICGA dichiarando che era evidente il fatto che Rybka 1.0 beta (la prima versione forte di Rybka) derivasse da Fruit, chiedendo alla ICGA di valutare con attenzione i fatti e agire di conseguenza.
Il 28 giugno 2011 la ICGA ha terminato la sua indagine sulla controversia Fruit-Rybka, concludendo che Vasik Rajlich nello sviluppo di Rybka ha plagiato il codice di altri due motori, Crafty e Fruit. Vasik Rajlich sarebbe così andato contro una regola fondamentale della ICGA, la quale stabilisce che i motori partecipanti alle competizioni devono interamente essere opera del team di sviluppatori, la cui violazione è considerata dalla ICGA la più offensiva verso la federazione e verso i colleghi. L'associazione ha disposto come pena la revoca di tutti i titoli conseguiti da Rybka, tra i quali cinque edizioni del WCCC vinte consecutivamente dal 2006 al 2010 e la squalifica a vita per Vasik Rajlich da tutte le competizioni organizzate dalla ICGA. Inoltre la federazione ha richiesto la restituzione delle quattro repliche dello Shannon Trophy, conseguite nei WCCC del 2007, 2008, 2009 e 2010, e il rimborso di tutti i premi in denaro ottenuti.

#### Reazione e critica alle accuse

Vasik Rajlich ha scelto inizialmente di non difendersi dalle accuse e di non discutere la questione pubblicamente o rispondere ai tentativi di mettersi in contatto con lui. L'unica risposta di Rajlich alle accuse è stata una email indirizzata al presidente della ICGA, nella quale ha affermato:
«Rybka has does not “include game-playing code written by others”, aside from standard exceptions which wouldn’t count as ‘game-playing’. [...] The vague phrase “derived from game-playing code written by others” also does not in my view apply to Rybka.»
«Rybka non "include codice per il gioco scritto da altri", a parte eccezioni standard che non possono essere considerate 'per il gioco'. [...] Anche la frase vaga "derivato da codice per il gioco scritto da altri" dal mio punto di vista non si applica a Rybka.»
(email spedita da Rajlich a David Levy, presidente della ICGA, il 13 maggio 2011)
Rajlich ha poi commentato le accuse in una intervista, datata 4 luglio 2011 e pubblicata su YouTube, affermando che Rybka non conteneva codice copiato da Crafty e Fruit in quanto impiega una rappresentazione della scacchiera ed una struttura delle funzioni di ricerca differenti. Rajlich ha affermato di avere preso ispirazione da Fruit su alcune soluzioni, ma ad un livello più astratto del codice sorgente, e che Rybka contiene codice sorgente di pubblico dominio proveniente da altri software, come il codice per le tablebase Nalimov attinto da Crafty, pratica che a detta del programmatore statunitense è legale e accettata.
Il 5 ottobre 2011 Ed Schröder, sviluppatore del motore scacchistico REBEL, ha pubblicato un'analisi nella quale contraddice le accuse della ICGA verso Rajlich. Schröder ha fatto parte della commissione d'inchiesta istituita dalla ICGA contro Rybka, ma ha preso le distanze da essa dubitando dei metodi impiegati e delle conclusioni alle quali la commissione era giunta. Anche Miguel A. Ballicora, autore del motore scacchistico Gaviota e delle tablebase omonime, ha contestato il verdetto.
Nel gennaio 2012 ChessBase news ha pubblicato, suddividendola in quattro parti, un'analisi curata da Søren Riis, dottore in informatica della Queen Mary University di Londra ed ex scacchista (con un Elo di 2300), che contesta il verdetto della ICGA e critica il metodo d'indagine adottato e la composizione della commissione stessa, costituita quasi esclusivamente da rivali di Rajlich sui quali gravava un pesante conflitto d'interessi. L'articolo di Riis è stato a sua volta criticato da Mark Watkins, ricercatore di matematica presso l'Università di Sydney, che ha scritto a sua volta un articolo nel quale analizza e contesta le conclusioni di Riis, e da David Levy, presidente della ICGA. Lo stesso Levy ha rilasciato un'intervista, pubblicata in due parti da ChessBase nel febbraio 2012, nella quale chiarisce diverse decisioni prese nel caso Rajlich e difende la composizione della commissione d'inchiesta.
La Computer Schaak Vereniging Nederland (CSVN, ovvero la federazione olandese di scacchi per computer) ha deciso di non procedere contro Rajlich per quanto le compete, esprimendo seri dubbi sulla correttezza del verdetto formulato dalla ICGA. A seguito di questa presa di posizione, alcuni importanti eventi organizzati dalla CSVN (come il DOCCC, uno tra i primi e più prestigiosi tornei di computer chess) sono stati disertati da molti top team. 15 squadre hanno inoltre scritto una lettera aperta il 21 settembre 2011, sostenendo la falsità fattuale delle affermazioni e criticando la presa di posizione dell'associazione, per la quale auspicavano un cambio al vertice concretizzatosi poi il 1º dicembre 2011, quando il presidente Cock de Gorter ha lasciato l'incarico.
Nel 2012 Vasik Rajlich e il programmatore scacchistico Chris Whittington hanno fatto ricorso alla commissione etica della FIDE. Secondo il giudizio della commissione, la ICGA non ha violato il codice etico della FIDE né i regolamenti o i principi della federazione, ma afferma che la squalifica a vita di Rajlich non ha chiare basi statutarie né garanzie procedurali per l'accusato. Il caso è stato concluso nel 2015, la commissione si è espressa a sfavore della ICGA con un monito, invitandola ad adeguare i propri statuti e regolamenti ai principi generali della FIDE.