[Scopes] Scope result models are cleared on updates

Bug #1238979 reported by Michał Sawicz
92
This bug affects 28 people
Affects Status Importance Assigned to Milestone
Canonical System Image
Fix Released
High
Alejandro J. Cura
Ubuntu UX
Fix Released
High
Paty Davila
Unity Media Scanner Scope
Invalid
Undecided
Unassigned
unity-scopes-api (Ubuntu)
Fix Released
High
Unassigned
unity-scopes-shell (Ubuntu)
Fix Released
High
Paweł Stołowski
unity8 (Ubuntu)
Fix Released
Medium
Unassigned

Bug Description

The result models are cleared when updated, which causes abrupt changes in the dash. We need a better way for updating the models without clearing them :/

Related branches

Michał Sawicz (saviq)
Changed in unity8:
status: New → Confirmed
status: Confirmed → Triaged
importance: Undecided → Medium
Revision history for this message
Michal Hruby (mhr3) wrote :

IIRC they're cleared only if the search is taking long time.

affects: libunity → unity-scope-home
Michal Hruby (mhr3)
tags: added: scopes-s
Revision history for this message
Michał Sawicz (saviq) wrote :

The minimum things we could do:
- signal the shell that results are invalid (we can then dim them or so)
- not reset the model until there's new results

no longer affects: unity-scope-home
Changed in unity-scope-mediascanner:
status: New → Invalid
Michał Sawicz (saviq)
summary: - surfacing models are cleared on updates
+ Scope result models are cleared on updates
description: updated
Revision history for this message
Michał Sawicz (saviq) wrote : Re: Scope result models are cleared on updates

OK so the approach we want to go with:

1. on query change, loaded → false, we put a dark overlay + input block on the dash
2. when the first result comes in we reset the models and start filling them up again, the overlay goes away and everything's back to normal

We need to make sure that we have enough data (we might need an "invalid" bool instead of loaded, as loaded will not go true until all results are in).

So long as you're typing the search query you should continue to see the last results that came in (it might mean that we display results for the partial string if they came in quickly enough).

Changed in unity-scopes-shell:
status: New → Confirmed
Changed in unity-scopes-api:
status: New → Invalid
Thomas Strehl (strehl-t)
Changed in unity-scopes-shell:
assignee: nobody → Pawel Stolowski (stolowski)
Thomas Strehl (strehl-t)
tags: added: rtm touch-2014-09-11
Michał Sawicz (saviq)
Changed in unity8 (Ubuntu):
importance: Undecided → Medium
status: New → Triaged
Michał Sawicz (saviq)
no longer affects: unity8
kevin gunn (kgunn72)
tags: added: touch-2014-09-25
removed: touch-2014-09-11
Changed in unity-scopes-shell:
status: Confirmed → In Progress
Revision history for this message
Andrea Cimitan (cimi) wrote :

We need design guidance on that, subscribed them.

In my opinion, darkening the results and blocking the dash is not the best way to solve our problem.

The problem is: *new* results might come in just while the user is trying to tap an item, ending in opening something new that was not seen yet.

The proposed solution makes the dash *current* results unresponsive and visually darkened until the search process ends. Please notice that this might take a lot of time, in case of not fast or unreliable connections or depending on device speed. This brings a couple of disadvantages, one is visually cluttering the interface, resulting in elements changing colours continuously, another one is wasting all the time during searches, because the user cannot interact thus leaving no choice than to wait for an indeterminate amount of time that could be long, as said, depending on different factors (I think this can be frustrating).
Sometimes also the user might be happy with one of the current results already displayed, but this way he/she cannot interact and has to wait till the end of the search and eventually redo the previous search to open the item he/she liked.
At the same time, when the darkening goes away, are we sure the user will try to tap on the first item thinking only the darkening changed and not also the content?

