Page MenuHomePhabricator

Make people aware of new activity since their last visit (mobile Topic Containers)
Open, Needs TriagePublic

Description

This task involves the work with making it easier for people arriving on a talk page to identify discussions where new comments have been posted since they last visited the page.

Story

When I land on a talk page I have visited before, I want to be able to quickly identify the discussions that contain comments I have not already seen, so that I can determine whether people have said anything in the time between now and when I last visited this particular talk page that warrants me responding to in some way, be it commenting in the discussion and/or taking some other action.

Requirements

Meta

  • Accounts impacted: Logged in . See Open question #1 about offering this to people are logged out.
  • Platform(s): Mobile
  • Skin(s): MinervaNeue
  • Talk page view: Discussion Tools talk page view

User experience

  1. Upon landing on a page that contains a discussion people have viewed before, the “latest comment” indicator that appears beneath the == H2 == section name (T310914), should be replaced with the following __ new comments
    • 1) We’re defining what it means for someone to have viewed a discussion before in Open question #2 below.
  2. The __ new comments text should be preceded by some kind of subtle, yet noticeable visual cue, that enables people to differentiate, at a glance, between discussions where there are new comments they are not likely to have already seen and discussions where we can assume they have already read the comments within the discussion.
    • 1) The __ new comments text ought to be interactive such that when people tap it, the section will expand, their viewport should scroll to bring the new comment(s) in focus, and the new comments should be highlighted .
      • 1)This highlight should not be ephemeral and should only disappear when one of the following two things happens: 1) people have tapped the comment to suggest that they’ve read it and no longer need for the interface to remind them that the comment needs their attention or 2) people collapse the section or navigate away from the page. I've written this in a way to be consistent with how highlights behave when people land on talk pages via new comment notifications they receive via Echo.
  3. Once people have ostensibly “read” the new comments within a section (as defined by 2.1.1 above), the __ new comments indicator should revert back to it’s normal state (read: Latest comment: DATE that we implemented in T310914).

Open question(s)

  • 1. Is it possible to offer this functionality to people who are logged out?
  • 2. How will the software decide whether someone has viewed a discussion before or not?
    • Approach #1
      • On mobile, the person tapped to expand a section. #TODO: I need to check whether the mobile section expanding setting impacts talk pages.
      • On desktop, the person scrolled their viewport such that they could see the discussion in question

Approaches

  • Approach #1: replace "latest comment" metadata
    • When new comments are detected within a section, replace the existing Latest comment: DATE text with # new comments
    • The # new comments indicator should be preceded by some kind of subtle, yet noticeable visual cue, that enables people to differentiate, at a glance, between discussions where there are new comments they are not likely to have already seen and discussions where we can assume they have already read the comments within the discussion.
  • Approach #2: TBD

Mockups

While the Editing Team is without a designer, we will be moving forward with implementation before mockups are prepared. We are comfortable making this decision because we do NOT think making an initial attempt to improve the experience poses a substantial risk.

Requirements

@ppelberg will be document requirements once we define and converge on an initial approach to the user experience.

Done

  • Answers to all Open questions are documented
  • An Approach is decided upon
  • An Requirements are documented
  • Requirements are implemented

Thank you to @Samwalton9 who suggested this functionality be added.

Event Timeline

  1. What about this feature makes it mobile only?
  2. The difficult decision is where the store the "last read" timestamp. If we store on the server, then you would have to store a last-read timestamp for every talk page every user visits. If you store it in the client, then it can get reset more easily, or give confusing information when you switch devices.

#TODO: I need to check whether the mobile section expanding setting impacts talk pages.

Also sections don't collapse on tablets.

Next steps

While, we are not going to prioritize work on this enhancement at this time, notes from the conversation we had about what would be involved in doing so are below...

Technical Complexities

  • For the software to know whether there is new content people have NOT seen since they last visited a page, we would need to implement a way to log anytime someone visits a talk page.
    • We discussed doing the above using a new database or using localstorage
      • While localstorage might be more straightforward to implement, it would come with trade offs:
        • If someone was to use "device 1" to visit "talk page 1" using "browser 1" and then used "device 1" to visit "talk page 1" using "browser 2," "browser 2" would have no awareness that that person had already visited "talk page 1" using "browser 1"
        • Over time, the software would "forget" what talk pages people visit because localstorage gets cleared out over time
        • localstorage would mean that a kind of "shadow history" would exist on peoples' devices; this could pose a privacy risk to people without them necessarily being aware of it
        • people who visit lots of talk pages could "max out" localstorage's capacity preventing the software from remembering some of the talk pages they visited
  • We would need to decide whether people reading new comments includes discussions read on the apps, in addition to reading talking pages across devices, browsers, etc. on the web.