Утопили Рыбку…

(Июль 2011)

На протяжении 4-5 последних лет шахматная компьютерная программа Rybka не имела себе в мире равных, стабильно побеждая почти во всех состязаниях. Но вдруг почет и слава исчезли в один миг.

drownedfish

Тихая поначалу свара, обозначившаяся в мире компьютерных шахмат с первых месяцев 2011 года, к середине лета завершилась грандиозным скандалом.

Организация под названием Международная ассоциация компьютерных игр или кратко ICGA (International Computer Games Association), устраивающая всемирные состязания между компьютерами по шахматам, го и прочим популярным в народе играм, своим официальным решением и пресс-релизом от 28 июня с позором дисквалифицировала и лишила всех призов одного из главных своих чемпионов.

Поскольку подобные дела случаются нечасто, начальную часть пресс-релиза ICGA имеет смысл процитировать дословно:

Международная ассоциация компьютерных игр провела расследование по обвинениям в том, что в шахматной программе Rybka ее программист Васик Райлих (Vasik Rajlich) совершил плагиат, присвоив код двух других программ, Crafty и Fruit. Исполком ICGA рассмотрел и оценил свидетельства, представленные следственной комиссией, а также соответствующий отчет по итогам этого расследования.

Единогласным решением голосов 5:0 члены исполнительного комитета ICGA постановили, что полностью согласны с вердиктом следственной комиссии. Мы убеждены, что свидетельства против Васика Райлиха огромны по своему объему и неоспоримы по своей природе.

Поскольку расследование показало, что Васик Райлих во всех случаях участия его программы Rybka в чемпионатах мира по компьютерным шахматам неоднократно и явно умышленно нарушал одно из главных правил состязания, проступок программиста было решено расценивать максимально строго. То есть к нарушителю применили санкции дисквалификации, которые были сочтены аналогичными тем, что Международный олимпийский комитет применяет к участникам олимпиад в случаях наиболее серьезных нарушений своих правил.

Как итог этих санкций, Васик Райлих и его программы пожизненно отстранены от участия в чемпионате мира по компьютерным шахматам и во всех прочих соревнованиях, организуемых или санкционируемых ассоциацией ICGA. Также полностью аннулированы все победы Васика Райлиха и его программы на прошлых чемпионатах мира, т.е. звания чемпиона мира на состязаниях 2007, 2008, 2009 и 2010 годов, а также поделенное 2-3 место на чемпионате 2006.

Победителями этих состязаний теперь признаны программы, занявшие второе место, а все памятные таблички на Призе Шеннона (Shannon Trophy, вручаемый чемпиону), которые в настоящее время несут имя Rybka как победителя турниров 2007-2010 годов, будут удалены с приза и вместо них будут выгравированы новые таблички с именами пересмотренных победителей. Кроме того, ассоциация потребовала, чтобы Райлих вернул ей все четыре Приза Шеннона, а также все денежные премии, полученные им за свою программу-чемпиона…

Чтобы стало понятнее, почему столь обычное, в общем-то, среди программистов дело, как заимствование фрагментов кода – да еще из свободно распространяемых программ вроде Crafty и Fruit – в мире компьютерных шахмат привело к столь беспрецедентному скандалу, потребуется чуть подробнее разобраться с предысторией этого инцидента.

Откровенно славянское название программы (на чешском и польском языках слово Rybka означает то же самое, что и русское «Рыбка») объясняется происхождением автора. Разработчик программы Васик Райлих хоть и родился в начале 1970-х годов в американском городе Кливленд, штат Огайо, однако родителями его были учившиеся в то время в США студенты-математики из Чехословакии.

Детство Райлиха прошло в Праге, но образование он получил тоже в США, закончив Массачусетский технологический институт. С конца 1990-х Райлих живет в Восточной Европе, поначалу в Венгрии, а все последние годы в Варшаве, откуда родом его польская жена – Ивета Райлих, женщина гроссмейстер, входящая ныне в число сильнейших шахматисток мира.

