Перейти к содержимому

Авторство и благодарности

En Parlant~ — это форк En Croissant, «Универсального шахматного инструментария» — кроссплатформенного шахматного GUI с открытым исходным кодом, построенного на Tauri (Rust + React/TypeScript). В этом документе перечислены все люди, команды, организации и проекты, чья работа сделала это программное обеспечение возможным — от базового фреймворка приложения до отдельных шрифтов, иконок и SVG шахматных фигур.

Весь проект лицензирован под GPL-3.0, что обусловлено требованиями копилефта ключевых шахматных библиотек (chessground, chessops, shakmaty), автором которых является Niklas Fiekas и команда Lichess. Два человека — Niklas Fiekas и Thibault Duplessis — фактически создали всю открытую шахматную инфраструктуру, которая делает En Parlant~ возможным, от отрисовки доски до генерации ходов и баз данных задач.

Francisco Salgueiro — единственный создатель и основной мейнтейнер En Croissant. Он является автором подавляющего большинства из более чем 1 302 коммитов в 23+ релизах. Проект заслужил более 1 400 звёзд на GitHub и 199 форков, с 46 контрибьюторами по коммитам и более чем 56 людьми, упомянутыми в примечаниях к релизам.

En Croissant — это десктопное приложение на Tauri 2, написанное на TypeScript (87,7%) и Rust (11,9%). Оно поддерживает мультидвижковый анализ, импорт партий с Lichess и Chess.com, тренировку репертуара с интервальным повторением, управление базами данных с поиском по позиции и решение задач. Francisco лично отвечает за архитектуру React-фронтенда, Rust-бэкенда для работы с базами данных и коммуникации с движками, а также за общее видение продукта. Он принимает пожертвования на encroissant.org/support через Buy Me a Coffee.

En Parlant~ (автор — @DarrellThomas) — это форк, добавляющий функции озвучивания текста (TTS) — интеграцию ElevenLabs и Google Cloud для синтеза речи, KittenTTS для локального синтеза на устройстве и Cloudflare R2 для хостинга аудио.

Индивидуальные контрибьюторы En Croissant до создания форка

Заголовок раздела «Индивидуальные контрибьюторы En Croissant до создания форка»

Francisco Salgueiro — создатель, архитектор и основной мейнтейнер всех функций, включая миграцию на Tauri 2, миграцию на React 19, систему тренировки дебютов и движок базы данных.

  • @spinward — опция скрытия текущего рейтинга задачи
  • @anderslundback — настройка прокрутки ходов на доске
  • @yuval59 — вклад в код (En Croissant v0.10.0)
  • @Cankyre — возврат ходов при игре с движком; перебор блестящих ходов/ошибок/грубых ошибок
  • @tblrone — кнопка остановки движка
  • @pnodet — вклад в код (En Croissant v0.10.0)
  • @Count-MHM — вклад в код (En Croissant v0.11.0)
  • @Scoutboy06 — вклад в код (En Croissant v0.11.0)
  • @Selyss — вклад в код (En Croissant v0.11.0)
  • @RainRat — вклад в код (En Croissant v0.11.0)
  • @zackschuster — вклад в код (En Croissant v0.11.0)
  • @loloof64 — функция захвата снимка доски
  • @JayceFFT — переключатель для перехода к следующей задаче
  • @archimag — сохранение состояния страницы базы данных, индикатор прогресса отчёта, настройки прав Tauri
  • @LiberaTeMetuMortis — опция поиска по результату партии в анализе; турецкий перевод
  • @teleginpro — сохранение настроек отчётов о партиях
  • @alextaconet — предпросмотр наборов фигур в настройках
  • @buracchi — улучшенная статистика на странице пользователей; исправление аутентификации сессий Lichess
  • @TurtleOrangina — аннотация хода «Промах»; исправление сохранения размера окна
  • @kimerikal-games — окрашивание аннотации новинки; корейский перевод; переводимые строки
  • @PeterLombaers — отображение однострочных комментариев в строке
  • @mtwdev — эндшпильные таблицы для позиций OP1
  • @BlueManCZ — исправление воспроизведения звука на Linux
  • @tweezerticle — исправления импорта с Chess.com; исправление синхронизации перемещения фигур
  • @Nullsp4ce — принятие альтернативного мата в 1 ход в режиме задач
  • @woprandi — исправление мерцания при оценке эндшпильных таблиц; разметка переводимых сообщений
  • @Breush — поддержка каталога документов на Linux без XDG
  • @dotneB — запрет ходов после завершения задачи
  • @arimourao — исправление начала игры чёрными с добавлением времени
  • @tkasa — сохранение FEN при смене ориентации
  • @wjgr2004 — предотвращение сбоя при истечении времени игрока
  • @ed-cetera — исправление бесконечного цикла при повышении до основного варианта
  • @sid0-0 — исправление условных хуков
  • @vainbaum — исправление сохранения пустых PGN
  • @xiaoas, @OleBroemelbue, @nskobelevs, @beachwood23, @jaximus808 — вклад в En Croissant v0.14.2