I propose a new solution for those *new* results coming in after the search is completed: we make those new, and not the current, inactive for a small amount of time, like 100-200ms (while even animating them into the view, if we like). This way, not only we aim and really fix the issue of tapping a new item which just popped in on screen, but also we both not visually clutter the dash with colour changes and always keep the dash responsive in case the user find his/herself satisfied with a currently displayed results and does not care about the pending search any more.

What you guys think?

Revision history for this message
Michi Henning (michihenning) wrote :

I agree that accidental activation is a problem. It's not nice if I tap something only to find that, a split second before my finger touched the glass, the list was updated and I've activated something else.

If we animate new items into view, we have to make sure that a new item cannot displace an already-displayed item. Otherwise, if I have, say, five items on the list and I want to activate the fifth item, and now a new item slots in a position 3, shifting everything below it down, I'll end up accidentally activating the fourth item.

I think the key to making sure that accidental activation doesn't happen is to enforce that an existing item cannot change physical location when a new item arrives.

summary: - Scope result models are cleared on updates
+ [dash] Scope result models are cleared on updates
Changed in ubuntu-ux:
status: New → Triaged
assignee: nobody → James Mulholland (jamesjosephmulholland)
tags: added: touch-2014-10-09
removed: touch-2014-09-25
Pete Woods (pete-woods)
Changed in unity-scopes-shell (Ubuntu):
status: New → In Progress
importance: Undecided → Medium
assignee: nobody → Pawel Stolowski (stolowski)
no longer affects: unity-scopes-api
no longer affects: unity-scopes-shell
Changed in ubuntu-ux:
importance: Undecided → High
summary: - [dash] Scope result models are cleared on updates
+ [Scopes] Scope result models are cleared on updates
Revision history for this message
James Mulholland (jamesmulholland) wrote :

As Cimi said, graphical changes to the UI are likely to introduce more visual noise/clutter and make things less clear (and in the case of slow connections or devices, reduce utility).

Michi's suggestion ("...enforce that an existing item cannot change physical location when a new item arrives") would give a far more stable/ predictable user experience and is, in my opinion, the way to go.

Changed in ubuntu-ux:
status: Triaged → Fix Committed
Changed in unity-scopes-shell (Ubuntu):
importance: Medium → High
Revision history for this message
Paweł Stołowski (stolowski) wrote :

I've linked a new MP - diff-updates branch - which IMHO improves current dash interactions *a lot*

It gets rid of results model clearing and instead only updates the model as results arrive, after a small delay (to have a chance of accumulating some results). Now, whether we should still consider disabling the view while waiting for new search to finish is an open question, but I think it's not necessary - the bouncing bar above OSK gives clear indication that things are about to change. While some jumping may in theory happen, in practice it works very well (I've played with several scopes). These changes are currently available in silo 20 for testing.

Note, the suggestion to "enforce that an existing item cannot change physical location when a new item arrives" is not really possible to accomplish - the order of results is up to the scope, a new search may return the same items as previous one, only in different order, in which case we will just move items around.

Changed in canonical-devices-system-image:
assignee: nobody → Alejandro J. Cura (alecu)
importance: Undecided → High
milestone: none → ww46-2015
status: New → In Progress
Paty Davila (dizzypaty)
Changed in ubuntu-ux:
assignee: James Mulholland (jamesjosephmulholland) → Paty Davila (dizzypaty)
status: Fix Committed → In Progress
status: In Progress → Fix Committed
Revision history for this message
Michi Henning (michihenning) wrote :

Added scopes api because it needs a documentation update. (See comments for the attached diff branch.)

Changed in unity-scopes-api (Ubuntu):
importance: Undecided → High
Revision history for this message
Launchpad Janitor (janitor) wrote :

Status changed to 'Confirmed' because the bug affects multiple users.

Changed in unity-scopes-api (Ubuntu):
status: New → Confirmed
Revision history for this message
Paty Davila (dizzypaty) wrote :

I’ve tested silo 20 and I have to say that these changes -mainly no clearing results when updating the model but rather as the results arrive- have a great positive impact on the overall experience when using scopes, so great work¡ : )

