Proposal for Linux engine standard

Discussion of chess software programming and technical issues.

Moderator: Ras

User avatar
jshriver
Posts: 1360
Joined: Wed Mar 08, 2006 9:41 pm
Location: Morgantown, WV, USA

Re: Proposal for Linux engine standard

Post by jshriver »

diep wrote:
hgm wrote:
So that leaves you as only linux users who runs more than 1 engine under linux, or did i forget someone on this planet who does?
Believe there is a market for this, lots of people here use Linux. I myself use xboard or icsdrone with at least 14-20+ engines running in linux at any given time for my ICS.

Linux is nice, in that if I really need to (and currently do) I can run windows engines vi wine with icsdrone or xboard.

One of my engines now is run via wineconsole -> polyglot -> icsdrone -> OICS and it's one of my more stable engines.

Just my $0.02

-Josh
ZirconiumX
Posts: 1360
Joined: Sun Jul 17, 2011 11:14 am
Full name: Hannah Ravensloft

Re: Proposal for Linux engine standard

Post by ZirconiumX »

jshriver wrote:
diep wrote:
hgm wrote:
So that leaves you as only linux users who runs more than 1 engine under linux, or did i forget someone on this planet who does?
Believe there is a market for this, lots of people here use Linux. I myself use xboard or icsdrone with at least 14-20+ engines running in linux at any given time for my ICS.

Linux is nice, in that if I really need to (and currently do) I can run windows engines vi wine with icsdrone or xboard.

One of my engines now is run via wineconsole -> polyglot -> icsdrone -> OICS and it's one of my more stable engines.

Just my $0.02

-Josh
I agree with Joshua here, my Raspberry Pi has around 8 engines all with handy launch shell scripts.

The only issue I have is "What does a non-root user do?" Sudo it. And if you can't sudo it, because of being at work, then what?

We'd have to add ~/games/engines to the list. And for a 200 user system...

This is impractical, to say the least.

Matthew:out
tu ne cede malis, sed contra audentior ito
Michel
Posts: 2292
Joined: Mon Sep 29, 2008 1:50 am

Re: Proposal for Linux engine standard

Post by Michel »

something like:

Name = Fruit
Game = Chess
Protocol = UCI
Command = fruit
I would recommend to replace "Chess" by "normal", and in general to require that for known variants the names in the xboard protocol would be used

After all the aim is to standardize things....
zamar
Posts: 613
Joined: Sun Jan 18, 2009 7:03 am

Re: Proposal for Linux engine standard

Post by zamar »

Michel wrote:
something like:

Name = Fruit
Game = Chess
Protocol = UCI
Command = fruit
I would recommend to replace "Chess" by "normal", and in general to require that for known variants the names in the xboard protocol would be used

After all the aim is to standardize things....
But if late (hopefully) othello, go or tictactoe GUIs start to use same directory, then "normal" will sound very funny, don't you think?
Joona Kiiski
Michel
Posts: 2292
Joined: Mon Sep 29, 2008 1:50 am

Re: Proposal for Linux engine standard

Post by Michel »

Well there is some confusion about the meaning of "Game". HGM wrote

Game = xiangqi

so I assume he was referring to a variant....

Probably one should have

Family = chess
Variant = xiangqi

or

Family = tictactoe
Variant = normal (which would be the default)
zamar
Posts: 613
Joined: Sun Jan 18, 2009 7:03 am

Re: Proposal for Linux engine standard

Post by zamar »

hgm wrote: To allow for multi-protocol engines, which could require different commands to start in either protocol (e.g. gnuchess --uci vs gnuchess) I would prefer to combine Protocol and Command into one option, and allow to have more than one.
That's a good point. Could it be:

Name = fruit
Game = Chess
Protocol = UCI
UCI.command = fruit

or

Name = foo-engine
Game = Chess
Protocol = UCI, WB
UCI.command = foo-engine -foo
WB.command = foo-engine -bar

The first listed protocol would the engine's primary protocol.
Joona Kiiski
Michel
Posts: 2292
Joined: Mon Sep 29, 2008 1:50 am

Re: Proposal for Linux engine standard

Post by Michel »

XBoard.cmdargs = -foo
SCID.cmdargs = -bar
A more standard way of handling this would be through the standard inifile syntax

[engine]
...
[xboard]
cmdargs=...
[scid]
cmdargs=...
[icsdrone :D ]
cmdargs=...
Michel
Posts: 2292
Joined: Mon Sep 29, 2008 1:50 am

Re: Proposal for Linux engine standard

Post by Michel »

That's a good point. Could it be:

Name = fruit
Game = Chess
Protocol = UCI
UCI.command = fruit

or

Name = foo-engine
Game = Chess
Protocol = UCI, WB
UCI.command = foo-engine -foo
WB.command = foo-engine -bar

The first listed protocol would the engine's primary protocol.
I rather prefer multiple engine files for the same engine. You may
do other things in an engine file than just specifying the protocol: e.g.
setting defaults for some options....

An engine package could create for example engine files for three different personalities...

Or an alien winboard engine could be set up with the right options to play
tictactoe...

EDIT: JSON (used by cutechess-cli) would be another possible standard format for the engine files...
User avatar
hgm
Posts: 28390
Joined: Fri Mar 10, 2006 10:06 am
Location: Amsterdam
Full name: H G Muller

Re: Proposal for Linux engine standard

Post by hgm »

Indeed, I think the case for multiple engine files is strong. It would also make life easier for multi-variant engines. Although people should be urged not to overdo it. We don't want GUIs to install 20 different version of each and every engine (providing different personalities and strengths) in their engine list by default. So perhaps each package should have only one file recognizable as default, or protocol default. E.g. by a .uci or .wb extension to the file, so that the GUIs default install function would pick that one (choosing its own favored protocol if it has a choice), and ignore all files that do not have that extension. Of course a more advance GUI could have an interactive feature to let the user add these other 'engine profiles' to their list of GUI-installed engines by browsing the folder, but there should be some mechanism by which the default install can be restricted.

The (Family, Variant) idea is very good. Indeed I avoided 'normal' to allow other games than chess.

If we used inifile syntax, I think it would make more sense to invert it, like

Code: Select all

[cmdargs]
xboard=...
scid=...
icsdrone=...
Because I can't imagine anything else that would be dependent on the GUI than the cmdargs, and it seems silly to have all these sections with only a single member.
kbhearn
Posts: 411
Joined: Thu Dec 30, 2010 4:48 am

Re: Proposal for Linux engine standard

Post by kbhearn »

why ini instead of xml of which parsers are plentiful, and it'd be simple to include sections for multiple protocols/variants/etc in a single file.