ЯзыкАвтор(ы)
Китайский@chuigda
Португальский@franciscoBSalgueiro
Испанский@yako1984, @dav1312
Французский@PaulJeFi
Итальянский@MrPiada
Русский@artemy
Норвежский (букмол)@TBestLittleHelper
Турецкий@LiberaTeMetuMortis
Немецкий@eskopp
Корейский@kimerikal-games
  • @qqiumax — обновление лицензии в README
  • @jaimecbernardo — инструкции по установке pnpm
  • @qoqosz — исправления предупреждений shakmaty
  • @hadim — переименование TAURI_SIGNING_PRIVATE_KEY
  • @chrisbilodeau — обновления GitHub workflow

@garbidge, @pmyszka, @powy-e — вклад до En Croissant v0.10.0.

Tauri — десктопный фреймворк на основе Rust/WebView — был основан совместно Daniel Thompson-Yvetot и Lucas Nogueira в 2019 году и поддерживается The Tauri Programme в рамках The Commons Conservancy. Ключевые контрибьюторы: Amr Bashir и FabianLars. Лицензия Apache-2.0 OR MIT.

React был создан Jordan Walke в Facebook в 2013 году и поддерживается Meta Open Source. Ключевые контрибьюторы: Dan Abramov, Andrew Clark, Sebastian Markbage, Sophie Alpert и Brian Vaughn. Лицензия MIT.

Vite был создан Evan You (также создателем Vue.js) и разрабатывается в рамках VoidZero Inc. Ключевые контрибьюторы: Patak, Anthony Fu и Bjorn Lu. Лицензия MIT.