Also, the flickering/jumping of results has been palliated, or at least, with a good network connection, it *feels* faster.

We definitely want to avoid accidental activation by tapping results while these are updating, however, if there’s no way of “enforcing physical location when a new item arrives”, I would NOT recommend to make results “inactive”, even for a small amount of time. I don’t know what the most appropriated solution could be with the challenges of the current architecture, but I will think of/design some alternatives for this issue.

Some other things to consider:

- Missing icons problem (see screenshot attached) - Pawel pointed that this is not scope’s fault but rather the shell requesting icons via thumbnailer. I’ve experienced this in several occasions, is there any technical limitation that prevent us from solving this issue and optimising the experience?

- We also need to account for the empty dash use cases, where some queries provide no results at all (i.e.: try searching for ‘coffee’ in the News aggregator = 0 results and no feedback to the user). In order to design for this screen, I need to understand what’s happening behind the scenes. Isn’t there a single result for this query, really?

- Also, for accessibility reasons, instead of delivering results for a partial string we should wait for a natural pause when user is typing to trigger the query - currently the timer is set to 300ms. My recommendation would be to wait (at least) 700ms for user input before firing the query, provided some feedback is presented that results are being returned.

Revision history for this message
Paty Davila (dizzypaty) wrote :
Revision history for this message
Paty Davila (dizzypaty) wrote :
Revision history for this message
Paweł Stołowski (stolowski) wrote :

Yeah, as discussed on IRC, the problem with missing icons is not new and is unrelated to changes in this MP - could be a timeout when fetching the icons from network, not sure (michi?).
I suggest we consider the case of 'no results' separately and not try to mix it with the improvements from this MP, as this is a separate feature.
Regarding typing timeout, I've just increased it with this MP for testing.

Paty Davila (dizzypaty)
Changed in ubuntu-ux:
status: Fix Committed → Fix Released
Changed in unity-scopes-api (Ubuntu):
status: Confirmed → Invalid
status: Invalid → Confirmed
Revision history for this message
Michi Henning (michihenning) wrote :

> Yeah, as discussed on IRC, the problem with missing icons is not new and is unrelated to changes in this MP - could be a timeout when fetching the icons from network, not sure (michi?).

Looking at the image, it shows the weather scope without icons. Is the shell *really* going through the thumbnailer for those? It seems unlikely to me, seeing that the thumbnailer normally is used only to generate thumbnails for local photos and videos, or to fetch album covers and artist images from dash.ubuntu.com. In other words, the thumbnailer clients are camera, gallery, and music apps, as well as the photo, video, and music scopes. The telegram app also uses it. I'm not aware of any other clients at the moment.

I's say the problem here is the weather scope rather than the thumbnailer.

Revision history for this message
Paweł Stołowski (stolowski) wrote :

Michi, yes, you're right, I discussed this with Albert, the thumbnailer is not involved here.

Revision history for this message
Michi Henning (michihenning) wrote :
Changed in unity-scopes-api (Ubuntu):
status: Confirmed → In Progress
Changed in unity-scopes-api (Ubuntu):
status: In Progress → Fix Committed
Changed in canonical-devices-system-image:
milestone: ww46-2015 → ww02-2016
Changed in canonical-devices-system-image:
status: In Progress → Fix Committed
Revision history for this message
Launchpad Janitor (janitor) wrote :

This bug was fixed in the package unity-scopes-shell - 0.5.5+16.04.20151111-0ubuntu1

