Re: [Tails-ux] Tails Server GUI Design

Delete this message

Reply to this message
Author: segfault
Date:  
To: Tails user experience & user interface design
Subject: Re: [Tails-ux] Tails Server GUI Design
sajolida:
> So, to summarize the different design choices we have:


Thanks for the very helpful summary.

>
> A. GNOME-style widgets with in place edition.
>
>    You can see examples of this in Tails: Settings → Users and Settings
>    → Printers.

>
>    Options are changed by clicking on them with no confirmation by
>    default: changes are saved when losing focus or pressing
>    Enter. When needed, we can trigger more elaborate controls when the
>    option is clicked (drop-down lists, password dialogs, confirmation
>    dialogs, etc.).

>
>    This would look like "hover.png" and "click.png" in attachment (the
>    pointer is not displayed in "hover.png" but was on "Debian Live
>    user").

>
>    An important difference with the other examples in GNOME is that
>    here, we decided not to apply any change until the service is
>    restarted. 


In the current prototype, the options will only be applied when the
service is (re)started. This allows to simply use text entries whose
values are applied when the service is started. The main reason I want
to change this is that currently it is not clear to the user when the
options will be applied. This is especially problematic if he uses the
persistence feature, configures the service further and restarts Tails
without restarting the service, because then the options will not be
stored and the configuration is lost. This is why I want to use a design
which allows us to apply the options immediately when they are changed.

>    So if we go for this design, we should maybe always
>    allow modifying all options (for example, not graying out buttons
>    while the service is running) but make it clear in a different way
>    (infobar?) that the service needs to be restarted for the changes to
>    be applied. We might provide a small [Reset] link somewhere in
>    addition to that for forgiveness.


I think this does not apply, because we would apply the changes
immediately. Given this, I think your option A makes sense if we gray
out the options while the service is running.

>
>    Cons: This might be hard to apprehend the first time for the user
>    as the options lack a signifier that makes it clear that you can
>    edit them until you pass over them. But I lack previous experience
>    with users to know how difficult they are to discover (the 1st
>    second of surprise that some of us had with them might not be a
>    blocker).

>
>    Pros: Reduces the numbers of widgets we have to put on the screen
>    by layering the interface; the widgets needed to change an option
>    are only shown when the users tries to change that option.

>
>    segfault did some drawing with an additional image as signifier
>    which looks good:

>
>    https://share.riseup.net/#0mHZEa89FfPnIs0RO7N1XA
>    https://share.riseup.net/#CHWNupfcA-lmMH5nzP0YeA
>    https://share.riseup.net/#NDjHznpwuMze0XryV8lUBg

>
>    If we want to try this design, I would be interested in testing
>    without the additional image first to see how much of a problem this
>    really is. Adding back the additional image should be easy and
>    relatively safe to try later on.


I think if we gray out the option and disable the click-functionality
while the service is running, it would be even more confusing without a
signifier. Because then sometimes you can to click on the label to edit
it and sometimes you can't.

Susan and Spencer expressed concern about the unclear state between the
edit action and hitting Enter or focussing anything else. I tried to
address this by creating yet another kind of widget, which is shown in
the attached screenshots. This one also displays an edit-image while in
edit-mode. The user can click on the edit-image, press Enter or focus
anything else - each will apply the change. Pressing Escape will
cancel the edit.

>
> B. [Reset] and [Apply] buttons at the bottom of the window.
>
>    Settings are directly editable: strings are displayed in text
>    fields, options in drop-down lists, etc. The [Reset] and [Apply]
>    buttons are grayed out until the user changes some of these
>    settings.

>
>    The user has to click [Apply] to apply changes (or [Reset] to reset
>    them). Starting the service (or closing the program) before
>    applying changes triggers a confirmation dialog with [Close]
>    [Reset] and [Apply] buttons.

>
>    This would look a bit like this:

>
>    https://csl.cs.wisc.edu/sites/default/files/1x_images/MacOSX-4.png

>
>    Pros: Makes it more explicit at first sight how to change the
>    options. More forgiving, at least until [Apply] is confirmed.

>
>    Cons: Makes the default state of the dialog look more cluttered
>    with all the editable widgets displayed upfront. Makes the workflow
>    of changing a setting more complex ("change → apply → start" instead
>    of "change → start") and prone to trigger extra confirmation
>    dialogs (when the service is started before applying the changes).


I think this option would be fine, although it's definitely not the
GNOME way.

> C. One edit widget per option, with in place edition.
>
>    This is what you did so far: each option goes along with, when
>    relevant, a widget that triggers its edition.

>
>    This design makes it easier to gray out these widgets when the
>    service is running, so that users cannot edit them.

>
>    And segfault did some more screenshots:

>
>    https://share.riseup.net/#r5nu-iCxHM5sobx2zJBTyQ
>    https://share.riseup.net/#aX8Jrhb2kkm_ipd3VIbr6w

>
>    The edition would be triggered on the same dialog as segfault is
>    doing here (if I understood correctly, Spencer and Susan expressed
>    doubts about this).

>
>    Pros: Makes it explicit at first sight how to change the
>    options. Easier to block edition when the service is running and
>    transmit this to the user.

>
>    Cons: More widgets and noise upfront. More action to save after
>    changing an option.


I implemented a prototype with this option and it looks awful. So I
don't want to follow this further.

>
> D. One edit widget per option, with edition in a dialog.
>
>    The window would look like design C but when clicking [Edit] the
>    edition would be done in a small and separate dialog. This might
>    answer the concerns of Susan.

>
>    I bet that this is what's happening when clicking "Edit..." in the
>    OS X Server screenshot #3.

>
>    Pros: Over C, avoid problems with saving.

>
>    Cons: More dialogs so probably a bit slower.

>
> So, for the sake of simplicity and consistency with other GNOME
> dialogs, I would be interested in trying design A. I'm conscious that
> it might be harder to discover the first time but I'm interested in
> checking this with facts. But we would have to find a good solution for
> how to transmit that options cannot be changed while the service is
> running, or rather, as I suggested, that the service needs to be
> restarted for the changes to apply.
>
> Or, if we feel less adventurous, maybe we should go for design B with
> the [Apply] [Reset] buttons at the bottom like Mac OS X settings.


I plan to make a very small user test (about 5 people) on Friday to test
the designs A (without any signifier), my new widget, and B.

>
> Also, some general comments that might help reduce the scope of the
> problem we are addressing here:
>
> - I'm not sure we need to allow changing the onion address. Of course
> it could be useful in some cases, but is it worth the extra
> complication and the risk for some users to loose their address
> forever (unless we provide an undo)?

I already implemented a pop-up to confirm the regeneration of the onion
address. I think this is a

>
> Could people who want a different address create a new service of the
> same type?

I won't support multiple services of the same type in the beginning.
This is a nice feature for future work, but implementing it would
require a lot of work.
Users could remove the previous service and create a new one. But then
they would lose all of their configuration.

> - Passwords shouldn't be displayed in the clear. We might have to use a
> password dialog (see "password.png" in attachment) and display ******
> by default. I know that "we" use automatically generated passwords
> that are mostly fine to display on a screen (unless you're filmed)
> but none of the password fields I can think of right now display
> password upfront and that might surprise, scare, confuse users.

ACK

> - What Susan is saying about forgiveness and undo is very important
> too. So if we go for design A and C (D also but a bit less) we
> should think about the options for which it might be important to be
> more forgiving. Of course, it makes little sense for toggle, where
> the previous state is super easy to reach. But it's not same for
> onion addresses for example.

ACK. Do you think a pop-up for confirmation would be sufficient for
those options?

Cheers.