Przejdź do głównej zawartości

Podziękowania i atrybucje

En Parlant~ jest forkiem projektu En Croissant, „Kompletnego zestawu narzędzi szachowych” — wieloplatformowego, otwartoźródłowego interfejsu szachowego zbudowanego przy użyciu Tauri (Rust + React/TypeScript). Niniejszy dokument wymienia wszystkie osoby, zespoły, organizacje i projekty, których praca umożliwiła powstanie tego oprogramowania — od podstawowego szkieletu aplikacji po poszczególne czcionki, ikony i pliki SVG figur szachowych.

Cały projekt jest objęty licencją GPL-3.0, wynikającą z wymogów copyleft kluczowych bibliotek szachowych (chessground, chessops, shakmaty) autorstwa Niklasa Fiekasa i zespołu Lichess. Dwie osoby — Niklas Fiekas i Thibault Duplessis — są odpowiedzialne za zasadniczo całą otwartoźródłową infrastrukturę szachową, która umożliwia działanie En Parlant~, od renderowania szachownicy po generowanie ruchów i bazy zagadek.

Francisco Salgueiro jest jedynym twórcą i głównym opiekunem En Croissant. Jest autorem zdecydowanej większości z ponad 1302 commitów w ponad 23 wydaniach. Projekt zdobył ponad 1400 gwiazdek na GitHubie i 199 forków, a wkład w postaci commitów wniosło 46 współtwórców, zaś w notatkach do wydań wymieniono ponad 56 osób.

En Croissant to aplikacja desktopowa Tauri 2 napisana w TypeScript (87,7%) i Rust (11,9%). Obsługuje analizę wielosilnikową, import partii z Lichess i Chess.com, trening repertuaru z powtórkami rozłożonymi w czasie, zarządzanie bazami danych z wyszukiwaniem pozycji oraz trening zagadek. Francisco osobiście odpowiada za architekturę frontendową w React, backend w Rust do operacji na bazach danych i komunikacji z silnikami oraz za ogólną wizję produktu. Przyjmuje darowizny na stronie encroissant.org/support za pośrednictwem Buy Me a Coffee.

En Parlant~ (autorstwa @DarrellThomas) to fork dodający funkcje narracji za pomocą syntezy mowy (TTS) — integrujący ElevenLabs i Google Cloud do komentarza głosowego, KittenTTS do lokalnej syntezy na urządzeniu oraz Cloudflare R2 do hostowania plików audio.

Francisco Salgueiro — twórca, architekt i główny opiekun wszystkich funkcji, w tym migracji do Tauri 2, migracji do React 19, systemów ćwiczenia otwarć i silnika bazy danych.

  • @spinward — opcja ukrycia aktualnego ratingu zagadki
  • @anderslundback — ustawienie przewijania ruchów na szachownicy
  • @yuval59 — wkład w kod (En Croissant v0.10.0)
  • @Cankyre — cofanie ruchów podczas gry z silnikiem; przeglądanie geniuszy/błędów/poważnych błędów
  • @tblrone — przycisk zatrzymania silnika
  • @pnodet — wkład w kod (En Croissant v0.10.0)
  • @Count-MHM — wkład w kod (En Croissant v0.11.0)
  • @Scoutboy06 — wkład w kod (En Croissant v0.11.0)
  • @Selyss — wkład w kod (En Croissant v0.11.0)
  • @RainRat — wkład w kod (En Croissant v0.11.0)
  • @zackschuster — wkład w kod (En Croissant v0.11.0)
  • @loloof64 — funkcja przechwytywania zrzutu szachownicy
  • @JayceFFT — przełącznik przeskakiwania do następnej zagadki
  • @archimag — zapamiętywanie stanu strony bazy danych, pasek postępu raportów, ustawienia uprawnień Tauri
  • @LiberaTeMetuMortis — opcja wyszukiwania wyniku partii w analizie; tłumaczenie na turecki
  • @teleginpro — zapamiętywanie ustawień raportów partii
  • @alextaconet — podgląd zestawów figur w ustawieniach
  • @buracchi — ulepszone statystyki na stronie użytkowników; poprawka uwierzytelniania sesji Lichess
  • @TurtleOrangina — adnotacja ruchu „Miss”; poprawka zapamiętywania rozmiaru okna
  • @kimerikal-games — kolorowanie adnotacji nowości; tłumaczenie na koreański; łańcuchy znaków możliwe do przetłumaczenia
  • @PeterLombaers — wyświetlanie komentarzy jednowierszowych w linii
  • @mtwdev — baza końcówek dla pozycji OP1
  • @BlueManCZ — poprawka odtwarzania dźwięku na Linuksie
  • @tweezerticle — poprawki importu z Chess.com; poprawka synchronizacji przesuwania figur
  • @Nullsp4ce — akceptowanie alternatywnego mata w 1 ruchu w trybie zagadek
  • @woprandi — poprawka migotania ewaluacji bazy końcówek; oznaczanie komunikatów do tłumaczenia
  • @Breush — obsługa katalogu dokumentów na Linuksie bez XDG
  • @dotneB — zapobieganie ruchom po ukończeniu zagadki
  • @arimourao — poprawka startu czarnych z dodawaniem czasu
  • @tkasa — zachowywanie FEN przy zmianie orientacji
  • @wjgr2004 — zapobieganie awarii, gdy graczowi skończy się czas
  • @ed-cetera — poprawka nieskończonej pętli przy promowaniu do wariantu głównego
  • @sid0-0 — poprawka warunkowych hooków
  • @vainbaum — poprawka zapisywania pustych PGN
  • @xiaoas, @OleBroemelbue, @nskobelevs, @beachwood23, @jaximus808 — wkład w En Croissant v0.14.2
