hippware / rn-chat

MIT License
5 stars 0 forks source link

Determine Best HS Management Strategy #331

Closed zavreb closed 7 years ago

zavreb commented 7 years ago

Questions to consider:

Proposal # 1:

Pros: User is able to immediately open the app, recent events are user triggered (they have to scroll to display recent events, however, not all users that open the app wish to go to HS, it could be possible w/TR users prefer navigating to Explore Nearby vs. the HS)

Cons: Users have to trigger recent events

Proposal # 2:

Pros: Users are immediately thrown into most recent events, users will have to keep scrolling down to view items they may have missed

Cons: Users will have a longer load time

Proposal # 3: (similar to instagram feed)

Pros: Allows user to immediately open the app, allows the user to view their old event data, while also immediately replacing their old data with new data

Cons: User could want to know more about their old event and would want to scroll all the way down

Other Apps: Autotrader: Loads first 3, then loads subsequent card in a "sliding stacking" order Instagram: Loads the old last post, then it refreshes the first post with the new post while also loading the next ~10 items (hard to tell) Facebook: Upon app open, it loads 2 (but enough to fill the screen), the moment it senses a scroll it adds 10 items

@bengtan, @thescurry, @toland, @bernardd, @aksonov, @mstidham please state your preference in the comments below or provide an alternative proposal.

mstidham commented 7 years ago

I'm a Slack fan, I wan't to see what I have missed while I was away. I don't want to miss anything and I would rather scroll through what I don't want to see then be forced to see Top Bots (top stories). I like how Twitter displays old content and you can tap See New Tweets at the top to load current content. Linkedin also does this with New posts at the top.

thescurry commented 7 years ago

Let's make sure we discuss this during tomorrows all-hands call. My gut reaction is to opt for Option #2, because it's the most compatible with the overall "layout" of our homefeed. In other words, showing the most recent first, still allows for us to show the top 1/3 map on the homefeed. I need to think about this a bit more... open to more feedback/suggestions.

zavreb commented 7 years ago

Interesting article to add to the discussion: http://www.slate.com/articles/technology/cover_story/2016/01/how_facebook_s_news_feed_algorithm_works.2.html

bengtan commented 7 years ago

Do we want to show users items they have not viewed/missed (like slack?) Therefore load the HS to a certain "time period" in the home stream/feed?

I prefer the above. I want to see everything that happened whilst I was away ie. "continue where I left off". [1]

Do we want to show users the most recent popular items (most subscribe count or a more complicated alg)?

Discourage this because this is not the time to be developing algorithms of this sort. This is premature-optimisation/complication.

When users open the app, where do we immediately what to hold their attention

Equally divided amongst unread messages, new bots, and geo-fence alerts.

Short answer: Don't know yet.

Do we want users to be able to toggle these options?

KISS principle would say "no" (and then revisit again at some future time).


[1] ... but this clashes with the HS showing in reverse chronological order (ie. newer items first).

Wild idea: How about showing the HS with oldest items first (like Slack)? The app starts with the HS showing old data and the HS positioned at the last item, and then as newer items are received from the server, they are appended to the HS?

So, for example, if the app has old items 1 to 10 and there are new items 11 to 30 at the server. Then:

App opens with HS as:

Item 1 Item 2 ... Item 9 Item 10 (HS 'cursor' at this position)

App receives 10 items from server. HS becomes:

Item 1 Item 2 ... Item 9 Item 10 (HS 'cursor' at this position) Item 11 ... Item 18 Item 19 Item 20

User scrolls down. HS becomes:

Item 1 Item 2 ... Item 9 Item 10 Item 11 ... Item 18 (HS 'cursor' at this position) Item 19 Item 20

App receives 10 more items from server. HS becomes:

Item 1 Item 2 ... Item 9 Item 10 Item 11 ... Item 18 (HS 'cursor' at this position) Item 19 Item 20 Item 21 ... Item 30

and so on.

This is effectively what I do with Slack every morning when I go into an unread channel ... except that with Slack, I have to scroll up to find where "I left off". With this proposal, I don't have to scroll up.

bengtan commented 7 years ago

Actually, my idea above can be made to work with reverse chronological ordering. Just change the direction of everything.

