跳转到内容

致谢与署名

En Parlant~ 是 En Croissant(“终极国际象棋工具箱”)的分支——一个使用 Tauri(Rust + React/TypeScript)构建的跨平台开源国际象棋图形界面。本文档列出了使这款软件成为可能的每一位个人、团队、组织和项目,从核心应用框架到各个字体、图标和棋子 SVG。

整个项目采用 GPL-3.0 许可,这源于关键国际象棋库(chessground、chessops、shakmaty)的 copyleft 要求,这些库由 Niklas Fiekas 和 Lichess 团队编写。两个人——Niklas FiekasThibault Duplessis——几乎构建了使 En Parlant~ 成为可能的整个开源国际象棋基础设施,从棋盘渲染到走法生成再到谜题数据库。

Francisco Salgueiro 是 En Croissant 的唯一创建者和主要维护者。他贡献了 23 个以上版本中 1,302 多次提交的绝大部分。该项目已获得 1,400 多个 GitHub 星标和 199 个分支,拥有 46 位基于提交的贡献者以及发布说明中致谢的 56 位以上个人。

En Croissant 是一个 Tauri 2 桌面应用程序,使用 TypeScript(87.7%)和 Rust(11.9%)编写。它支持多引擎分析、从 Lichess 和 Chess.com 导入棋局、基于间隔重复的开局训练、带位置搜索的数据库管理以及谜题训练。Francisco 亲自负责 React 前端架构、用于数据库操作和引擎通信的 Rust 后端以及整体产品愿景。他通过 Buy Me a Coffeeencroissant.org/support 接受捐赠。

En Parlant~(由 @DarrellThomas 开发)是一个添加了文本转语音(TTS)解说功能的分支——集成了 ElevenLabs 和 Google Cloud 进行文本转语音解说,KittenTTS 用于本地设备端合成,以及 Cloudflare R2 用于音频托管。

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 导入修复;走子同步修复
语言贡献者
中文@chuigda
葡萄牙语@franciscoBSalgueiro
西班牙语@yako1984@dav1312
法语@PaulJeFi
意大利语@MrPiada
俄语@artemy
挪威语(书面挪威语)@TBestLittleHelper
土耳其语@LiberaTeMetuMortis
德语@eskopp
韩语@kimerikal-games

@garbidge@pmyszka@powy-e — En Croissant v0.10.0 之前的贡献。

Tauri — Rust/WebView 桌面应用程序框架——由 Daniel Thompson-YvetotLucas Nogueira 于 2019 年共同创立,由 The Commons Conservancy 中的 The Tauri Programme 维护。主要贡献者包括 Amr BashirFabianLars。采用 Apache-2.0 OR MIT 许可。

ReactJordan Walke 于 2013 年在 Facebook 创建,由 Meta Open Source 维护。主要贡献者包括 Dan AbramovAndrew ClarkSebastian MarkbageSophie AlpertBrian Vaughn。采用 MIT 许可。

ViteEvan You(同时也是 Vue.js 的创建者)创建,由 VoidZero Inc. 开发。主要贡献者包括 PatakAnthony FuBjorn Lu。采用 MIT 许可。