TypeScript был создан Anders Hejlsberg (который также создал C# и Turbo Pascal) в Microsoft. Лицензия Apache-2.0.

Шахматные библиотеки и экосистема Niklas Fiekas

Заголовок раздела «Шахматные библиотеки и экосистема Niklas Fiekas»

Niklas Fiekas, вероятно, является самым важным контрибьютором в современную экосистему шахматного программирования с открытым исходным кодом. Он написал все основные библиотеки шахматной логики, используемые в En Parlant~ как на фронтенде, так и на бэкенде:

  • chessops — TypeScript-библиотека шахматных правил и вариантов для фронтенда. Лицензия GPL-3.0-or-later.
  • shakmaty — Rust-библиотека для бэкенда, обеспечивающая генерацию ходов, нотацию FEN/SAN/UCI, битборды и хеширование Zobrist. Лицензия GPL-3.0-or-later.
  • pgn-reader — быстрый потоковый парсер PGN на Rust без аллокаций. Лицензия GPL-3.0-or-later.
  • shakmaty-syzygy — Rust-библиотека для обращения к эндшпильным таблицам Syzygy. Лицензия GPL-3.0-or-later.

Niklas Fiekas также является автором python-chess, доминирующей шахматной библиотеки для Python, и ключевым контрибьютором экосистемы Lichess. Его лицензирование GPL-3.0 на эти библиотеки распространяет требование копилефта на сам En Parlant~.

Thibault Duplessis основал Lichess.org — крупнейший бесплатный шахматный сервер с открытым исходным кодом. Проект Lichess предоставляет несколько компонентов для En Parlant~:

  • Chessground — интерактивный UI-компонент шахматной доски с пользовательским DOM-диффингом, отрисовкой стрелок SVG, перетаскиванием, предварительными ходами и оформлением только через CSS. ~10 КБ в сжатом виде, без зависимостей. Лицензия GPL-3.0-or-later.
  • Lichess API — используется для импорта пользовательских партий, доступа к облачным оценкам и запросов к обозревателю дебютов. Часть проекта Lichess под лицензией AGPL-3.0.
  • База данных партий Lichess — миллиарды партий в формате PGN, выпускаемые ежемесячно. Лицензия CC0 (общественное достояние).
  • База данных задач Lichess — более 4,6 миллиона задач, сгенерированных из 600 миллионов проанализированных партий с использованием Stockfish NNUE. Лицензия CC0.
  • SVG шахматных фигур и темы досок — взяты из коллекции статических ресурсов Lichess под различными лицензиями (см. раздел о наборах шахматных фигур ниже).

En Parlant~ поддерживает любой UCI-совместимый движок и предлагает установку в один клик для нескольких из них:

  • Stockfish — сильнейший шахматный движок с открытым исходным кодом, первоначально созданный Tord Romstad, Marco Costalba и Joona Kiiski. В настоящее время поддерживается глобальным сообществом. Использует оценку NNUE, обученную на данных проекта Leela Chess Zero. GPL-3.0.
  • Leela Chess Zero (Lc0) — шахматный движок на нейронных сетях, вдохновлённый AlphaZero от DeepMind, возглавляемый Gary Linscott. Обучен на более чем 2,5 миллиардах партий самоигры. GPL-3.0-or-later.
  • RubiChess автора Andreas Matthies — мощный UCI-движок с открытым исходным кодом, использующий оценку NNUE. GPL-3.0.
  • Komodo — первоначально создан Don Dailey (1956–2013), продолжен Mark Lefler при экспертной оценке гроссмейстера Larry Kaufman. Приобретён Chess.com в 2018 году. Бесплатен для некоммерческого использования.
  • Dragon by Komodo — NNUE-версия, разработанная той же командой плюс Dmitry Pervov и Dietrich Kappe. Коммерческий/проприетарный.
  • Fairy-Stockfish автора Fabian Fichter — движок для шахматных вариантов, поддерживающий сянци, сёги, крейзихаус и десятки других. GPL-3.0.

Рейтинги движков, отображаемые в приложении, берутся из CCRL (Computer Chess Rating Lists), которые поддерживают Graham Banks, Kirill Kryukov, Sergio Martinez, Gabor Szots, Shaun Brewer и другие с декабря 2005 года.

В основном из коллекции ресурсов Lichess:

  • cburnett (по умолчанию) — автор Colin M.L. Burnett. Чистые, узнаваемые SVG-фигуры, созданные в Inkscape. Мультилицензия: BSD-3-Clause, GFDL, GPL, CC-BY-SA-3.0. Также использованы как основа иконки приложения.
  • Kosal автора PhilatypeCC BY 4.0.
  • Alpha — автор Eric Bentzen. Чистый, современный дизайн.
  • Merida — на основе классического шахматного шрифта Merida, SVG-адаптация поддерживается сообществом Lichess. Лицензия GPLv2+.
  • California — автор Jerry S.. Лицензия CC-BY-SA-4.0.
  • Anarcandy — создан контрибьюторами сообщества Lichess.
  • chessnut, chess7, companion, letter, shapes, pixel, pirouetti, cardinal, disguised, dubrovny, fantasy, fresca, gioco, governor, horsey, icpieces, Leipzig, libra, maestro, reillycraig, riohacha, spatial, staunty, tatiana — из Lichess и их соответствующих авторов, распространяются под CC BY-SA 3.0 или совместимыми лицензиями.
  • Melanie Thomas — различная графика, использованная в проекте.
База данныхПартииСоздатель / Куратор
Lumbra’s Gigabase~9,57 млнLumbra (куратор сообщества)
Caissabase 2024~5,4 млнКурирована сообществом из MillionBase, KingBase и TWIC
Ajedrez Data (OTB)~4,28 млнСообщество Ajedrez Data
Ajedrez Data (Correspondence)~1,52 млнСообщество Ajedrez Data
MillionBase~3,45 млнEd Schroder (автор шахматного движка Rebel) и сообщество

Эндшпильные таблицы Syzygy — созданы Ronald de Man, 7-фигурные таблицы сгенерированы Bojun Guo (2018). Размещены для скачивания на Lichess.org.

ChessDB Cloud (chessdb.cn) — автор Bojun Guo. Обширная шахматная база знаний, построенная на основе анализа движков. Выпущена в общественное достояние.

  • KittenTTS от KittenML — TTS-движок по умолчанию для локального использования, входящий в комплект приложения. Работает полностью на устройстве без необходимости API-ключа. Использует голосовые модели ONNX через ONNX Runtime и eSpeak NG для фонемизации.
  • OpenTTS от Michael Hansen (synesthesiam) — опциональный самохостинговый TTS-сервер, запускаемый локально через Docker.
  • Google Cloud Text-to-Speech — опциональный облачный TTS-провайдер с голосами WaveNet. Требуется пользовательский API-ключ.
  • ElevenLabs — опциональный премиальный облачный TTS-провайдер с высококачественными голосами. Требуется пользовательский API-ключ.

Vitaly Rtishchev создал и поддерживает всю библиотеку компонентов Mantine — более 30 600 звёзд, более 100 компонентов, более 50 хуков.

@mantine/core, @mantine/hooks, @mantine/form, @mantine/notifications, @mantine/spotlight, @mantine/dates, @mantine/modals, @mantine/carousel, @mantine/tiptap, @mantine/nprogress, @mantine/dropzone, @mantine/code-highlight, postcss-preset-mantine

@tauri-apps/api, @tauri-apps/cli, @tauri-apps/plugin-dialog, @tauri-apps/plugin-shell, @tauri-apps/plugin-process, @tauri-apps/plugin-os, @tauri-apps/plugin-log, @tauri-apps/plugin-updater

Tanner Linsley создал экосистему TanStack: @tanstack/react-query (асинхронная загрузка/кеширование данных), @tanstack/react-table (headless-таблица/datagrid), @tanstack/react-virtual (виртуализация списков).

Редактор форматированного текста TipTap (Tiptap GmbH, MIT)

Заголовок раздела «Редактор форматированного текста TipTap (Tiptap GmbH, MIT)»

Создан Tiptap GmbH. @tiptap/react, @tiptap/starter-kit, @tiptap/extension-link.

ПакетАвторЛицензия
react, react-domJordan Walke / MetaMIT
react-router-domRyan Florence, Michael Jackson / Remix SoftwareMIT
react-i18next, i18nextJan MuhlemannMIT
ПакетАвторЛицензия
zustandPaul Henschel (оригинал), Daishi Kato (основной мейнтейнер) / pmndrsMIT
framer-motionMatt Perry / Motion DivisionMIT
embla-carousel-reactDavid JerlekeMIT
ПакетАвторЛицензия
chess.jsJeff HlywaBSD-2-Clause
chessgroundThibault Duplessis / Lichess.orgGPL-3.0-or-later
chessopsNiklas Fiekas (niklasf)GPL-3.0-or-later
ПакетАвторЛицензия
dayjsiamkunMIT
fuse.jsKiro RiskApache-2.0
idb-keyvalJake ArchibaldApache-2.0
rechartsXian Wang и сообщество, построен на D3MIT
sql.jsOphir Lojkine и Alon ZakaiMIT
ПакетАвторЛицензия
@biomejs/biomeEmanuele Stoppa (форк Rome от Sebastian McKenzie)MIT OR Apache-2.0
@vitejs/plugin-reactEvan You / команда ViteMIT
postcssAndrey Sitnik / Evil MartiansMIT
typescriptAnders Hejlsberg / MicrosoftApache-2.0
viteEvan You / VoidZero Inc.MIT

Все крейты Tauri (tauri, tauri-build, tauri-plugin-log, tauri-plugin-dialog, tauri-plugin-shell, tauri-plugin-process, tauri-plugin-os, tauri-plugin-updater) от The Tauri Programme. Лицензия Apache-2.0 OR MIT.

David Tolnay поддерживает более 160 крейтов Rust и отвечает за одни из самых фундаментальных библиотек в экосистеме Rust. Приблизительно 40% всех крейтов на crates.io транзитивно зависят от serde.

КрейтАвторЛицензия
serdeErick Tryzelaar, David TolnayMIT OR Apache-2.0
serde_jsonDavid TolnayMIT OR Apache-2.0
thiserrorDavid TolnayMIT OR Apache-2.0
anyhowDavid TolnayMIT OR Apache-2.0

Асинхронная среда выполнения и сетевое взаимодействие

Заголовок раздела «Асинхронная среда выполнения и сетевое взаимодействие»
КрейтАвторЛицензия
tokioCarl Lerche, Alice Ryhl, Sean McArthur, Eliza WeismanMIT
reqwestSean McArthurMIT OR Apache-2.0
futures / futures-utilAlex CrichtonMIT OR Apache-2.0
КрейтЛицензияОписание
shakmatyGPL-3.0-or-laterГенерация шахматных ходов, битборды, FEN/SAN/UCI
pgn-readerGPL-3.0-or-laterПотоковый парсер PGN
shakmaty-syzygyGPL-3.0-or-laterОбращение к эндшпильным таблицам Syzygy
КрейтАвторЛицензия
rusqliteJohn Gallagher (оригинал) / разработчики rusqliteMIT
logThe Rust Project DevelopersMIT OR Apache-2.0
tempfileSteven AllenMIT OR Apache-2.0
dirsSimon OchsenreitherMIT OR Apache-2.0
flate2Alex Crichton, Josh TriplettMIT OR Apache-2.0
zipMathijs van de Nes, Marli Frost, Ryan LevickMIT
  • Tabler Icons — более 6 000 бесплатных SVG-иконок автора Pawel Kuna. Используются через @tabler/icons-react как часть экосистемы Mantine. Лицензия MIT.
  • CodeMirror — браузерный редактор кода от Marijn Haverbeke (также создателя ProseMirror и автора Eloquent JavaScript), с вкладом Adrian Heine. Используется для редактирования PGN. Лицензия MIT.
  • Inter — шрифт интерфейса, созданный Rasmus Andersson. Вариативный шрифт, оптимизированный для читаемости на экране. Используется как шрифт по умолчанию в Mantine. Лицензия SIL Open Font License 1.1.
  • Шахматный нотационный шрифт (lichess.chess) — от авторов pgn4web, предоставляющий символы фигурной алгебраической нотации. Лицензия GPLv2+.

Инструменты сборки и инфраструктура разработки

Заголовок раздела «Инструменты сборки и инфраструктура разработки»
  • Rust — создан Graydon Hoare в Mozilla в 2006 году. Поддерживается Rust Foundation. Ключевые контрибьюторы: Niko Matsakis, Steve Klabnik, Alex Crichton, Manish Goregaokar. Лицензия MIT OR Apache-2.0.
  • Node.js — создан Ryan Dahl в 2009 году. Поддерживается OpenJS Foundation. Лицензия MIT.
  • pnpm — быстрый, экономичный по дисковому пространству менеджер пакетов от Zoltan Kochan. Лицензия MIT.
  • Biome — единый линтер/форматировщик на Rust, форк Rome (оригинально от Sebastian McKenzie, создателя Babel). Возрождён Emanuele Stoppa. Лицензия MIT OR Apache-2.0.

Форк En Parlant~ — включая интеграцию TTS, сайт документации, многоязычные переводы, демо-конвейер и эту страницу благодарностей — был создан практически полностью с помощью Claude Code, агентного инструмента программирования от Anthropic. Claude Code использует Claude, ИИ-ассистента Anthropic, для работы непосредственно в терминале — чтения файлов, редактирования кода, выполнения команд и управления git-процессами.

Anthropic была основана в 2021 году Dario Amodei и Daniela Amodei совместно с несколькими бывшими исследователями OpenAI с фокусом на исследованиях безопасности ИИ. Claude — это их семейство больших языковых моделей.

  • Lichess API — поддерживается Thibault Duplessis и командой Lichess. Экспорт партий, облачные оценки, обозреватель дебютов и данные задач. Часть проекта Lichess под лицензией AGPL-3.0.
  • Chess.com Published-Data API — REST API только для чтения публичных профилей игроков, архивов партий и данных клубов/турниров.
  • ChessDB Cloud Evaluation — автор Bojun Guo. Шахматная база знаний, построенная на основе анализа движков. Общественное достояние.
  • Stockfish — бинарные файлы движка размещены на нашей собственной инфраструктуре (enparlant.redshed.ai).
  • Lichess — дебютные базы данных и база данных задач, размещённые на нашей собственной инфраструктуре. CC BY 4.0.

En Parlant~ лицензирован под GPL-3.0, что обусловлено каскадом копилефта от шахматных зависимостей:

ЛицензияПакеты / Компоненты
GPL-3.0 / GPL-3.0-or-laterEn Parlant~, chessground, chessops, shakmaty, pgn-reader, shakmaty-syzygy, Stockfish, Lc0, RubiChess, Fairy-Stockfish, фигуры Merida, шахматный нотационный шрифт
MITReact, Vite, Mantine (все), TanStack (все), TipTap (все), zustand, framer-motion, embla-carousel, dayjs, recharts, sql.js, Tabler Icons, CodeMirror, Node.js, pnpm, tokio, rusqlite, PostCSS
MIT OR Apache-2.0Tauri (все), язык Rust, serde (все), tokio, reqwest, futures, thiserror, anyhow, log, tempfile, dirs, flate2, TypeScript, Biome
BSD-2-Clausechess.js
Apache-2.0fuse.js, idb-keyval
SIL OFL 1.1шрифт Inter
CC0 (общественное достояние)база данных партий Lichess, база данных задач Lichess
CC-BY-SA-3.0 / 4.0фигуры cburnett, фигуры California, набор фигур Shapes
AGPL-3.0основная кодовая база Lichess (API свободен для использования)
Коммерческий/ПроприетарныйKomodo, Dragon by Komodo (опциональные движки, не включены в комплект)

Требование копилефта GPL-3.0 означает, что любое распространение En Parlant~ должно включать исходный код или письменное обязательство его предоставить, а производные работы также должны быть лицензированы под GPL-3.0 или совместимой лицензией. Это обусловлено прежде всего шахматными библиотеками Niklas Fiekas и компонентом Lichess Chessground.

Это программное обеспечение существует благодаря вкладу сотен людей из десятков проектов. Три человека заслуживают особого признания: Francisco Salgueiro создал приложение; Niklas Fiekas создал инфраструктуру шахматной логики (как на TypeScript, так и на Rust); а Thibault Duplessis создал UI шахматной доски и более широкую экосистему Lichess, которая предоставляет наборы фигур, базы данных, задачи и облачные оценки. Помимо них, библиотеки сериализации David Tolnay лежат в основе Rust-бэкенда, команда Tauri сделала возможным десктопный фреймворк, а 56 контрибьюторов сообщества внесли функции, переводы на 10 языков и исправления ошибок, которые сформировали продукт.

Каждая оценённая шахматная позиция обязана сообществу Stockfish, а каждый запрос к эндшпильным таблицам — таблицам Syzygy Ronald de Man. Экосистема шахматного открытого исходного кода замечательно взаимосвязана — одно приложение, такое как En Parlant~, опирается на работу, охватывающую два десятилетия, от SVG шахматных фигур Colin M.L. Burnett 2006 года на Wikimedia до оптимизаций компилятора React 19.

Мы вас не упомянули? Напишите нам, и мы это исправим. Если вы предпочитаете остаться анонимным, просто сообщите нам об этом: darrell@redshed.ai.