.1. App starts with old data in Home Screen. .2. App loads the next oldest new items and prepends it to the HS (but maintaining the current position in the HS so the user isn't disoriented). .3. App keeps loading the next oldest new items and prepending until there are no more new items left.

If we have performance issues with too many new items at once, we can make .3. manual and add a button 'More new items' for the user to press to make one iteration of .3. happen.

aksonov commented 7 years ago

It could be not trivial to implement such loading but preserving of the current position in the HS. I don’t have good idea how to manage HS at this moment. One idea to load N latest items first and then load previous data in the background OR load them when user scrolls. But we need to discuss also what should do for next launch of app, when some items are already stored. Now app tries to load all items since last launch, but it could be long list...

On 19 Jan 2017, at 05:47, Beng Tan notifications@github.com wrote:

Actually, my idea above can be made to work with reverse chronological ordering. Just change the direction of everything.

.1. App starts with old data in Home Screen. .2. App loads the next oldest new items and prepends it to the HS (but maintaining the current position in the HS so the user isn't disoriented). .3. App keeps loading the next oldest new items and prepending until there are no more new items left.

If we have performance issues with too many new items at once, we can make .3. manual and add a button 'More new items' for the user to press to make one iteration of .3. happen.

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/hippware/rn-chat/issues/331#issuecomment-273681351, or mute the thread https://github.com/notifications/unsubscribe-auth/ABQpceKQ7C5qSIOgKnIvN_GCW-Ucuz66ks5rTur-gaJpZM4LnZY0.

zavreb commented 7 years ago

I'm a fan of Proposal #3. If users want to see items that they think they missed, they'll simply scroll down. Proposal #3 might also be the easiest one to implement. Doing it where the user left off might also be something not all users might be interested in. But if they are they can simply scroll down.

Proposal #3 also allows the user to quickly open the app. If the user wishes to go to Explore Nearby vs. lingering on the HS this proposal will get them faster. As of now it seems users really care about the potential Explore Nearby utility value.

zavreb commented 7 years ago

Hey team, can we come to a consensus tomorrow or early next week?

@bernardd still waiting on your input when you get a chance. @thescurry does your input still hold after I explained Proposal #3 (how instagram does it).

toland commented 7 years ago

I vote for #3. The user should be taken to a usable screen as soon as possible, even if we have to show some slightly stale data while we load the most recent events.

bernardd commented 7 years ago

I vote for #2 or #3, mostly because they're what I'm used to with Facebook and Twitter (which are pretty much the only two SM apps I use). I don't have particularly strong feelings either way from a technical perspective - they both take about the same amount of processing work on the server in the current implementation. For #3 we may want to consider something like Twitter's transient "See more tweets" button that allows you to jump straight to the top.

bengtan commented 7 years ago

I'm not really fussed so consider my vote as a non-vote.

aksonov commented 7 years ago

@zavreb Should HS events be accessible offline?

aksonov commented 7 years ago

@zavreb Let me know final decision so i will try to implement it this sprint (tomorrow)?

zavreb commented 7 years ago

@aksonov we're implementing #3 per conversations w/the team. HS events beyond what has already been loaded should not be accessible offline (unless @thescurry or @bengtan says otherwise)

zavreb commented 7 years ago

@aksonov thoughts on the above comment?

bengtan commented 7 years ago

HS events beyond what has already been loaded should not be accessible offline

So if the app goes offline but hasn't shown all the items yet, then while browsing the app offline, the user may experience a gap ie.

He/She sees old items, he/she sees the latest item(s), but he/she might not see items in between because the app hasn't fetched them from the server yet.

aksonov commented 7 years ago

I agree, but that think we should show old events when user is offline, because otherwise he will not see anything within HS during app start for few seconds

26 янв. 2017 г., в 01:21, Rebecka Z notifications@github.com написал(а):

@aksonov thoughts on the above comment?

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub, or mute the thread.

thescurry commented 7 years ago

@aksonov (cc: @bengtan) Yes we should show old HS notifications, so that there is content available when the user starts/loads the app.

zavreb commented 7 years ago

Closing this one. Tickets post this one will cater to improvement details.