Привет, Codeforces! Вчера случился важный для спортивного программирования прецедент: в России полностью провалился школьный этап ВСОШ по информатике. В тестирующей системе нельзя было выбрать язык, она не тестировала и не сохраняла посылки на протяжении всего контеста, а организаторам пришлось прямо во время олимпиады переписывать регламент…
Причина для нашей страны не нова — кумоство и некомпетентность. Я был волонтёром в одной из школ, в которых проводился этап, и могу рассказать, как всё случилось.
Вопрос тестирующей системы
Раньше школьный этап был децентрализован: каждый регион придумывал свои задачи и сам выбирал удобную ему тестирующую систему. Иногда это вызывало “косяки” на местах, иногда поступали жалобы на неравную сложность задач, но в целом система работала.
В какой-то момент Москва решила, что так дело не пойдёт, и в прошлом году пересадила 80% Российских регионов на новую тестирующую систему от образовательного центра Сириус.
Тут стоит сделать небольшое отступление и сказать, что стабильная тестирующая система — чрезвычайно сложный в разработке продукт, который нужно полировать годами. Почти все олимпиады в РФ используют ejudge (запомните эту систему), Яндекс. Контест или Codeforces — эти проекты не новы (всем более 10 лет) и не идеальны, но хотя бы проверены временем и разрабатываются компетентными авторами.
Из попыток создать новую ТС можно отметить разве что Sort Me, но в целом это считается неподъёмной и ненужной задачей. Сириус захотел решить её самостоятельно, и скоро мы узнаем, почему.
Что произошло в прошлом году
Итак, вместо готового решения Сириус заявил новую тестирующую систему Сириус.Курсы. В прошлом году на ней в тестовом режиме прошёл ВСОШ, и все её проблемы стали сразу заметны.
Я знаком с пятью преподавателями по программированию из пяти разных регионов. Каждый из них пожаловался мне, что Сириус.Курсы совершенно не готовы к нагрузкам: “Огромные очереди на тестирование”, “невозможно зайти”, “постоянные падения” — это прямые цитаты. Отдельно стоит причина “нет контроля за списыванием” — Сириус.Курсы забрали даже базовую возможность анализировать решения на похожесть.
В том году я так же волонтёрил на школьном этапе в Москве, и рад был бы дать свой отзыв о Сириус.Курсах… Если бы Москва сама использовала то, что создала! :) Видимо, увидев, что система не готова, этап тихонько перенесли на локально поднятый ejudge.
Как это объяснили организаторы
Официальная причина — “какой-то не очень удобный скоринг”. Организатор соревнований Денис Кириенко вполне открыто об этом говорит в своём посте, зачем-то вбрасывая фейки вроде “Сириус умеет держать нужную нагрузку”. Давайте сделаем небольшой фактчек.
Она [система сириуса] специально была разработана для проведения подобных мероприятий
Инсайд: изначально Сириус.Курсы задумывались как аналог Stepik и предназначались для олимпиад по математике, химии и прочим предметам, где от участника требовалось решить задачу на листочке и вписать текстовый ответ. Поддержка задач по программированию появилась в последнюю очередь — мол, в тех задачах мы просто сравнивали ответ, а в этих будем программы людей запускать. Любой программист понимает, что спроектированная так система не может работать нормально.
Стандартные алгоритмы [антисписывания], которые используются на подобных соревнованиях (предполагающие попарное сравнение подозрительных решений членом жюри), здесь не сработают, потому что решений и списываний очень много, сравнивать попарно решения нет никакой возможности.
Денис говорит, что антиплагиат и не нужен вовсе, потому что участников слишком много! Только вот возможность сравнить попарно решения есть — и это децентрализация, как и многие годы до этого. Люди писали туры на своих задачах маленьким регионом, а местные преподаватели прогоняли свой небольшой набор решений через антиплагиат.
Проблем с тестирующей системой не было, но, к сожалению, отбиться от DDOS-атак без потерь не удалось. […] По моим оценкам, трудности доступа к тестирующей системе […] возникли у 30% участников олимпиады
Денис, если вы своими руками развернули тестирующую систему, но ваш сервер уничтожили школьники — это тоже проблема с тестирующей системой! В частности, проблема в том, что вы не захотели использовать облачные решения и переоценили свои силы по настройке серверов.
В своей статье Денис так же “надеется, что в дальнешем сможет использовать Сириус.Курсы”. Я тогда морально простил этот фейл организаторам — ошибки при внедрении новых систем не исключены, но в следующем году всё поправят и централизуют. Ведь правда?
Что произошло в этом году
25 октября 2022 года я пришёл в родную Московскую школу помогать с организацией контеста. Участникам открыли Сириус.Курсы, выдали одноразовые коды, олимпиада началась. Я был уверен, что в этом году Сириус.Курсы сделают лучше, и теперь они точно выдержат нагрузку. Я никогда так не ошибался. 
Удивительно, но за год Сириус сделали ещё хуже, он стал абсолютно непригоден для соревнований! По пунктам:
- Посылки не тестируются в принципе Не знаю, что именно Сириус.Курсы там намудрили, но очередь забилась настолько, что за время тура не успело провериться почти НИ ОДНО решение.
- Вы не можете менять язык программирования Если вы отправили решение скажем, на Python, то отправить решение на C++ уже не сможете. Даже если при первой посылке случайно поставили не тот язык. Как признались позже организаторы, это баг, а не задумка.
- Решения не сохраняются Надежды на тестирование уже нет, отдебажили всё локально и сдали? Тогда помолитесь, чтобы решение вообще сохранилось в системе. На всякий случай заскриншотьте, что сдали.
Потрясающе дополняет эту картину сообщение Дениса Кириенко, которое он в спешке начал рассылать участникам:

В общем, тестирующих систем много, но мы сделаем свою. Кто-то же должен быть худшим. Глупые регионы не умеют проводить олимпиады, лучше отдайтё все Московской группе экспертов, они всё даже без тестирующей системы проведут.
Корень проблемы
Зачем Сириус взялся за разработку новой системы, если их решение не справляется? Ответ — Сириус не разрабатывал новую систему. Он испортил старую.
Как выяснилось из переписок, Сириус.Курсы — всего лишь оболочка над старой системой ejudge.

То есть вся история была пшиком. Сириус не предложил какую-то альтернативу — он просто:
- Спрятал старое open-source решение под своим логотипом
- Не смог его настроить, но решил, что и так сойдёт
- В течение года ничего не делал для улучшения системы
- С помощью админресурса навязал всем регионам свои костыли
- Сорвал школьный этап самой важной олимпиады в стране
Когда система работает плохо — это некомпетентность. Когда некомпетентность появляется в образовании, предполагающем принцип меритократии, это обычно называется кумоством. Говорят, что коррупция и кумоство боятся гласности — поэтому я и пишу этот пост.
Вместо заключения
Я полюбил программирование, когда впервые пришёл на школьный этап ВСОШ. Мне понравилось решать задачки, мои глаза загорелись. Но сегодня я видел в глазах школьников лишь разочарование, негодование и опустившиеся руки.
Дорогие Денис Кириенко и Сириус, если ваша цель — чтобы наши школьники и студенты перестали быть лучшими программистами в мире и расхотели брать золотые медали на мировых чемпионатах, то вы всё делаете правильно.