---------------
unity-scopes-shell (0.5.5+16.04.20151111-0ubuntu1) xenial; urgency=medium

  [ CI Train Bot ]
  * debian/libscope-harness.symbols.in: update to released version.
  * Resync trunk.

  [ Pawel Stolowski ]
  * Apply updates to results model instead of clearing. Removed obsolete
    code which deals with special categories. (LP: #1238979)

 -- Michael Zanetti <email address hidden> Wed, 11 Nov 2015 09:31:47 +0000

Changed in unity-scopes-shell (Ubuntu):
status: In Progress → Fix Released
Revision history for this message
Launchpad Janitor (janitor) wrote :
Download full text (190.0 KiB)

This bug was fixed in the package unity8 - 8.11+16.04.20151112.1-0ubuntu1

---------------
unity8 (8.11+16.04.20151112.1-0ubuntu1) xenial; urgency=medium

  [ Albert Astals Cid ]
  * Make cardWidth and cardHeight real
  * Reset instead of qFatal when removing things from the middle (LP:
    #1238979)
  * Warn we're using only the cache when not connected to the interwebs

  [ Andrea Cimitan ]
  * Add sharing widget to zoomable image and video playback

  [ Daniel d'Andrada ]
  * Cursor: properly initialize hotspot position (LP: #1510407)
  * Update GSettings mock in tst_OrientedShell

  [ Lukáš Tinkl ]
  * Restore windows when activating from the spread, maintain a focus
    stack

  [ Michael Terry ]
  * Make a few DBus calls asynchronous, for a smoother UX.

  [ Michael Zanetti ]
  * Add a warning dialog when disconnecting the external monitor.
  * added icon for the dash (LP: #1488146)
  * prevent windows to be moved under the panel (LP: #1438465)
  * update inputinfo api to the latest upstream snapshot
  * use UbuntuNumberAnimations instead of linear ones for window state
    transitions (LP: #1497097)

unity8 (8.11+16.04.20151104-0ubuntu1) xenial; urgency=medium

  [ Albert Astals Cid ]
  * Add an Item that proxies for old and new audio roles (LP: #1493851)
  * CroppedImageMinimumSourceSize: Fix 'Binding loop detected for
    property "imageAspectRatio"'
  * Make the scope settings list scroll to text visible area (LP:
    #1499084)
  * Move to importing QtQuick 2.4 & friends
  * Use SDK 1.3 across all files (LP: #1503498, #1508363, #1449628)

  [ Andrea Cimitan ]
  * Add sharing widget to zoomable image and video playback
  * Make zoomable and video playback widgets edge to edge
  * Updated all 1.3 UbuntuShape to use new APIs where possible
  * Use SDK 1.3 across all files (LP: #1503498, #1508363, #1449628)

  [ CI Train Bot ]
  * Resync trunk.

  [ Christopher Lee ]
  * Quick spelling fix in process control output.

  [ Daniel d'Andrada ]
  * Enable support for overriding application orientations based on
    device type (LP: #1478637)
  * Use SDK 1.3 across all files (LP: #1503498, #1508363, #1449628)
  * Use SDK 1.3 across all files (LP: #1503498, #1508363, #1449628)

  [ Josh Arenson ]
  * Enable support for overriding application orientations based on
    device type (LP: #1478637)

  [ Michael Terry ]
  * Avoid showing the shutdown dialog when turning on the screen if your
    device is under heavy load. (LP: #1508563)
  * Handle lifecycle policy exceptions ourselves, instead of letting
    qtmir do it for us and allow non-Touch apps to opt-out of the Touch
    lifecycle.

  [ Michael Zanetti ]
  * Fixes for the panel buttons (LP: #1510360, #1504269, #1431566,
    #1443319)
  * Use SDK 1.3 across all files (LP: #1503498, #1508363, #1449628)

  [ Michał Sawicz ]
  * Add missing copyright to Cursor.qml
  * Enable support for overriding application orientations based on
    device type (LP: #1478637)
  * Support server->client visibility change to stop rendering
    (lp:#1475678) (LP: #1475678)

  [ Nick Dedekind ]
  * Support server->client visibility change to stop rendering
    (lp:#1475678) (LP: #1475678)

unity8 (8.11+15.10.2015...

Changed in unity8 (Ubuntu):
status: Triaged → Fix Released
Changed in canonical-devices-system-image:
status: Fix Committed → Fix Released
Changed in unity-scopes-api (Ubuntu):
status: Fix Committed → Fix Released
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.