gorhill / uMatrix

uMatrix: Point and click matrix to filter net requests according to source, destination and type
GNU General Public License v3.0
4.55k stars 470 forks source link

New scope selector is confusing and unattractive #936

Closed ssokolow closed 6 years ago

ssokolow commented 6 years ago

At the moment, my primary browser is still Firefox 52 ESR, while I investigate the best options for replacing addons that are impossible to implement under WebExtensions restrictions. This is the scope selector from uMatrix which I am used to seeing in those conditions:

screenshot1

While it doesn't technically have any indication that it's a dropdown list widget (eg. ▼), the on-hover "this is interactible" highlight it provides is consistent with the rest of the UI and it looks clean and reasonable.

(It also fits neatly into the implicit four-section grid formed by a table with both row and column headers, being only as wide as the row headers and only as tall as the column headers.)

When I started building a Firefox 58 profile for comparison against options such as Waterfox, this is the interface that I was greeted with by the current uMatrix release:

screenshot2

It has the following flaws:

Here are my suggested options for resolving this intuitiveness/consistency regression, with mockups:

Personally, I'd just go back to the dropdown. The current approach feels like a solution that's too clever for its own good and the old approach maximized the amount of usable space by not having a permanently visible * button and not needing to deal with having the buttons look like a rendering glitch if there's no space and/or border between the subdomain and domain portions.

theWalkingDuck commented 6 years ago

The click to select or to deselect the scope is fully in the spirit of uMatrix as the click to allow or to block a content.

I have a problem with the idea to bring back that clunky dropdown menu again.

ssokolow commented 6 years ago

I'm not really sure there's any definition of "in the spirit of uMatrix" which is meaningful enough to overrule other UI concerns, given that the scope selector has characteristics that set it apart from all other widgets in the dialog:

I have a problem with the idea to bring back that clunky dropdown menu again.

In what way do you find it clunky? I don't find myself flipping back and forth between scopes often enough to make it bothersome, so it's possible I'm overlooking something.

That said, I do think there will always be a certain learning curve to the new design, simply because the flat style used by uMatrix makes it difficult to communicate something like "this is a group of toggle buttons" (example) or "this is a breadcrumb widget" (example) or some other intuitive signal which would help people to quickly grasp how the widget should behave based on prior experience.

gorhill commented 6 years ago

In what way do you find it clunky?

Requires more than one click to change scope, and make scoping less prominent -- which is a core concept in uMatrix. I've seen so many "I can't create a rule which applies everywhere", and making the global scope in full view ready to be used is bound to help with this. Actually, I should add a tooltip to the global scope button to explicitly state its purpose.

ssokolow commented 6 years ago

and make scoping less prominent -- which is a core concept in uMatrix. I've seen so many "I can't create a rule which applies everywhere", and making the global scope in full view ready to be used is bound to help

Fair enough. While the addition of a ▼ would definitely have helped there, the new design does mean that people will actually think to check for a tooltip. (On the other hand, with the dropdown, the * could have been replaced with something like "Default Behaviour" or "All Sites")

Actually, I should add a tooltip to the global scope button to explicitly state its purpose.

Definitely. Any button or label which contains only a single glyph should have one.

(Speaking of which, the button should also have a tooltip which makes it clear that the settings contained within are scope-specific. That's one thing that I misunderstood when I first started using uMatrix because it felt like they were too "distanced" from the scope selector for it to modify their effects... similar to how I wouldn't expect the scope selector to control output filtering in the logger window.)

mikhaelkh commented 6 years ago

@ssokolow all blue buttons are scope-specific, all black buttons are not. While I think that while the UI isn't perfect, the scope selector change was definitely good, you're just used to dropdown list, after a while this makes perfect sense. My two cents:

ssokolow commented 6 years ago

all blue buttons are scope-specific, all black buttons are not

Even knowing that those two buttons are scope-specific, I either didn't notice that they were blue or didn't register it as significant until you called my attention to it.

I suspect it's a cognitive artifact akin to banner blindness that has to do with that shade of blue either being or closely resembling the default hyperlink colour. (ie. Subconsciously dismissing the blueness of the toolbar buttons as an irrelevant detail caused by a CSS bug based on prior experience with clickable things sometimes being blue and sometimes not.)

Either way, the "something this many steps removed from the selector" (in a menu within a toolbar button) intuition overwhelms the "blue things are scope specific" intuition for reasons similar to my not expecting the scope selector to control filtering on the logging window. Hence my point that it needs that clarified in a tooltip.

Actually, now that I think about it, the fact that it's a dropdown might be part of the reason my intuition dismissed the blue as a bug... because the "display a submenu" that happens when you click on is a hide/show action with no effect on the data model rather than a toggle with persistent effects and, therefore, the hypothesis that blue means "affected by the state selector" is disproved because it appears on something with no state to be affected. (Which would then be reinforced by the contents of the dropdown being black rather than blue.)

gorhill commented 6 years ago

Current scope selector is by-design, I do not intend to change it.

ssokolow commented 6 years ago

What about the most minor tweak in option B?

(Remove the line of blue surrounding the grey and add a couple of pixels of padding and a border between each independently clickable segment (ie. bugzilla., mozilla., and org) to make it clear that it's a row of buttons, rather than a rendering glitch drawn under the left end of a single text widget.)

gorhill commented 6 years ago

The blue border is by-design, it's to visually convey that the current selection is a subset of all fields available inside the whole button (whole = blue border).

ssokolow commented 6 years ago

Well, with the lack of padding between the bugzilla. and the mozilla.org, I interpreted it as a rendering glitch drawn behind a single text widget.

(Plus, what you're doing is the flat-design equivalent of putting buttons within buttons in a native GUI toolkit like Qt or GTK+... and that's discouraged by design specialists.)

EDITED BELOW

For now, I'll use the following in my userContent.css:

/* Fix rendering glitch-esque default style in uMatrix scope selector */
@-moz-document url-prefix("moz-extension://19c6955d-eec7-44a2-a3da-c58f4daa2329/") {
    body .toolbar #specificScope {
      padding: 0 !important;
      border: 0 !important;
    }

    body .toolbar #specificScope > span {
      padding-right: 3px !important;
      padding-left: 3px !important;
      border-left: 1px dotted #77f !important;
    }

    body .toolbar #specificScope > span:first-of-type {
      border-left: none !important;
    }

    /* ...and fix text contrast on deselected scope buttons for readability */
    body .toolbar .scope:not(.on),
    body .toolbar #specificScope > span:not(.on) {
        background-color: #aaa !important;
        border-color: #aaa !important;
    }
}