Сам Васик Райлих, кстати, тоже человек в шахматной иерархии далеко не последний, имея звание мастера международного класса. Страстное увлечение шахматами поначалу заставило его бросить работу в США и переехать в Будапешт, неофициально считавшийся шахматной столицей мира, где Райлих надеялся значительно повысить свой рейтинг участием во множестве соревнований.

Когда же к 2003 году для него стало очевидно, что звание гроссмейстера остается недостижимым, а от вершин шахматного Олимпа его отделяют еще примерно две тысячи более сильных игроков, Райлих сделал судьбоносное решение – осознав, что гораздо большего сможет добиться в шахматах как программист. К концу 2005 года он написал собственную программу, которая уже на старте продемонстрировала весьма высокий класс игры и поначалу называлась Rajlich.

Первоначальное имя программы было, можно сказать, в каком-то смысле более честным, поскольку однозначно свидетельствовало о больших амбициях ее автора. Когда же пошли первые заметные победы, название сменилось на Rybka, а одновременно – примерно с 2007 года – появились и разговоры о скользкой природе этой «Рыбки» во всем, что касается исходного кода программы.

То есть сведущие в данной области люди довольно быстро обратили внимание, что во многих ситуациях Rybka в своих первых версиях делала ходы, совершенно аналогичные ходам более известных на тот период программ-конкурентов, в частности, упоминалась программа Crafty. Однако Васик Райлих никогда не раскрывал исходные тексты своего детища, а все намеки и подозрения относительно заимствования чужих разработок решительно отметал, настаивая на полностью оригинальном движке «Рыбки».

От версии к версии Rybka заметно прибавляла в классе игры, что наиболее убедительно отражалось в стабильном завоевании чемпионских титулов на наиболее престижных соревнованиях с 2007 по 2010 год. Попутно было отмечено появление нескольких сильных клонов, теперь уже демонстрирующих игру, подозрительно похожую на ходы «Рыбки». Так что скандальная перебранка, возникшая в начале 2011 года на шахматно-компьютерных форумах вокруг эмоционально горячей темы «кто и что у кого украл» оказалась, в общем-то, достаточно закономерным итогом этой запутанной ситуации.

Поводом для свары стали итоги завершившегося в феврале 2011 года состязания между «Рыбкой» и сравнительно новой, очень сильной программой Houdini бельгийского автора Роберта Гударта. Матч из сорока партий Rybka убедительно проиграла со счетом 16,5 : 23,5, так что на начало 2011 «Гудини» стала считаться сильнейшей шахматной программой мира.

И вот, при обсуждении данных результатов как-то само собой пошло много разговоров об авторских приоритетах, о клонировании и о заимствуемых программистами друг у друга кодах. Насколько существенно «Гудини» была выведена из программ серии IPPOLIT (о которой Райлих в свое время заявлял, что это декомпилированный вариант Rybka)? Является ли Houdini плагиаторской версией «Рыбки»? И что, соответственно, можно сказать о самой Рыбке – не является ли и она сама в значительной степени построенной на кодах других движков?

Как только стали звучать подобные вопросы, Васик Райлих на форуме сайта своей программы в который уже раз заявил совершенно однозначно, что «Рыбка есть и всегда была полностью оригинальным кодом, за исключением разного рода низкоуровневых кусочков, которые находятся во всеобщем достоянии».

Среди участников споров, однако, наблюдалось немало специалистов, уверенных прямо в противоположном. Более того, вскоре появилось открытое письмо, подписанное полутором десятков разработчиков компьютерных шахмат, в котором уже официально поддерживалось обвинение, согласно которому Rybka была клонирована с программы Fruit, написанной Фабьеном Летузье. Поскольку дело приняло нешуточный характер, через некоторое время Дэвид Леви, президент Международной ассоциации компьютерных игр, объявил о создании в рамках ICGA специальной Комиссии по расследованиям клонов и производных.