TypeScriptAnders Hejlsberg(同时也是 C# 和 Turbo Pascal 的创建者)在 Microsoft 创建。采用 Apache-2.0 许可。

国际象棋专用库与 Niklas Fiekas 生态系统

Section titled “国际象棋专用库与 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 — 快速、无分配、流式的 Rust PGN 解析器。采用 GPL-3.0-or-later 许可。
  • shakmaty-syzygy — 用于查询 Syzygy 残局库的 Rust 库。采用 GPL-3.0-or-later 许可。

Niklas Fiekas 同时也是 python-chess(主流 Python 国际象棋库)的作者,以及 Lichess 生态系统的核心贡献者。他在这些库上的 GPL-3.0 许可将 copyleft 要求传递到了 En Parlant~ 本身。

Lichess 生态系统与 Thibault Duplessis

Section titled “Lichess 生态系统与 Thibault Duplessis”

Thibault Duplessis 创建了 Lichess.org —— 最大的免费开源国际象棋服务器。Lichess 项目为 En Parlant~ 贡献了多个组件:

  • Chessground — 交互式棋盘 UI 组件,具有自定义 DOM 差异比较、SVG 箭头绘制、拖放、预走和纯 CSS 主题。压缩后约 10KB,零依赖。采用 GPL-3.0-or-later 许可。
  • Lichess API — 用于导入用户棋局、访问云端评估和查询开局浏览器。属于 AGPL-3.0 Lichess 项目的一部分。
  • Lichess 棋局数据库 — 数十亿局 PGN 格式的棋局,按月发布。采用 CC0(公有领域)许可。
  • Lichess 谜题数据库 — 从 6 亿局经 Stockfish NNUE 分析的棋局中生成的 460 万以上谜题。采用 CC0 许可。
  • 棋子 SVG 和棋盘主题 — 来源于 Lichess 静态资源集合,采用各种许可证(详见下方棋子集部分)。

En Parlant~ 支持任何兼容 UCI 协议的引擎,并提供一键安装功能:

应用中显示的引擎评分来源于 CCRL(计算机国际象棋等级分列表),由 Graham Banks、Kirill Kryukov、Sergio Martinez、Gabor Szots、Shaun Brewer 等人自 2005 年 12 月起维护。

主要来源于 Lichess 资源集合:

  • cburnett(默认)— 由 Colin M.L. Burnett 制作。使用 Inkscape 创建的简洁、易识别的 SVG 棋子。多重许可:BSD-3-Clause、GFDL、GPL、CC-BY-SA-3.0。同时也用作应用程序图标的基础。
  • Kosal,由 Philatype 制作 — CC 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 或兼容许可下分发。
数据库棋局数量创建者 / 策展人
Lumbra’s Gigabase约 957 万Lumbra(社区策展人)
Caissabase 2024约 540 万社区从 MillionBase、KingBase 和 TWIC 策展整理
Ajedrez Data(OTB)约 428 万Ajedrez Data 社区
Ajedrez Data(通信赛)约 152 万Ajedrez Data 社区
MillionBase约 345 万Ed Schroder(Rebel 国际象棋引擎作者)及社区

Syzygy 残局库 — 由 Ronald de Man 创建,7 子残局库由 Bojun Guo 于 2018 年生成。由 Lichess.org 托管提供下载。

ChessDB Cloud(chessdb.cn)— 由 Bojun Guo 开发。基于引擎分析构建的大规模国际象棋知识数据库。发布为公有领域

  • KittenTTS,由 KittenML 开发 — 默认的本地 TTS 引擎,随应用捆绑。完全在设备上运行,无需 API 密钥。通过 ONNX Runtime 使用 ONNX 语音模型,通过 eSpeak NG 进行音素化。
  • OpenTTS,由 Michael Hansen (synesthesiam) 开发 — 可选的自托管 TTS 服务器,通过 Docker 在本地运行。
  • Google Cloud Text-to-Speech — 可选的云端 TTS 提供商,具有 WaveNet 语音。需要用户自行提供 API 密钥。
  • ElevenLabs — 可选的高级云端 TTS 提供商,具有高质量语音。需要用户自行提供 API 密钥。

Mantine 生态系统(全部由 Vitaly Rtishchev 开发,MIT 许可)

Section titled “Mantine 生态系统(全部由 Vitaly Rtishchev 开发,MIT 许可)”

Vitaly Rtishchev 创建并维护整个 Mantine 组件库 — 30,600+ 星标,100+ 组件,50+ hooks。

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

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

Section titled “Tauri npm 包(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

TanStack(全部由 Tanner Linsley 开发,MIT 许可)

Section titled “TanStack(全部由 Tanner Linsley 开发,MIT 许可)”

Tanner Linsley 创建了 TanStack 生态系统:@tanstack/react-query(异步数据获取/缓存)、@tanstack/react-table(无头表格/数据网格)、@tanstack/react-virtual(列表虚拟化)。

TipTap 富文本编辑器(Tiptap GmbH,MIT 许可)

Section titled “TipTap 富文本编辑器(Tiptap GmbH,MIT 许可)”

Tiptap GmbH 创建。@tiptap/react、@tiptap/starter-kit、@tiptap/extension-link。

作者许可证
react、react-domJordan Walke / MetaMIT
react-router-domRyan FlorenceMichael 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 及社区,基于 D3 构建MIT
sql.jsOphir LojkineAlon ZakaiMIT
作者许可证
@biomejs/biomeEmanuele Stoppa(从 Sebastian McKenzie 的 Rome 分支)MIT OR Apache-2.0
@vitejs/plugin-reactEvan You / Vite 团队MIT
postcssAndrey Sitnik / Evil MartiansMIT
typescriptAnders Hejlsberg / MicrosoftApache-2.0
viteEvan You / VoidZero Inc.MIT

所有 Tauri crate(tauritauri-buildtauri-plugin-logtauri-plugin-dialogtauri-plugin-shelltauri-plugin-processtauri-plugin-ostauri-plugin-updater)由 The Tauri Programme 开发。采用 Apache-2.0 OR MIT 许可。

David Tolnay 维护着 160 多个 Rust crate,负责 Rust 生态系统中一些最基础的库。crates.io 上大约 40% 的 crate 都间接依赖于 serde。

Crate作者许可证
serdeErick TryzelaarDavid TolnayMIT OR Apache-2.0
serde_jsonDavid TolnayMIT OR Apache-2.0
thiserrorDavid TolnayMIT OR Apache-2.0
anyhowDavid TolnayMIT OR Apache-2.0
Crate作者许可证
tokioCarl LercheAlice RyhlSean McArthurEliza WeismanMIT
reqwestSean McArthurMIT OR Apache-2.0
futures / futures-utilAlex CrichtonMIT OR Apache-2.0
Crate许可证描述
shakmatyGPL-3.0-or-later国际象棋走法生成、位棋盘、FEN/SAN/UCI
pgn-readerGPL-3.0-or-later流式 PGN 解析器
shakmaty-syzygyGPL-3.0-or-laterSyzygy 残局库查询
Crate作者许可证
rusqliteJohn Gallagher(原创者) / rusqlite 开发者MIT
logRust 项目开发者MIT OR Apache-2.0
tempfileSteven AllenMIT OR Apache-2.0
dirsSimon OchsenreitherMIT OR Apache-2.0
flate2Alex CrichtonJosh TriplettMIT OR Apache-2.0
zipMathijs van de Nes、Marli Frost、Ryan LevickMIT
  • Tabler Icons — 由 Pawel Kuna 制作的 6,000 多个免费 SVG 图标。通过 @tabler/icons-react 作为 Mantine 生态系统的一部分使用。采用 MIT 许可。
  • CodeMirror — 浏览器内代码编辑器,由 Marijn Haverbeke(同时也是 ProseMirror 的创建者和 Eloquent JavaScript 的作者)开发,Adrian Heine 参与贡献。用于 PGN 编辑。采用 MIT 许可。
  • Inter — UI 字体,由 Rasmus Andersson 创建。一款针对屏幕可读性优化的可变字体。用作 Mantine 的默认字体。采用 SIL Open Font License 1.1 许可。
  • 国际象棋记谱字体(lichess.chess)— 由 pgn4web 作者制作,提供图形化代数记谱法符号。采用 GPLv2+ 许可。

En Parlant~ 分支——包括其 TTS 集成、文档网站、多语言翻译、演示流程和本致谢页面——几乎完全使用 Claude Code(Anthropic 的智能编程工具)构建。Claude Code 使用 Claude(Anthropic 的 AI 助手)直接在终端中工作——读取文件、编辑代码、运行命令和管理 git 工作流。

AnthropicDario AmodeiDaniela Amodei 与多位前 OpenAI 研究人员于 2021 年共同创立,专注于 AI 安全研究。Claude 是他们的大语言模型系列。

  • Lichess API — 由 Thibault Duplessis 和 Lichess 团队维护。提供棋局导出、云端评估、开局浏览器和谜题数据。属于 AGPL-3.0 Lichess 项目的一部分。
  • Chess.com Published-Data API — 只读 REST API,用于获取公开玩家资料、棋局存档和俱乐部/赛事数据。
  • ChessDB Cloud 评估 — 由 Bojun Guo 开发。基于引擎分析构建的国际象棋知识数据库。公有领域
  • Stockfish — 引擎二进制文件托管在我们自己的基础设施上(enparlant.redshed.ai)。
  • Lichess — 开局数据库和谜题数据库,托管在我们自己的基础设施上。CC BY 4.0

En Parlant~ 采用 GPL-3.0 许可,这是由其国际象棋依赖库的 copyleft 级联要求决定的:

许可证相关包 / 组件
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.1Inter 字体
CC0(公有领域)Lichess 棋局数据库、Lichess 谜题数据库
CC-BY-SA-3.0 / 4.0cburnett 棋子、California 棋子、Shapes 棋子集
AGPL-3.0Lichess 主代码库(API 免费使用)
商业/专有Komodo、Dragon by Komodo(可选引擎,未捆绑)

GPL-3.0 copyleft 要求意味着任何 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 种语言的翻译和 Bug 修复,共同塑造了这款产品。

每一个被评估的棋局局面都受惠于 Stockfish 社区,每一次残局查询都受惠于 Ronald de Man 的 Syzygy 残局库。开源国际象棋生态系统紧密互联——像 En Parlant~ 这样的单个应用程序汲取了跨越二十年的工作成果,从 Colin M.L. Burnett 2006 年在 Wikimedia 上的 SVG 棋子到 React 19 的编译器优化。

我们遗漏了你吗?请给我发一条消息,我们会及时修正。如果你希望保持匿名,也请告知我们:darrell@redshed.ai