JęzykWspółtwórcy
Chiński@chuigda
Portugalski@franciscoBSalgueiro
Hiszpański@yako1984, @dav1312
Francuski@PaulJeFi
Włoski@MrPiada
Rosyjski@artemy
Norweski (Bokmål)@TBestLittleHelper
Turecki@LiberaTeMetuMortis
Niemiecki@eskopp
Koreański@kimerikal-games

@garbidge, @pmyszka, @powy-e — wkład sprzed wersji En Croissant v0.10.0.

Tauri — desktopowy szkielet aplikacyjny Rust/WebView — został współzałożony przez Daniela Thompson-Yvetota i Lucasa Nogueirę w 2019 roku i jest utrzymywany przez The Tauri Programme w ramach The Commons Conservancy. Kluczowi współtwórcy to Amr Bashir i FabianLars. Licencja Apache-2.0 OR MIT.

React został stworzony przez Jordana Walke’a w Facebooku w 2013 roku i jest utrzymywany przez Meta Open Source. Kluczowi współtwórcy to Dan Abramov, Andrew Clark, Sebastian Markbage, Sophie Alpert i Brian Vaughn. Licencja MIT.

Vite został stworzony przez Evana You (również twórcę Vue.js) i jest rozwijany w ramach VoidZero Inc. Kluczowi współtwórcy to Patak, Anthony Fu i Bjorn Lu. Licencja MIT.

