[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Proposing new virtual packages for engine/gui compatibility

We currently have a large (and growing) number of engines for Chess,
Shogi, XiangQi, Go and similar games, GUIs to communicate with them
using several protocols (at least xboard, eboard, scid, tagua), and
protocol adapters (polyglot, uci2wb).

Currently, all of those GUI packages only recommend a handful of the
available engines, and vice versa.  It would be much better to use
virtual packages.

Thus a first proposal could be to use a set of $PROTOCOL-game-engine
and $PROTOCOL-game-ui, as follows.

$PROTOCOL will be one of:
* "uci" (Universal Chess Interface)
* "cecp" ("Chess Engine Communication Protocol", also known as "xboard
  protocol", but that's the official name given by the XBoard team)
* "usi" (Universal Shogi Interface)
* "ucci" (Universal Chinese Chess Interface)
* "csa" (Computer Shogi Association protocol)
* "xshogi" (the CECP spinoff used by XShogi)
* "xshogi-minishogi" (XShogi protocol as used by gnuminishogi)
* "gtp2" (Go Text Protocol v2)
* "gtp2-reversi" (GTP for Reversi, as used by Quarry/GRhino)
... to be expanded as needed

Engines would declare eg:
 Package: gpsshogi
 Provides: csa-game-engine, usi-game-engine
 Recommends: $PREFERED_UI | csa-game-ui | usi-game-ui

And GUIs would similarly declare eg:
 Package: XBoard
 Provides: cecp-game-ui
 Recommends: $PREFERED_ENGINE | cecp-game-engine

And adaptors:
 Package: uci2wb
 Provides: cecp-game-engine, uci-game-ui, usi-game-ui, ucci-game-ui
 Recommends: $PREFERED_UI | cecp-game-ui,
             $PREFERED_ENGINE | uci-game-engine | usi-game-engine | ucci-game-engine

As shown with the "xshogi-minishogi" and "gtp2-*", the general form is
indeed $PROTOCOL[-$VARIANT]-game(engine|ui), as we may want to be more
precise on the protocol, since those are often used for several game
variants.  Eg. gnuminishogi talks XShogi protocol, but XShogi itself
cannot play MiniShogi, whereas Tagua can; similarly, many GTP2 GUIs
only support Go, whereas Quarry also supports Reversi.

If there is no objection, I will submit a patch to debian-policy
adding the 2 sets (-ui and -engine) of virtual packages to the
official list, for the list of protocols listed above.

Reply to: