Elements of the ULTIMATE Chess GUI?

Discussion of anything and everything relating to chess playing software and machines.

Moderators: hgm, Rebel, chrisw

Fulvio
Posts: 395
Joined: Fri Aug 12, 2016 8:43 pm

Re: Elements of the ULTIMATE Chess GUI?

Post by Fulvio »

hgm wrote: And I surely hope you don't want to imply that OK/cancel buttons are a useless bloat of dialogs like this...
You are exhausting; let's just try one (last) different approach.

Let's say that I hide *all* the options, and when installing a new engine the "..." button is automatically clicked (the one that let you select the executable).
And that if you press "OK" in the browse window it automatically click "OK" in the engine configuration window; and the same for the "Cancel" button.
Can you list the operations that you can no longer do?
After installing an engine you can always change all its configuration?
Can you install an engine without clicking the "..." button?
The user should be bothered by only one *necessary* question, what is it?
How many engines can be installed by an inexperienced user just answering that one question?

(BTW
This is how Mac Donald works in Italy:
- A Big Mac Menu with coke.
- Ok.
)
Ras
Posts: 2488
Joined: Tue Aug 30, 2016 8:19 pm
Full name: Rasmus Althoff

Re: Elements of the ULTIMATE Chess GUI?

Post by Ras »

hgm wrote:I never said it was about taste; I can puke just as well over usability.
That's a nice summary. I remember you wondering why people use Arena despite its bugs - well, because it's the lesser evil compared to the awful user experience that Winboard offers.

Though you are right that the original xboard was even worse, but that was geared at Linux users, so it didn't matter.
User avatar
hgm
Posts: 27808
Joined: Fri Mar 10, 2006 10:06 am
Location: Amsterdam
Full name: H G Muller

Re: Elements of the ULTIMATE Chess GUI?

Post by hgm »

Fulvio wrote:Let's say that I hide *all* the options, and when installing a new engine the "..." button is automatically clicked (the one that let you select the executable).
And that if you press "OK" in the browse window it automatically click "OK" in the engine configuration window; and the same for the "Cancel" button.
OK, I understand that this is pretty much how the Tarrasch GUI does it. No real engine-selection dialog.
Can you list the operations that you can no longer do?
Well, for one, it would no longer be possible to install UCI egines. There could be a small chance this would upset some people... (And that would also apply to USI/UCCI engines.) You cannot prevent the engine from being added to the GUI's database of registered engines, and would have to edit that to remove it if you did't want it there. Engines that need command-line options, or adapters/interpreters (java, python, nodejs...) could no longer be used. Each engine would be installed under its true name, making it impossible to distinguish multiple installs of the same engine with different option settings.

And of course you would no longer have the chance to select engines that you already registered before, with a simple click in the listbox, as the listbox would no longer be shown.
After installing an engine you can always change all its configuration?
You can change the engine options in the corresponding Engine Settings dialog. This does not include whether the engine is UCI or not, or whether the GUI should use its book instead of using the engine, because that is a GUI option. Of course you could go to the dialog controlling GUI-book usage, and switch it on or off, but then you would have to do that every time you load the engine. (And in particular you would have to babysit any automatic tournaments to switch on the book every time that engine's turn comes up to play. That does seem slightly inconvenient to me.)
Can you install an engine without clicking the "..." button?
Well, 'can' is a relative notion. If you know how the GUI stores its persistet settings, and you can find that ii file, and hack it by editing the options behind the GUIs back and typing the path name... Yes, then you 'can' do anything you want. This is exactly what no user ever wants, however, and which leads to an avelanche of complains about 20th-century software etc.
The user should be bothered by only one *necessary* question, what is it?
I would say that the most essential question is whether the engine he wants to load is UCI or WB. But since more information than that is virtually always needed, I have to disagree with your basic premise. Otherwise the user would be forced to start hunting through the menus for the other questions that must be answered before he can do what he wants, and I certainly would not consider that an improvement. It is like a waiter that keeps staring blankly at you for everything you say until you have figured out by yourself how much you have to tip him to get him into action.
How many engines can be installed by an inexperienced user just answering that one question?
Certainly not more than one. Because after that he will be an experienced user... The relevant question is how long it will take him to figure out how to install that first engine in a satisfactory way.

This 'one question' doctrine doesn't resonate with me at all. It just seems an obsession. Even in primitive civilizations people can usually count to four. I see absolutely no advantage in forcing people to go through 10 different dialogs to enter the 10 infos that need to be entered, (e.g. to specify a tourney) instead of using two dialogs with 5 controls. It is like a restaurant where you have to queue at the counter, and then can order only one product before you have to go to the back of the queue (or a different one) again for your drink, and then for your salad, and then desert... I like to place the order for my entire meal at once.
(BTW
This is how Mac Donald works in Italy:
- A Big Mac Menu with coke.
- Ok.
)
Well, this is why I love Italy and hate Mac Donalds. But I would not go so far as to think that you can get things done to your satisfaction faster in Italy.
User avatar
hgm
Posts: 27808
Joined: Fri Mar 10, 2006 10:06 am
Location: Amsterdam
Full name: H G Muller

Re: Elements of the ULTIMATE Chess GUI?

Post by hgm »

Ras wrote:
hgm wrote:I never said it was about taste; I can puke just as well over usability.
That's a nice summary. I remember you wondering why people use Arena despite its bugs - well, because it's the lesser evil compared to the awful user experience that Winboard offers.

Though you are right that the original xboard was even worse, but that was geared at Linux users, so it didn't matter.
Well, I tried Arena, just out of curiosity (it cannot actually do anything I want), and it was almost totally unusuable to me. Everything you might want changed hidden deeply in a completely unguessable place...

This forum is full of postings by people that ask for help because they cannot figure out how elementary things can be done with Arena.

Don't get me wrong, I really appreciate negative criticism, because I can learn from it how to do things better. But the problem is that what you are sort of overplaying your hand, and what you are saying just looks like (rather uninformed) WinBoard bashing for the sake of bashing. Making statements like that WinBoard is off-topic for a Chess GUI because of these 3 tiny menu controls out of hundreds related to the fact that orthodox Chess is only 1% of it can do totally destrys your credibility, and primes me to shrug off anything you say as 'poorly motivated hate speech'. Your deep antipathy to the old XBoard also seems very undeserved: it was a very simple program that wasn't supposed to do anything more than showing GNU Chess' moves on a graphical display, and allow moving of the pieces with the mouse. As such it needed practically no interface other than the board and pieces, as there simply wasn't anything to control.
User avatar
Ovyron
Posts: 4556
Joined: Tue Jul 03, 2007 4:30 am

Re: Elements of the ULTIMATE Chess GUI?

Post by Ovyron »

The perfect Chess GUI does NOT exist

Not even an imaginary one. Suppose one invents some "Deep Analysis"/"IDeA" algorithm in the GUI that discovers the truth faster in a position than any other method you could use. By definition interacting with this method can only make it weaker, so we're falling back to a glorified Infinite Analysis that outputs a tree with lines to explore. Except you're now just an expectator, and this kills what's left of Correspondence chess...

No, one has to learn to live with what one has.

A few weeks ago I found myself using 4 different GUIs simultaneously:

Shredder GUI to analyze with engines.

Chess Opening Wizard to store my analysis.

Scid to manage my opening book/databases.

LucasChess - Which has an interesting, and unique, tree view of positiions and allows you to ask an engine directly for its favorite moves in a convenient way (unlike MultiPV in where you have to set a number before hand, and might miss some, or Ignore Moves where you have to ask one by one.) Unfortunately this was surprisingly redundant.

Imagine if I could do all that in a single GUI!

What would I save? A few clicks?

Not even that! Because, I'm already maximizing usefulness of space, and I'm using different chess positions per GUI. Heck, I use two instances of Shredder GUI so it doesn't even do what I want alone.

I'd imagine the so called "perfect GUI" would have all those functions in tabs, to I'd switch from "Engine A / Engine B / Tree View / Database" to other tabs, and it'd be exactly the same that I have now. I just switch windows on the OS.

No, what you have to ask is:

What features would you want to see in a GUI that are currently unavailable anywhere?

What is it that you wish to do that you can't do with any of the current GUIs?

I, for one, want fun. Chess is a game and some people have taken it so seriously that it's a chore for them to run tournaments just to get some numbers that spell some elo difference, that could have been gotten by someone else instead of them, and they don't even realize it.

For some fun I'd want to see the realization of my idea:

Mixed engines.

The problem that we currently have is that chess entities are fixed. Stockfish is always Stockfish and Komodo is always Komodo.

Imagine that Houdini starts the game and that it switches to Komodo after a 0.40 centi-pawn advantage is reached or to Stockfish if you go below -0.20 for defense, or whatever.

Imagine an engine that becomes another after every 20 moves of the game.

An engine that only appears and makes a move after some other engine has made a capture, or was put in check.

This would be really fun to watch in games, as the super-solid chess entity that started a game may suddenly go bonkers and win with a surprise king attack that the original never saw coming, or you can put to use that super-speculative personality of your engine because once it reaches that winning position it will not give it away because it no longer keeps playing crazy but switches to an engine that can finish the game but wouldn't have reached that position in the first place.

I wouldn't be surprised if some combination of this concept made appear a chess entity much stronger than the Komodos, Stockfishes and Houdinis of today, not only by fusing their strength, but perhaps throwing it a Hanibbal, Andcacs or Fizbo whenever it's pertinent and they'd play a striking move that the top engines would prune.

Is this an element of the ULTIMATE Chess GUI?

Doubtful, but I think users have to think what they want that they don't have already and ask for it instead of bloating something with stuff they already have just so they don't have to open one more GUI to do the job.
Fulvio
Posts: 395
Joined: Fri Aug 12, 2016 8:43 pm

Re: Elements of the ULTIMATE Chess GUI?

Post by Fulvio »

hgm wrote:
Can you list the operations that you can no longer do?
Well, for one, it would no longer be possible to install UCI egines. There could be a small chance this would upset some people... (And that would also apply to USI/UCCI engines.) You cannot prevent the engine from being added to the GUI's database of registered engines, and would have to edit that to remove it if you did't want it there. Engines that need command-line options, or adapters/interpreters (java, python, nodejs...) could no longer be used. Each engine would be installed under its true name, making it impossible to distinguish multiple installs of the same engine with different option settings.

And of course you would no longer have the chance to select engines that you already registered before, with a simple click in the listbox, as the listbox would no longer be shown.
After installing an engine you can always change all its configuration?
You can change the engine options in the corresponding Engine Settings dialog. This does not include whether the engine is UCI or not, or whether the GUI should use its book instead of using the engine, because that is a GUI option. Of course you could go to the dialog controlling GUI-book usage, and switch it on or off, but then you would have to do that every time you load the engine. (And in particular you would have to babysit any automatic tournaments to switch on the book every time that engine's turn comes up to play. That does seem slightly inconvenient to me.)
You cannot seriously do not understand what i'm trying to say to you.
Please just read what you wrote, a long list of *technical* problems that should not concern any user at all.
Why one should even *know* what UCI, USI, UCCI, xboard, Winboard, v1 or v2 are?
When you open an internet browser do you see a pop-up window that asks you if you want an HTTP v1, v1.1, v2 or an FTP connection, and do not let you change your choice later?
Should we try to convince Google that's how a real browser for experts should work?

And i do not even know why you keep talking about multiple dialog box.
Let's see how it works in Google Chrome:
Menu -> Settings:
list of the most common options
-> at the bottom of the page a hide/show button "Advanced":
list of all the options

However not everyone have a horde of developers like Google, and if the programmer was not able to fix all the technical problems that's fine, ask for help to the user.
But please stop claiming that's perfect and how things should be done.

User: I want to install this engine.
Perfect GUI: done.

User: I want to change some options.
Perfect GUI: here is the list of options, change what you want
User avatar
Evert
Posts: 2929
Joined: Sat Jan 22, 2011 12:42 am
Location: NL

Re: Elements of the ULTIMATE Chess GUI?

Post by Evert »

Fulvio wrote:for example when you order at a restaurant the waiter do not ask your preferences about every possible variation, but you can ask him if you want to.
Have you ever been to America? Because in my experience, that is exactly what they do.

Rather than give a list of things I value, I'll note a few things I would prefer XBoard did differently. I have no clue how WinBoard is any different, but I guess in so far that it is, my preference would be that it isn't. Or, as an alternative, XBoard should be available for Windows too (shouldn't be too hard these days).
The first thing I would want to be different is the new variant dialog. It should have a drop-down selection box for variants rather than a ton of radio-buttons.
The second thing I would want to change is the position setup. I find neither of the current setup methods very user-friendly (I can never work out how to get the piece I want in the colour I want and end up with what I intend mostly by accident). I just want a palette that allows me to drag (or select by clicking) the piece I want (or an empty square) and that lets me set things like castling flags/ep-fields. With a drop-down box that selects between all pieces, those defined for the current variant (default) or those defined for a particular other variant.
For promotions I would also prefer a pop-up box to select options.

I'm not a big fan of the multi-window interface, but it's nice in that it allows for customisation and flexibility. From what I've seen of alternatives, they're not really better.

EDIT to add: the user should of course have to do exactly nothing to "register" an engine with a GUI. The GUI should pick up that the engine is there and allow the user to select it without further issues. This of course requires a communication standard for engines to announce to GUIs that they're there. Which exists for *nix but not (I think?) for Windows.
Last edited by Evert on Thu Oct 26, 2017 11:53 am, edited 1 time in total.
Ras
Posts: 2488
Joined: Tue Aug 30, 2016 8:19 pm
Full name: Rasmus Althoff

Re: Elements of the ULTIMATE Chess GUI?

Post by Ras »

hgm wrote:what you are saying just looks like (rather uninformed) WinBoard bashing for the sake of bashing.
It's blatantly obvious to anyone with even rudimentary competence in the fields of usability and GUI design. For your remarks with Arena, I never said it is great, it actually isn't. It's just not horrible, that's all it takes.
Making statements like that WinBoard is off-topic for a Chess GUI
It was you who started to talk about non-chess stuff in a thread about the ultimate chess GUI.
Your deep antipathy to the old XBoard also seems very undeserved
It doesn't because lots of settings were only available via command line switches. That's total garbage for a GUI, and Linux is the only place where such garbage had any chance to survive longer than a snowman in a sauna.

Actually, the whole mess is a pretty good confirmation for the article I posted above (and which nobody has read, of course). The real question is how to get UI/UX/usability experts on board who usually are not coders. Otherwise, the result will be feature-complete and horribly unusable.
User avatar
gbtami
Posts: 389
Joined: Wed Sep 26, 2012 1:29 pm
Location: Hungary

Re: Elements of the ULTIMATE Chess GUI?

Post by gbtami »

"Why one should even *know* what UCI, USI, UCCI, xboard, Winboard, v1 or v2 are? "

In PyChess when "New" button pressed in Manage engines window it opens a standard file selection dialog, and when you select your new engine it try to detect (in the background) automatically the protocol sending "uci" first. If it not responds with "uciok" in a reasonable time it will be xboard. All in all most of the time adding a new engine is done by only selecting it from the file system.
User avatar
hgm
Posts: 27808
Joined: Fri Mar 10, 2006 10:06 am
Location: Amsterdam
Full name: H G Muller

Re: Elements of the ULTIMATE Chess GUI?

Post by hgm »

Fulvio wrote:User: I want to install this engine.
Perfect GUI: done.

User: I want to change some options.
Perfect GUI: here is the list of options, change what you want
Well, that is how it works in XBoard. Except that XBoard would not even involved. So it is more like:
User (to his software management center): I want to download this engine
XBoard (when invoked later): done
It would be nice if it would also work that way in WinBoard. IMO this discussion so far entirely misses the point, by quibbling over whether the browse button to point out an engine you want to install, (after navigating through many levels of folders to get there), or whether it can share its space with a UCI checkbox. Because it is an abomination that that browse button needs to exist anywhere, and that any kind of user action is required to make an engine that was already installed on the machine available for use by the GUI. So NO, what you present here as what the "Perfect GUI"should do, is in fact a silly kludge that is light-years away from perfection. A perfect GUI would just be launched by the user, and any new engines the latter had downloaded would then have been installed automagically. Like in XBoard.

Unfortunately it only works that way in an ideal world. So now let's get our feet back onto the ground, and deal with reality. To make things work "no questions asked" requires standardization. Which is reasonable in the Linux world, (which is why XBoard can do this), but totally absent under Windows. Engine binaries can be scattered over the disk in the strangest places, the engines can use many different protocols, all protocols are poorly designed in that they don't start announcing themselves, but require the user (GUI) to guess and then probe what they are, with often disastrous consequences (crashing or hanging) when you guess wrong (e.g. send 'uci' instead of the 'usi' they expect). All technical problems, for sure. The real world turns out to be full of technical problems, and they won't go away by merely saying that users don't like technical problems.

So at that point there is a fundamental design choice. Will you make the GUI provide as much help to the user as it can to overcome these technical problems? Or will you abandon all hope, and accept that the user is by far too stupid to overcome these problems anyway, and just axe the functionality that would pose these problems? In other words, would you send them on a survival mission into the jungle with just a plastic spoon, with which they cannot possibly hurt themselves, or would you give them a Swiss army knife, and run the risk they starve because they do not realize that you have to flip open the proper tool first before you can use it?

Perhaps it is good to state here that I absolutely abhor how common web browsers (or the OS network-managing center) do handle their option settings, hiding anything that could be remotely useful very deeply in trees of 'Advanced' settings dialogs, as if the only choice you should ever make is to tick whether you want your (non-working) connection to be made automatically or not, and on what starting page exactly you prefer to get the 404 error. Could not be worse, IMO. Secondly, I don't agree with you that the decision whether I want an engine I used to be presented to me in the future in the listbox from which I normally select my engines, or whether I'd rather forget it as soon as I can, is a technical problem. That also holds for the (mnemonic) name I want to assign to this engine instance. Those are just regular operation of the UI to express my preferences. As to Java/Python/Nodejs and UCI/WB/USI/UCCI you are of course correct that these are technical problems from which the user should be shielded as much as possible.

So the question is really, "how much is possible?". Note that even the reverred Shredder GUI apparently has a combobox UCI/WB that you have to operate before you can proceed (after which things go to hell if you selected WB...). Do you actually know of any GUI (except XBoard) where you don't have to specify this and it still works (reliably) for all UCI and WB engines? (Easy enough, of course, to just axe functionality for one or the other.)

Accepting the imperfection that users will have to point out the executable of engines on Windows, rather than the GUI finding them automagically, I still fail to see how anything is gained from separating the activation of the file browser from any subsequent settings. You make it sound like:

Code: Select all

User: I want to install this engine
GUI: done
User: attempt to use it
GUI: sorry, can't do. Go to 'engine settings' first
User: I want to configure this engine
GUI: shitload of questions, some of which must be answered
has anything to do with perfection. I just call it a 'lying GUI'. Because it said 'done' while in fact the majority of the task was not done at all. You just distributed the task over different dialogs, but the user will still have to answer exactly the same questions. With the added inconvenience that he would have to switch between the various dialogs. I don't think that is a step towards perfection at all. In fact I think it utterly sucks.

So the question IMO is "which info does the user has to supply often to fully complete the task (of getting the new engine running), and which info is so optional that it would almost never need to be given?". Setting an engine's non-standard UCI options (so not 'Hash' or 'UCI_Ponder', which is taken care of by the GUI) IMO would qualify for the second group. So I like those to be concentrated in one dialog which I (or any typical user) would then never have to open. Putting them in the same dialog as settings which I almost certainly (or at least often) have to provide, seems a very bad idea, because it requires me to open that dialog, and be exposed to the shitload of stuff I am almost never interested in.

So if we assume for the sake of argument that the UCI/WB question is necessary, and that I would always like to have the option of assigning a nickname to the engine, and loading an engine without contaminating my engine listbox, the most convenient place for asking for those infos IMO is with the browse button. Because that is exactly where the user is at the time he wants to provide those infos. Forcing him to go to another dialog first would definitely a big step backwards. So I am afraid no one will ever be able to convince me that it would be better to have a UCI/WB switch, or the 'nickname' field, and an 'install/just load' switch in another dialog than with the browse button for the executable.

OTOH, I am completely open to issues like whether some of the other fields are really necessary or could be eliminated altogether wihout loss of functionality, or whether the necessary info could perhaps better be entered in another way (e.g. as a combo box rather than a set of checkboxes). Or more clearly labelled as 'Advanced' or 'Optional'. I admit that the 'Directory' text entry hardly seems useful anymore now that the directory by default is derived from the pathname in the executable field, and this seems to work reliably. It would be nice if it could be deleted altogether.

BUT... It would unfortunately require solving of some technical problems in a different way. What if the engine is Python or JavaScript? Currently you would have to browse to the executable of the Python interpreter or Nodejs.exe. Which would be in a different directory than the .py or .js file of the engine, and probably not the directory the engine needs to run in to access its data files. So if you cannot somehow overrule the directory name derived from the path of the interpreter, you would have to put copies of Python and Nodejs.exe in the engine directory to make it work, which is awful. This apart from the problem that the interpreter might need arguments other than just the engine source, and that in Windows these would often contain slashes, which could greatly confuse the derivation of the directory part from the pathname in the full engine command, probably making it very unreliable...

What you would like is that the user is shielded from these complications, and can simply browse to the engine .py or .js file. Like is already possible for .jar files, as 'Java' is usually installed in such a way that it is recognized as a standard command. Unfortunately that doesn't seem to be the case for Python (and Nodejs?). So it would be a necessaty to have the user also browse for the interpreter. This could of course be done by providing a separate browsable text entry for interpreters instead of the directory field, which would normally be greyed out, but would get activated as soon as a .js or a .py file appears in the text entry for the engine executable. So real life is not that easy...