В принципе, плагиат компьютерных кодов никак нельзя назвать новостью, и коды компьютерных шахмат тут не являются исключением. В статье Дэвида Леви, предварявшей решение о создании Комиссии по расследованиям, упомянута, к примеру, известная история аж из 1989 года, когда было установлено, что шахматная программа Quickstep является почти идентичным клоном другой программы под названием Mephisto. Подобное повторялось еще не раз, и не далее как в прошлом году программа SquarknII была запрещена к участию в чемпионатах по компьютерным шахматам, когда было обнаружено, что она отличается от кода другой программы, Robbolito 0.85g3, всего лишь в трех небольших деталях.

Для чемпионата мира по компьютерным шахматам вопрос о клонах, производных и заимствованиях кода считается особо чувствительным по той причине, что это в первую очередь состязание программистов, а уж затем шахматных игроков-программ. Именно поэтому среди главнейших правил чемпионата под номером 2 прописаны следующие требования к участникам:

Каждая программа должна быть оригинальной разработкой участников состязания. Те команды программистов, чьи коды были выведены из других программ или включают в себя игровые коды, написанные другими разработчиками, в документах заявки на участие должны назвать имена всех прочих разработчиков или указать на источник таких кодов.

Те программы, для которых будет обнаружено, что они являются близкими производными от других программ (например, совершая почти все те же самые ходы), могут быть объявлены недействительными директором турнира после консультаций с экспертами. Для этих целей директору турнира по его требованию должна быть доступна распечатка всех кодов системы, относящихся к игре.

Именно это правило чемпионата, собственно говоря, и стало главной причиной жесточайших санкций, обрушившихся на «Рыбку» и ее создателя после завершения разбирательств.

Как констатировано в итоговых документах ICGA и ее комиссии по расследованиям, во всех пяти случаях своего участия в чемпионатах мира, Васик Райлих злостно и умышленно нарушал Правило номер 2, провозглашая работу других программистов как свою собственную.

Нарушение Райлихом вышеупомянутого правила ассоциация расценила как наиболее серьезный проступок из всех, которые может совершить программист и член ICGA в отношении своих коллег и организации…

Как и в любом большом сообществе, даже в стане конкурентов далеко не все согласились со столь крутыми мерами. Например, вот что сказал известный шахматист и теоретик шахмат, гроссмейстер Ларри Кауфман (Larry Kaufman), на сегодняшний день имеющий титул чемпиона мира среди ветеранов (старше 60 лет). На определенном этапе – при создании версии номер 3 – Кауфман по приглашению Райлиха непосредственно участвовал в разработке Rybka, однако ныне работает над конкурирующим проектом под названием Komodo.

Как специалист, изнутри знакомый с кухней «Рыбки», он свидетельствует, что по его впечатлениям только ранние версии программы были основаны на кодах Fruit и Crafty: «По моему мнению, имелись серьезные причины для дисквалификации Рыбки в ее версии 1, а также любых побед в турнирах, происходивших примерно в течение года со времени ее выхода. Однако ко времени появления Rybka 3 это во всех практических аспектах была уже совершенно новая программа».

В пресс-релизе ICGA по итогам расследования особо подчеркивается категорическое нежелание Васика Райлиха помогать следствию в установлении истины. Когда началось расследование, автор программы не только не предъявил исходных кодов своей программы (что однозначно обязан был сделать), но и вообще отказался сотрудничать со следствием или предоставлять доводы в свою защиту. Такой степени неуважение к коллегам, конечно же, не могло не отразиться на строгости окончательного вердикта.

Подводя краткие итоги всей этой, прямо скажем, некрасивой истории, осталось отметить следующее.

Обе программы, Crafty и Fruit, фрагменты которых следственная комиссия обнаружила в теле «Рыбки», являются свободно распространяемыми программами с открытыми исходными кодами. Иначе говоря, автор Rybka имел возможность совершенно легально использовать коды этих программ, учитывая условия открытой лицензии GPL.

Все, что требовалось от Райлиха – прямо этот факт признать. Но именно этого он не сделал. Таким образом, причиной краха «Рыбки» стало даже не заимствование кода, а категорическое нежелание программиста разделять почет и славу с законными соавторами.