TypeScript został stworzony przez Andersa Hejlsberga (który stworzył również C# i Turbo Pascala) w Microsoft. Licencja Apache-2.0.

Niklas Fiekas jest prawdopodobnie najważniejszym pojedynczym współtwórcą współczesnego otwartoźródłowego ekosystemu programowania szachowego. Jest autorem wszystkich podstawowych bibliotek logiki szachowej używanych przez En Parlant~ zarówno po stronie frontendu, jak i backendu:

  • chessops — biblioteka szachowa TypeScript z regułami wariantów dla frontendu. Licencja GPL-3.0-or-later.
  • shakmaty — biblioteka szachowa Rust dla backendu, zapewniająca generowanie ruchów, notację FEN/SAN/UCI, bitboardy i hashing Zobrista. Licencja GPL-3.0-or-later.
  • pgn-reader — szybki, strumieniowy parser PGN w Rust bez alokacji. Licencja GPL-3.0-or-later.
  • shakmaty-syzygy — biblioteka Rust do odpytywania baz końcówek Syzygy. Licencja GPL-3.0-or-later.

Niklas Fiekas jest również autorem python-chess, dominującej biblioteki szachowej dla Pythona, oraz kluczowym współtwórcą ekosystemu Lichess. Jego licencjonowanie GPL-3.0 tych bibliotek przenosi wymóg copyleft na sam En Parlant~.

Thibault Duplessis założył Lichess.org — największy darmowy, otwartoźródłowy serwer szachowy. Projekt Lichess dostarcza wiele komponentów dla En Parlant~:

  • Chessground — interaktywny komponent UI szachownicy, oferujący niestandardowe porównywanie DOM, rysowanie strzałek SVG, przeciąganie i upuszczanie, ruchy wstępne oraz stylowanie wyłącznie za pomocą CSS. ~10KB po gzipie, bez zależności. Licencja GPL-3.0-or-later.
  • Lichess API — używane do importowania partii użytkowników, dostępu do ewaluacji chmurowych i odpytywania eksploratora otwarć. Część projektu Lichess na licencji AGPL-3.0.
  • Baza partii Lichess — miliardy partii w formacie PGN, publikowane co miesiąc. Licencja CC0 (domena publiczna).
  • Baza zagadek Lichess — ponad 4,6 miliona zagadek wygenerowanych z 600 milionów przeanalizowanych partii za pomocą Stockfish NNUE. Licencja CC0.
  • Pliki SVG figur szachowych i motywy szachownic — pochodzą z kolekcji zasobów statycznych Lichess na różnych licencjach (patrz sekcja zestawów figur szachowych poniżej).

En Parlant~ obsługuje każdy silnik kompatybilny z UCI i oferuje instalację jednym kliknięciem dla kilku z nich:

Rankingi silników wyświetlane w aplikacji pochodzą z CCRL (Computer Chess Rating Lists), utrzymywanych przez Grahama Banksa, Kirilla Kryukova, Sergio Martineza, Gabora Szotsa, Shauna Brewera i innych od grudnia 2005 roku.

Pochodzą głównie z kolekcji zasobów Lichess:

  • cburnett (domyślny) — autorstwa Colina M.L. Burnetta. Czyste, rozpoznawalne figury SVG stworzone w Inkscape. Wielolicencyjne: BSD-3-Clause, GFDL, GPL, CC-BY-SA-3.0. Używany również jako podstawa ikony aplikacji.
  • Kosal autorstwa PhilatypeCC BY 4.0.
  • Alpha — autorstwa Erica Bentzena. Czysty, nowoczesny design.
  • Merida — oparty na klasycznej czcionce szachowej Merida, adaptacja SVG utrzymywana przez społeczność Lichess. Licencja GPLv2+.
  • California — autorstwa Jerry’ego S.. Licencja CC-BY-SA-4.0.
  • Anarcandy — autorstwa współtwórców społeczności 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 — pochodzą z Lichess i od ich odpowiednich twórców, dystrybuowane na licencji CC BY-SA 3.0 lub kompatybilnych.
Baza danychPartiiTwórca / Kurator
Lumbra’s Gigabase~9,57 mlnLumbra (kurator społecznościowy)
Caissabase 2024~5,4 mlnKuratorzy społecznościowi z MillionBase, KingBase i TWIC
Ajedrez Data (OTB)~4,28 mlnSpołeczność Ajedrez Data
Ajedrez Data (korespondencyjne)~1,52 mlnSpołeczność Ajedrez Data
MillionBase~3,45 mlnEd Schroder (autor silnika szachowego Rebel) i społeczność

Bazy końcówek Syzygy — stworzone przez Ronalda de Mana, z tabelami 7-figurowymi wygenerowanymi przez Bojuna Guo (2018). Udostępniane do pobrania przez Lichess.org.

ChessDB Cloud (chessdb.cn) — autorstwa Bojuna Guo. Ogromna baza wiedzy szachowej zbudowana z analiz silnikowych. Udostępniona w domenie publicznej.

  • KittenTTS autorstwa KittenML — domyślny lokalny silnik TTS, dołączony do aplikacji. Działa w pełni na urządzeniu, bez wymaganego klucza API. Używa modeli głosowych ONNX przez ONNX Runtime oraz eSpeak NG do fonemizacji.
  • OpenTTS autorstwa Michaela Hansena (synesthesiam) — opcjonalny samodzielnie hostowany serwer TTS, uruchamiany lokalnie przez Docker.
  • Google Cloud Text-to-Speech — opcjonalny dostawca chmurowy TTS z głosami WaveNet. Wymaga klucza API dostarczonego przez użytkownika.
  • ElevenLabs — opcjonalny premium dostawca chmurowy TTS z głosami wysokiej jakości. Wymaga klucza API dostarczonego przez użytkownika.

Ekosystem Mantine (wszystko autorstwa Witalija Rtiszczewa, MIT)

Dział zatytułowany „Ekosystem Mantine (wszystko autorstwa Witalija Rtiszczewa, MIT)”

Witalij Rtiszczew stworzył i utrzymuje całą bibliotekę komponentów Mantine — ponad 30 600 gwiazdek, ponad 100 komponentów, ponad 50 hooków.

@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

Pakiety npm Tauri (The Tauri Programme, Apache-2.0 OR MIT)

Dział zatytułowany „Pakiety npm Tauri (The Tauri Programme, Apache-2.0 OR MIT)”

@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 stworzył ekosystem TanStack: @tanstack/react-query (asynchroniczne pobieranie/cache’owanie danych), @tanstack/react-table (headless tabele/datagrid), @tanstack/react-virtual (wirtualizacja list).

Edytor tekstu sformatowanego TipTap (Tiptap GmbH, MIT)

Dział zatytułowany „Edytor tekstu sformatowanego TipTap (Tiptap GmbH, MIT)”

Stworzony przez Tiptap GmbH. @tiptap/react, @tiptap/starter-kit, @tiptap/extension-link.

PakietAutorLicencja
react, react-domJordan Walke / MetaMIT
react-router-domRyan Florence, Michael Jackson / Remix SoftwareMIT
react-i18next, i18nextJan MuhlemannMIT
PakietAutorLicencja
zustandPaul Henschel (oryginał), Daishi Kato (główny opiekun) / pmndrsMIT
framer-motionMatt Perry / Motion DivisionMIT
embla-carousel-reactDavid JerlekeMIT
PakietAutorLicencja
chess.jsJeff HlywaBSD-2-Clause
chessgroundThibault Duplessis / Lichess.orgGPL-3.0-or-later
chessopsNiklas Fiekas (niklasf)GPL-3.0-or-later
PakietAutorLicencja
dayjsiamkunMIT
fuse.jsKiro RiskApache-2.0
idb-keyvalJake ArchibaldApache-2.0
rechartsXian Wang i społeczność, zbudowany na D3MIT
sql.jsOphir Lojkine i Alon ZakaiMIT
PakietAutorLicencja
@biomejs/biomeEmanuele Stoppa (fork Rome autorstwa Sebastiana McKenziego)MIT OR Apache-2.0
@vitejs/plugin-reactEvan You / zespół ViteMIT
postcssAndrey Sitnik / Evil MartiansMIT
typescriptAnders Hejlsberg / MicrosoftApache-2.0
viteEvan You / VoidZero Inc.MIT

Wszystkie crate’y Tauri (tauri, tauri-build, tauri-plugin-log, tauri-plugin-dialog, tauri-plugin-shell, tauri-plugin-process, tauri-plugin-os, tauri-plugin-updater) autorstwa The Tauri Programme. Licencja Apache-2.0 OR MIT.

David Tolnay utrzymuje ponad 160 crate’ów Rust i jest odpowiedzialny za jedne z najbardziej fundamentalnych bibliotek w ekosystemie Rust. Około 40% wszystkich crate’ów na crates.io zależy tranzytywnie od serde.

CrateAutorLicencja
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
CrateAutorLicencja
tokioCarl Lerche, Alice Ryhl, Sean McArthur, Eliza WeismanMIT
reqwestSean McArthurMIT OR Apache-2.0
futures / futures-utilAlex CrichtonMIT OR Apache-2.0
CrateLicencjaOpis
shakmatyGPL-3.0-or-laterGenerowanie ruchów szachowych, bitboardy, FEN/SAN/UCI
pgn-readerGPL-3.0-or-laterStrumieniowy parser PGN
shakmaty-syzygyGPL-3.0-or-laterOdpytywanie baz końcówek Syzygy
CrateAutorLicencja
rusqliteJohn Gallagher (oryginał) / deweloperzy rusqliteMIT
logDeweloperzy projektu RustMIT 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 — ponad 6000 darmowych ikon SVG autorstwa Pawła Kuny. Używane przez @tabler/icons-react jako część ekosystemu Mantine. Licencja MIT.
  • CodeMirror — edytor kodu w przeglądarce autorstwa Marijna Haverbeke’a (również twórcy ProseMirror i autora Eloquent JavaScript), ze wkładem Adriana Heine. Używany do edycji PGN. Licencja MIT.
  • Inter — krój pisma UI, stworzony przez Rasmusa Anderssona. Czcionka zmienna zoptymalizowana pod kątem czytelności na ekranie. Używana jako domyślna rodzina czcionek Mantine. Licencja SIL Open Font License 1.1.
  • Czcionka notacji szachowej (lichess.chess) — autorów pgn4web, zapewniająca symbole figurowej notacji algebraicznej. Licencja GPLv2+.

Fork En Parlant~ — w tym integracja TTS, strona dokumentacji, tłumaczenia wielojęzyczne, pipeline demo i ta strona podziękowań — został zbudowany niemal w całości za pomocą Claude Code, agentowego narzędzia programistycznego Anthropic. Claude Code wykorzystuje Claude, asystenta AI Anthropic, do pracy bezpośrednio w terminalu — odczytywania plików, edycji kodu, uruchamiania poleceń i zarządzania przepływami pracy git.

Anthropic został założony w 2021 roku przez Dario Amodei i Danielę Amodei wraz z kilkoma byłymi badaczami OpenAI, z naciskiem na badania nad bezpieczeństwem AI. Claude to ich rodzina dużych modeli językowych.

  • Lichess API — utrzymywane przez Thibaulta Duplessisa i zespół Lichess. Eksport partii, ewaluacje chmurowe, eksplorator otwarć i dane zagadek. Część projektu Lichess na licencji AGPL-3.0.
  • Chess.com Published-Data API — REST API tylko do odczytu dla publicznych profili graczy, archiwów partii oraz danych klubów/turniejów.
  • ChessDB Cloud Evaluation — autorstwa Bojuna Guo. Baza wiedzy szachowej zbudowana z analiz silnikowych. Domena publiczna.
  • Stockfish — pliki binarne silnika hostowane na naszej własnej infrastrukturze (enparlant.redshed.ai).
  • Lichess — bazy otwarć i baza zagadek, hostowane na naszej własnej infrastrukturze. CC BY 4.0.

En Parlant~ jest objęty licencją GPL-3.0, wymaganą przez kaskadę copyleft jego zależności szachowych:

LicencjaPakiety / Komponenty
GPL-3.0 / GPL-3.0-or-laterSam En Parlant~, chessground, chessops, shakmaty, pgn-reader, shakmaty-syzygy, Stockfish, Lc0, RubiChess, Fairy-Stockfish, figury Merida, czcionka notacji szachowej
MITReact, Vite, Mantine (wszystkie), TanStack (wszystkie), TipTap (wszystkie), zustand, framer-motion, embla-carousel, dayjs, recharts, sql.js, Tabler Icons, CodeMirror, Node.js, pnpm, tokio, rusqlite, PostCSS
MIT OR Apache-2.0Tauri (wszystkie), język Rust, serde (wszystkie), tokio, reqwest, futures, thiserror, anyhow, log, tempfile, dirs, flate2, TypeScript, Biome
BSD-2-Clausechess.js
Apache-2.0fuse.js, idb-keyval
SIL OFL 1.1Czcionka Inter
CC0 (domena publiczna)Baza partii Lichess, baza zagadek Lichess
CC-BY-SA-3.0 / 4.0Figury cburnett, figury California, zestaw figur Shapes
AGPL-3.0Główna baza kodu Lichess (API jest darmowe w użyciu)
Komercyjna/WłasnościowaKomodo, Dragon by Komodo (opcjonalne silniki, niedołączane)

Wymóg copyleft GPL-3.0 oznacza, że każda dystrybucja En Parlant~ musi zawierać kod źródłowy lub pisemną ofertę jego dostarczenia, a prace pochodne muszą być również objęte licencją GPL-3.0 lub kompatybilną. Wynika to głównie z bibliotek szachowych Niklasa Fiekasa i komponentu Chessground z Lichess.

To oprogramowanie istnieje dzięki wkładowi setek osób w dziesiątki projektów. Trzy osoby zasługują na szczególne wyróżnienie: Francisco Salgueiro zbudował aplikację; Niklas Fiekas zbudował infrastrukturę logiki szachowej (zarówno w TypeScript, jak i Rust); a Thibault Duplessis zbudował interfejs szachownicy i szerszy ekosystem Lichess dostarczający zestawy figur, bazy danych, zagadki i ewaluacje chmurowe. Poza nimi biblioteki serializacji Davida Tolnaya stanowią fundament backendu Rust, zespół Tauri umożliwił stworzenie szkieletu desktopowego, a 56 współtwórców ze społeczności dostarczyło funkcje, tłumaczenia na 10 języków i poprawki błędów, które ukształtowały produkt.

Każda ewaluowana pozycja szachowa jest zadłużona wobec społeczności Stockfish, a każde sprawdzenie końcówki wobec baz Syzygy Ronalda de Mana. Otwartoźródłowy ekosystem szachowy jest niezwykle powiązany — pojedyncza aplikacja taka jak En Parlant~ czerpie z prac obejmujących dwie dekady, od figur szachowych SVG Colina M.L. Burnetta z 2006 roku na Wikimedia po optymalizacje kompilatora React 19.

Pominęliśmy Cię? Napisz do nas, a to naprawimy. Jeśli wolisz pozostać anonimowy, daj nam znać również: darrell@redshed.ai.