Провал в проведении очевиден, но где здесь кумовство?
Я уверен, организаторы сделают выводы и думаю повторный ШЭ послезавтра будет гораздо лучше.
Почему у человека так любящего программирование аккаунт в кф был создан менее двух часов назад?
базочка
Будет какой-то повторный ВсОШ?
Да, завтра
Пруф можно?
Я, чел из региона, так рад что в Москве проведут повторный этап! Поздравляю вас!!! А остальным?
У меня друг из Казани говорит, что у них тоже провели
Их тоже поздравляю :)
У меня аккаунт на CF подольше, и вот у меня встречный вопрос, дающий ответ на ваш:
Когда уже есть эффективно работающие сервисы, есть доступные открытые решения для локального развертывания, какие могут быть причины делать новую? Какие могут быть причины централизованно навязывать именно ее?
Учитывая, что система не взялась из воздуха, на ее разработку и внедрение был освоен (я боюсь слова потрачен в данном контексте) бюджет, то ответы, как бы это сказать, сами приходят на ум.
Вишенкой на торте оказывается тот факт, что это кривая обертка над опен-сорсным решением. В самом деле, где же тут коррупция, если это проект Сириуса (и слова бы плохого не сказал, если бы освоенный бюджет вылился в работающий продукт), и где же тут кумовство (ведь так мало у нас людей с навыками, опытами и экспертизой, что в качестве подрядчика были выбраны те, кто не сумел сделать ни-че-го)?
Кумовство было упомянуто ради кликбейта? Потому что аргументации здесь 0.
Я согласен, что школьный этап плохо проведен, и согласен, что Сириус облажался с кучей багов в этом году, но претензии к Кириенко натянутые и фейковые. Человек своими силами проводил в прошлом году ШЭ, а после прочтения поста кажется, что он главный злодей. Особенно странно читать претензии по типу того, что все поднималось локально, хотя в следующем абзаце написано, что были арендованы сервера. И я не понимаю в чем его вина, все проколы, которые вы упомянули, в основном не относятся к его компетенции.
Если кого и винить, то Сириус, за ужасно проведенный ШЭ и за то, что они до сих пор не вернули деньги за аренду серверов, хотя если бы сделали это в срок, то и ШЭ проведен был бы лучше.
Давайте отделять мух от котлет. Школьный этап провалился, но валить это на организаторов, за свой счет проводивших туры, коверкая и по-своему интерпретируя их комментарии -- не нормально. Кумовство, возможно, есть, коррупция в каком-то виде, может быть, есть, некомпетентные новые организаторы -- безусловно, но давайте все-таки будем искать первопричины.
Система нормально работала в больших регионах. Вы ниже ругаетесь на кумовство, и кажется, что когда регионы сами выбирают, как что проводить, способов нечестно продвинуть вперед слабых участников больше. Унификация нужна, чтобы бороться в том числе с такой коррупцией. Ну и технические моменты, естественно, есть: даже если проверка онлайн, в одном регионе она может быть на новых процессорах, в другом -- на пентиумах, и фиг вы это формализуете.
Ой, ну нет. В питере есть PCMS, в Новосибирске nsuts, есть snarkjudge, локальных систем вообще много. Документация по форматам в том или ином виде есть, написать хорошо рабочую ТС технически несложно. Проблема не в сложности софта, хотели бы -- написали бы (собственно, про Sort Me вы сами сказали -- к этой разработке я прямо не отношусь, но вроде там все нормально). Легаси -- это настолько же большая проблема, сейчас много чего можно сделать сильно эффективнее, чем в существующих ТС.
С отбеливанием компетентности разработчиков существующих систем тоже не соглашусь -- опыт у них в организации, естественно, есть, но применим он был именно что десять лет назад, а не сейчас. В ejudge вон namespace'ы появились буквально недавно.
Что я хочу этим всем сказать. Захотели бы сделать в Сириус.Курсы нормальную систему -- могли бы. Более того, я считаю, что так нужно было бы сделать, потому что у ejudge своих проблем полно. Проблема только в людях, которых посадили этим заниматься.
Ну, базовой возможностью эту фичу назвать сложно. Ее кучу лет уже изучали, решения есть, но нетривиальные. Я как-то сомневаюсь, что раньше в ejudge в антиплагиате было написано что-то сложное. Мне скорее кажется, что оно и раньше не очень работало, и кому-то показалось, что невелика потеря. С оптимизацией квадратичного решения через разбиение посылок на кластеры по регионам тоже согласиться сложно -- от списывания между участниками от разных регионов это не защищает никак, и тогда, возможно, разумнее смотреть статистику списываний по прошлым годам, вдруг там в основном списывания между учениками из одной школы, и тогда более качественные тесты можно запускать по таким кластерам. В общем, мне кажется, проблема сложнее, чем вам кажется, и ругать организаторов за отсутствие этой фичи, конечно, можно, но неконструктивно.
В том году система нагрузку держала, так что по крайней мере тогда это был не фейк. Учитывая то, что под капотом все равно ejudge, я бы скорее сказал, что это администраторы не умеют в масштабирование, собственно, о чем в последнем скриншоте у вас и написано.
Советую научиться читать. Ну или очки купите. Вы в своей предыдущей цитате буквально выдрали абзацы, отвечающие на этот вопрос. Зачем?
"Прошла зима, настало лето, – Спасибо партии за это!" Нет, это называется DDoS, причем в данном случае он был направлен вообще на frontend, а не backend. ejudge легковесен, так что организаторы ничего объективно лучше сделать не могли.
Idem. Что тут можно настраивать? Если же говорить не про сервера, а про настройку вообще, то перед сервером стоял Cloudflare, и он отработал как надо, вот только иногда блокируя и настоящих юзеров в тоже. Если флагман не смог нормально решить проблему, чего можно ожидать от организаторов ШЭ?
Ctrl-F "AWS": "Все сервера находятся в облаке AWS, благодаря чему процесс клонирования серверов довольно прост."
Я не знаю, как вы восприняли это сообщение, но я здесь увидел попытку хоть в чем-то помочь участникам от человека, не связанного напрямую с проведением олимпиады. Если бы то же самое написал я, вы бы на меня валили сломавшеется тестирование?
Где Москва, а где Сириус? Они даже формально не связаны, или я ошибаюсь? Почему вы вообще валите что-то на Москву, если проведением ВСОШа по информатике и вообще всей информатикой занимается в основном Питер? Давайте andrewzta допрашивать, он же явно тоже в каком-то виде к этому причастен? Или кого-нибудь от Яндекс.Контеста, они же для многих регионов проводили туры?
Иван, мне казалось, что вы меня разнесёте, но я неожиданно согласен с большинством написанного. Вы ведь в основном поправляете ювелирные неточности вроде "это не настройка сервера, это настройка обратного прокси-сервера".
У децентрализации тоже есть проблемы, да. Но зачем защищать тех, кто берёт на себя миссию централизовать олимпиаду, а потом годами игнорируют очевидные факапы? Я извиняюсь за все неточности, на которые вы обратили внимание, но не понимаю, что именно вы хотите этим сказать.
Он хотел этим сказать, что ты неправ.
Нет. Мой поинт простой. ELI5:
Вы написали свой ответный комментарий "в общем", не комментируя конкретные тезисы, опровергающие не вашу позицию прямо, а ваши аргументы:
Ну и конкретно по вашим комментариям:
Это была самая мелкая "неточность" из того, что я прокомментировал. Мне кажется, вы выдрали именно ее, потому что с остальным спорить сложно. Я неправ? И да, неточность ювелирная, но вы используете ее в таким контексте, где это играет роль: "тупые организаторы не смогли настроить сервер vs организаторы сделали все возможное и уперлись в проблему с внешним сервисом"
Давайте список этих годовых факапов в студию, пожалуйста. Я пока из факапов увидел только текущий год, до этого все работало, и способа угадать, что в этом году оно сломается, я не вижу.
Иван, в задачи организатора в любом деле входит выбор правильных людей и правильных решений. Организатор несет ответственность за то, как всё прошло, даже если ошибки допустил не лично он, а кто-то им нанятый.
Денис Кириенко — это, насколько мне известно, организатор олимпиады. Доверив проведение Сириусу, он совершил организаторскую ошибку. Я не думаю, что он мог выбрать Сириус.Курсы по каким-то объективным факторам, поэтому и считаю, что это кумовство.
На остальное отвечаю тезисно:
Централизация лучше децентрализации, но не такая, как у Сириуса. Эту команду нужно разгонять;
Никаких "прочих хорошо известных людей" я в посте вообще не упоминал, вы соврали;
Я буду рад, если кто-то создаст идеальную ТС, но Сириус не справится с этой задачей никогда;
Поставить стандартную антидудосилку и прям в полёте её настраивать — это не сделать всё возможное, это уровень джуна;
Факапы у системы давно, перечитайте пост.
А то, что Сириус проводит школьный тур аж по шести разным предметам вас никак при этом не смущает? Очевидно же, что все обстоит наоборот, организатор всего — Сириус, и это они позвали Дениса Кириенко помогать им с этапом по информатике.
Ну давайте разбираться.
Вот приказ о порядке проведения ШЭ. Прошу заметить, что (9.1) организационно-техническое и информационное сопровождение проведения этапа возложено на ЦПМ, (10) тот же ЦПМ занимается организационно-методическим сопровождением деятельности городского оргкомитета.
В том же документе есть состав городского оргкомитета, и Кириенко там нет, зато из связанных с информатикой есть, например, некая Житкова Ольга Алексеевна. Понятия не имею, кто это, но раз она там есть, а Кириенко нет, то, наверное, она за это отвечает больше.
На сайте https://online.olimpiada.ru, на котором уже давно проводят всякие ранние этапы, внизу два копирайта: от ЦПМ и от Таланта и Успеха. За проведение отвечает первый, и, собственно, с остальными предметами тут все так и есть: оргкомитет готовит задачи, а ЦПМ обеспечивает проведение на своей платформе. Талант и Успех, видимо, выступает здесь как подрядчик.
С информатикой несколько посложнее, потому что она проводилась, насколько я понимаю, через https://siriusolymp.ru/ -- чисто Сириусовскую штуку. Но если сравнивать интерфейсы, то понятно, что по модулю нашего любимого "живем по понятиям" это примерно то же самое, что online.olimpiada.ru, то есть официально за проведение отвечает ЦПМ, de facto -- Талант и Успех.
И есть еще вот такое приложение. Согласно нему, Кириенко -- председатель оргкомитета по Москве. А не организатор проведения. Оргкомитет готовит задачи, отвечает на апелляции, etc.
Так что мне видится такая цепочка: за материалы олимпиады отвечает группа с Кириенко во главе, за ее проведение -- ЦПМ, сваливший заботы на Талант и Успех, который в силу специфики олимпиады решил зациклиться и возвалить обязанности на того же Кириенко.
Я здесь вижу две большие разницы: первым он заниматься обязан, вторым -- нет. В том году Кириенко согласился провести и провел. Сириус показал ему фигу и не оплатил работу. В этом году он отказался, Сириусу пришлось допиливать организацию самому. Конец немного предсказуем.
Поэтому винить в этом предлагаю не Кириенко, а печально известный ЦПМ -- на уровне преподавателей и организаторов люди там хорошие, а вот начальство...
Про тезисы:
...и набрать такую же новую команду? Не знаю, насколько это поможет. Учитывая то, что Сириусу не может оплатить труды людей, которые понимают, как что работает, сомневаюсь, что что-то изменится, если ставить вопрос как "сейчас плохо потому, что вы людей случайно не тех взяли", а не "сейчас плохо потому, что вы пожадничали".
Врать я не собирался, скорее, просто не осознавал, что вы сделали фокус конкретно на Кириенко, а не Московском жюри вообще, там людей больше одной штуки.
Вкупе с первым пунктом, видимо, соглашусь.
Возможно. Но как можно было еще решать проблему -- я не очень представляю. Только если потратить ради DDoS'еров деньги на сервера, но учитывая то, что и это никто не оплатил...
Да, перечитал. Видать подзабылось. Грустненько.
Да и очень странно говорить, что ДК плохой дяденька и его нужно наказать как-то, а не просто нейтрально показать недостатки, ибо не очень хочется, чтобы он больше не был оргом
Ну а вообще даже ЦПМ ведь с этим связан слабо? Я как-то сомневаюсь, что если вся Россия пользуется одним сервисом, то первопричина в Московской команде. Кто-нибудь справился найти документы, регламентирующие проведение ВСОШ вообще, а не по регионам?
Честно говоря, аргумент про "взяли ejudge вместо написания своей ТС" странен. Ну взяли ejudge, кто им мешает? GPL это позволяет. Или им нужно было написать свою ТС, настолько же качественную, как фронтенд? Лучше бы тогда было? Может, стоит наоборот разработчикам отдать должное за то, что они использовали проверенную годами ТС, а не поддались синдрому NIH?
Я писал ШЭ на Котлине, действительно, тесты оффлайн, и Сириус не смог ни сделать нормальную систему, ни сделать как было. Но я бы заметил, что не стоит сразу винить Сириус за состояние ШЭ. Если система упала, можно скомпенсировать это организационными решениями. Понятно, что для обеспечения тестирования было выделено недостаточно ресурсов. Но Сириус еще может попробовать использовать то, что есть, если не для привлечения школьников, то для проведения нормального отбора на муниципальный этап, а сам этап уже провести нормально (например, в Москве, в которой была та же online.olimpiada.ru, будет дополнительный тур, причем после подведения результатов этого). С другой стороны, если бы Сириус вообще за информатику не взялся, в регионах осталась бы возможность проведения школьных этапов сомнительного уровня. Я бы не стал так быстро определять виноватых. Очевидно, что никто в отдельности не хочет сделать школьный этап хуже. Не вижу причин считать, что виноваты Кириенко и «Москва». Я не знаю, почему вообще школьный этап могли провести на нерабочей системе, но не вижу причин обвинять людей, у которых раньше всё шло нормально.
Добавлю, что в некоторых провинциях тестирующих систем вообще не было, а в качестве задач давались старые задачи с МОШ
Добавлю, что в части школ дают писать на бумажке и если ты что-то умное написал, то фул
Ну кстати, одно из обвинений вообще смешное
Как выяснилось из переписок, Сириус.Курсы — всего лишь оболочка над старой системой ejudge.
То есть по мнению автора поста, сделать единый интерфейс для всех предметов ВсОШ и курсов это плохо? По-моему, если бы на каждый предмет была своя система со своим интерфейсом было бы не очень. А Сириус просто хотел спрятать все нюансы под капотом
Теперь все регионы приблизились к новосибирску
Поэтому лучше оставить все на регионы и ничего не менять, ведь как еще Новосибирск покажет всем, что оффлайн тестирование это хорошо, ведь иначе 7 классники ничему не учатся.
Как же классно видеть комментарии по типу: "ну да облажались, но у нас в Москве скоро резерв и там всё будет нормально"
В один день с Москвой на этой же платформе писала 1/4 регионов России, где были те же проблемы + в других группах регионов, насколько я знаю, были те же проблемы, а резервного дня в них не будет. Школьники сидят всё ещё не зная своих баллов, а автопрохода у них нет, потому что в прошлые годы такая же отвратительная ситуация была на муниципальном этапе во многих провинциальных городах.
So many schools/corporations/olympiads try to make their own little judge for their competition, and almost every time, there is some annoying problem with the grader, user interface, submission process, queue, etc. I hope more people will host their contests on standard contest websites such as codeforces (many have options for private or restricted contests).
Код генерации ключа даже на резервном дне работал за
O((n!)^(9999999999999999999999999999999!). После 7 уроков я пришел домой, почти сразу написал классному руководителю, но до 19:00 ключ так и не получил. А в 19:00 уже времени меньше, чем 2 ч (на 45 мин.!).Полная антибаза. Ты реально считаешь что ключи генерируются по твоему запросу? Ключи присылают в школу, и если ключ тебе не дали, то это либо косяк школы, либо косяк тех кто ключи в школы спускает, но генерация ключей тут точно не причём.
мама, я в ютубе.
Пост, очевидно, сделан на деньги школы ЦПМ, чтобы опорочить имя Дениса Павловича Кириенко, он в этом году вообще не имел отношения к проведению школьного этапа, сообщение, которое он якобы начал в спешке рассылать участникам предназначалось исключительно для учеников 179 школы(и да в нем действительно полезные советы), а у тебя вообще доступа к этому чату быть не должно, очень надеюсь, что администрация codeforces удалит этот пост, а школу ЦПМ закроют
Подписываюсь под каждым словом. Меня вообще поражает, как человек не постеснялся взять сообщение из чата 179 школы, обрезать название чата и вставить со словами "всем разослали". Это прямо таки наглая ложь.
про пцмс забыл(
Расскажи, пожалуйста, а то, что ты сейчас находишься не в России, не мешало тебе быть волонтёром одной из школ?