-
Notifications
You must be signed in to change notification settings - Fork 109
[1630] Acquire UX requirements for persisted Pocket recs & updates (formerly: loading/error states) #2123
Comments
@mcomella I prefer approach 3:
For a few reasons:
But since the Pocket channel will be refreshed with new videos every so often, we need a content ordering behaviour that doesn’t leave the user “stranded” with no content selected, when the carousel refreshes with new content. Content ordering behaviourOur content order goes like this (1 is newest, 5 is oldest): There are two possible states, either a video in the channel is selected, or nothing is selected: If no video is selected, replace all old content when new ones are fetched: If a video is selected:
Currently selected video is not replaced, so users will never lose their current position. Although users can also return to older videos if desired, these are mainly there as anchor points: so that the user’s position don’t get reordered every time new content are fetched. What do you think? |
This is an interesting approach that I have not considered. I'm concerned about two cases:
To be explicit, we can control when we fetch Pocket updates and when we present them to the user. Currently, we fetch every 45 minutes (starting with fresh app launch) and present updates only when the overlay is reopened (i.e. never when the user is looking at it). @brampitoyo Does this information change your thinking at all? When do you think we should be fetching new video updates and do you still think we should present the updates as in the design? (need to think through my opinions on best approaches, will follow-up soon) |
Without spending too much time on it, the problem I'm trying to solve is that we want the user to be able to get the latest Pocket recommendations. From a UX/business perspective, the ideals, imo, are:
With these in mind, my ideal solution would be to:
Unknowns:
Trade-offs (+ is pro, - is con, * is neutral):
@brampitoyo What do you think? |
@brampitoyo If you want to discuss further, please throw a meeting on my calendar (I'm a little busy today - maybe tomorrow?). |
@mcomella I really like your approach as outlined above in #2123 (comment) Let’s resolve some of the cons:
Yes. The Pocket update mechanism should only trigger if, on that session, the user has accessed the homescreen (meaning: the user would have seen Pocket tiles).
I think this is solvable if, when the app is started, we fetch new content based on the time when the app was last opened. In other words:
This diagram may help explain the refresh flow, but I’ll invite you to a meeting tomorrow just in case! |
To take a step back on this specific problem:
This solution...
is starting to get complicated. Before we go further, let's make sure this is a real problem to solve: @athomasmoz In the current Pocket implementation, any active user, even those that may never see the homescreen (i.e. YT only), will have Pocket content updates every 45 minutes: do you think this makes a non-negligible impact on the server budget and is worth addressing? Additionally, with my new suggested implementation, we'd be adding 1 request to the server per day (assuming no failures) per installed user (i.e. even non-active users and those who don't see the homescreen). Do you think this would make a non-neglible impact on the server budget and is worth addressing? Alternatively, we could keep the update scheme same as it is today (if in foreground, update every 45min) and follow-up with improvements, which will allow us to decrease regression risk and upfront discussion time: the downside is that when users open the app the following day, they may see the same content from yesterday. However, maybe that's not actually that big of a deal (maybe we need to collect data on how often users who see the homescreen see the homescreen?). |
I spoke with Bram and we attempted to come up with an effective but simple solution. If you find something simpler but just as effective, iterate with Bram. Requirements
(Note: I removed the Clarifications section because I came up with a simpler solution) Unsolved problems / unknowns
Implementation tips
|
@athomasmoz Can you also check with Pocket how often they update their video feed content? @brampitoyo @athomasmoz As for the default Pocket video recommendations we ship with the application (that all users will see on first run and ~45 minutes thereafter), how do we want to source those? @athomasmoz Is that something we can commit to source or (e.g. because Pocket doesn't want that content published) something we have to bundle at build time? |
@mcomella will split this into separate bugs once the questions are answered, and requirements are set. This will now be an investigation bug. The bugs split off should be the simplest (rather than implementing a totally new retry/WorkManager) |
I spoke with Ashley who summarized these changes well: currently, we fetch Pocket updates "just-in-time" so that the user gets the latest content when they open the homescreen but this requires a loading and error state. In the proposed system, we would ship the initial content and fetch new content in the background such that there will always be content to show: it will just be out-of-date on first run. Trade-offs for proposed solution (+ is pro, * is neutral, - is con):
Another note: the content feed is updated approximately every 6 hours with one video, i.e. 4 updates a day for 4 new videos a day. |
We got a thumbs up from Pocket and they'll give us five default videos by the end of the week: let's split this bug up. |
This is broken out into:
|
Why/User Benefit/User Problem
What / Requirements
Acceptance Criteria (how do I know when I’m done?)
There are multiple approaches (from an eng perspective):
The text was updated successfully, but these errors were encountered: