Project

General

Profile

Actions

Design/UX #19070

closed

Handling notifications backlog

Added by Colin McDonald 6 months ago. Updated 6 months ago.

Status:
Resolved
Priority name:
Normal
Assignee:
Category name:
-
Target version:
Start date:
2023-10-20
Due date:
% Done:

0%

Estimated time:
Deployment actions:

Description

We talked on the community call today (this came up on the dev call Tuesday as well) about the large number of "new" notifications users are seeing after the release this week. Power users are particularly affected, and might have a string going back years.

The issue is how to allow easier clearing of these items. We might consider some threshold (a year or two?) after which notifications are marked "old" by default, as well as ways to make it easier to change the status in bulk. Could there be a select all option, rather than just selecting page by page? Should we have separate tabs for Read and Unread items or ways to filter to one or the other?

I'm including Luke here, who had thoughts on this in particular, and Sara and Ray, it would be good to hear what you think could be helpful from your respective vantage points on this.


Related issues

Related to CUNY Academic Commons - Design/UX #17385: Profile CV & Account SettingsResolvedSara Cannon2023-03-04

Actions
Actions #1

Updated by Colin McDonald 6 months ago

Actions #2

Updated by Raymond Hoh 6 months ago

We can do some culling of notifications that can be removed.

I did a database query to determine which unread notifications were being created the most.

Here's the result:

mysql> select component_action,count(*) from wp_bp_notifications where is_new = 1 and component_action NOT LIKE 'bbp_new_reply_%' group by component_action order by count(*) desc;
+-----------------------------+----------+
| component_action            | count(*) |
+-----------------------------+----------+
| bbp_new_reply               |    25389 |
| friendship_request          |     5813 |
| group_invite                |     3260 |
| new_message                 |     1304 |
| new_membership_request      |     1043 |
| new_wire_post               |      982 |
| new_invitation              |      671 |
| followedpaper_comment       |      468 |
| new_at_mention              |      447 |
| pending_booking             |      319 |
| added_reader                |       68 |
| mypaper_comment             |       57 |
| followedpaper_edit          |       32 |
| invitation_accepted         |       24 |
| membership_request_accepted |        5 |
| membership_request_rejected |        2 |
| follow_paper_55000          |        1 |
| follow_paper_48272          |        1 |
| follow_paper_48588          |        1 |
| follow_paper_56322          |        1 |
| follow_paper_48018          |        1 |
| comment_mention             |        1 |
| follow_paper_45270          |        1 |
| follow_paper_45249          |        1 |
| follow_paper_71407          |        1 |
| follow_paper_71180          |        1 |
| follow_paper_66756          |        1 |
| follow_paper_64514          |        1 |
+-----------------------------+----------+
28 rows in set (0.10 sec)
  • bbp_new_reply notification are for older forum posts. As of Commons 1.18.23 released back on November 23, 2021, bbPress uses the "bbp_new_reply_{TOPIC_ID}" format for forum post notifications, so I think it is safe to delete all bbp_new_reply notifications outright.
  • new_wire_post notifications are really old and can be removed as well.
  • Private message notifications (new_message) and Social Paper notifications (followedpaper_comment, mypaper_comment, followedpaper_edit, follow_paper_X) can be ignored since we no longer display them in the Notifications interface as of Commons 2.2.0. Can even consider deleting them.
  • For group_invite notifications, I need to confirm with Boone how these are still created. I do see some new group_invite notifications that have been created over the past three years. I know the cac-group-admin-auto-add plugin creates a group invite, but other than that,I thought we prevented native BuddyPress group invites from being created since the introduction of our cac-onboarding plugin.

I also did the same query, but limited the unread notifications query to the last three years:

mysql> select component_action,count(*) from wp_bp_notifications where is_new = 1 and component_action NOT LIKE 'bbp_new_reply_%' and date_notified >= '2020-10-20 00:00:00' gro
up by component_action order by count(*) desc;
+-----------------------------+----------+
| component_action            | count(*) |
+-----------------------------+----------+
| bbp_new_reply               |     9912 |
| new_invitation              |      671 |
| friendship_request          |      495 |
| new_at_mention              |      252 |
| group_invite                |      251 |
| new_message                 |      241 |
| new_membership_request      |      222 |
| pending_booking             |       38 |
| invitation_accepted         |       24 |
| membership_request_accepted |        5 |
| membership_request_rejected |        2 |
| followedpaper_edit          |        1 |
| follow_paper_45249          |        1 |
| follow_paper_71407          |        1 |
+-----------------------------+----------+
14 rows in set (0.08 sec)

The unread notifications decrease by ~3.3 times. If we remove the bbp_new_reply notifications, the number becomes even more tolerable.


Conversely, I did the same database query, but for read notifications, here's the result:

mysql> select component_action,count(*) from wp_bp_notifications where is_new = 0 and component_action NOT LIKE 'bbp_new_reply_%' group by component_action order by count(*) desc;
+-----------------------------+----------+
| component_action            | count(*) |
+-----------------------------+----------+
| new_membership_request      |    10759 |
| bbp_new_reply               |     9677 |
| membership_request_accepted |     8071 |
| friendship_accepted         |     7600 |
| friendship_request          |     7508 |
| new_message                 |     4810 |
| group_invite                |     4559 |
| followedpaper_comment       |     2290 |
| mypaper_comment             |     1306 |
| member_promoted_to_admin    |      673 |
| new_at_mention              |      565 |
| membership_request_rejected |      276 |
| member_promoted_to_mod      |      191 |
| added_reader                |      181 |
| followedpaper_edit          |      150 |
| new_wire_post               |       92 |
| comment_mention             |       11 |
| follow_paper_63579          |        9 |
| follow_paper_63663          |        8 |
| follow_paper_63574          |        7 |
| follow_paper_63537          |        7 |
| follow_paper_63423          |        7 |
| follow_paper_54728          |        7 |
| follow_paper_63572          |        7 |
| follow_paper_54662          |        7 |
| follow_paper_63592          |        6 |
| follow_paper_54724          |        6 |
| follow_paper_54710          |        6 |
| follow_paper_54663          |        6 |
| follow_paper_54679          |        5 |
| follow_paper_63589          |        5 |
| follow_paper_45134          |        5 |
| follow_paper_63629          |        4 |
| follow_paper_63643          |        4 |
| follow_paper_45249          |        4 |
| follow_paper_46374          |        4 |
| follow_paper_45228          |        4 |
| follow_paper_60574          |        4 |
| follow_paper_54635          |        4 |
| follow_paper_63587          |        4 |
| follow_paper_46618          |        4 |
| follow_paper_54669          |        4 |
| follow_paper_63157          |        3 |
| follow_paper_45292          |        3 |
| follow_paper_47114          |        3 |
| follow_paper_46168          |        3 |
| follow_paper_46169          |        3 |
| follow_paper_46167          |        3 |
| follow_paper_63760          |        3 |
| follow_paper_47437          |        2 |
| follow_paper_45164          |        2 |
| follow_paper_54858          |        2 |
| follow_paper_46174          |        2 |
| follow_paper_54694          |        2 |
| follow_paper_47146          |        2 |
| follow_paper_54700          |        2 |
| follow_paper_46151          |        2 |
| follow_paper_53460          |        2 |
| follow_paper_49652          |        2 |
| follow_paper_46166          |        2 |
| follow_paper_48759          |        2 |
| follow_paper_48795          |        2 |
| follow_paper_48669          |        2 |
| follow_paper_46123          |        2 |
| follow_paper_63752          |        2 |
| follow_paper_63758          |        2 |
| follow_paper_48251          |        2 |
| follow_paper_63759          |        2 |
| follow_paper_63840          |        2 |
| follow_paper_47747          |        1 |
| follow_paper_47797          |        1 |
| follow_paper_47757          |        1 |
| follow_paper_47073          |        1 |
| follow_paper_47075          |        1 |
| follow_paper_46128          |        1 |
| follow_paper_47044          |        1 |
| follow_paper_47153          |        1 |
| follow_paper_46701          |        1 |
| follow_paper_47183          |        1 |
| follow_paper_46170          |        1 |
| follow_paper_47001          |        1 |
| follow_paper_47178          |        1 |
| follow_paper_50911          |        1 |
| follow_paper_47150          |        1 |
| follow_paper_45430          |        1 |
| follow_paper_47222          |        1 |
| follow_paper_47045          |        1 |
| follow_paper_46957          |        1 |
| follow_paper_46948          |        1 |
| follow_paper_79504          |        1 |
| follow_paper_46171          |        1 |
| follow_paper_53657          |        1 |
| follow_paper_63254          |        1 |
| follow_paper_48900          |        1 |
| follow_paper_63256          |        1 |
| follow_paper_63751          |        1 |
| follow_paper_62862          |        1 |
| follow_paper_46122          |        1 |
| follow_paper_48749          |        1 |
| follow_paper_63750          |        1 |
| follow_paper_46125          |        1 |
| follow_paper_63251          |        1 |
| follow_paper_48504          |        1 |
| follow_paper_45493          |        1 |
| follow_paper_48348          |        1 |
| follow_paper_45154          |        1 |
| follow_paper_48242          |        1 |
| follow_paper_45411          |        1 |
| follow_paper_47741          |        1 |
| follow_paper_48018          |        1 |
+-----------------------------+----------+
110 rows in set (0.17 sec)

And the here's the same read notifications query limited to the last three years:

mysql> select component_action,count(*) from wp_bp_notifications where is_new = 0 and component_action NOT LIKE 'bbp_new_reply_%' and date_notified >= '2020-10-20 00:00:00' gro
up by component_action order by count(*) desc;
+-----------------------------+----------+
| component_action            | count(*) |
+-----------------------------+----------+
| new_membership_request      |     4257 |
| bbp_new_reply               |     3146 |
| membership_request_accepted |     2459 |
| friendship_accepted         |     1300 |
| friendship_request          |     1187 |
| new_message                 |      954 |
| group_invite                |      571 |
| new_at_mention              |      342 |
| member_promoted_to_admin    |      275 |
| membership_request_rejected |       60 |
| member_promoted_to_mod      |       59 |
+-----------------------------+----------+
11 rows in set (0.09 sec)

When limiting to the past three years, the total number of unread notifications decreases by ~4 times.


Could there be a select all option, rather than just selecting page by page?

Perhaps a "Show all notifications" on one page option or a way to increase the number of notifications displayed on a page would be better?

Should we have separate tabs for Read and Unread items or ways to filter to one or the other?

We can add back the "Unread" and "Read" tabs, but if we do, is the "All" tab even necessary?

Actions #3

Updated by Boone Gorges 6 months ago

Thanks for doing this research, Ray.

bbp_new_reply notification are for older forum posts. As of Commons 1.18.23 released back on November 23, 2021, bbPress uses the "bbp_new_reply_{TOPIC_ID}" format for forum post notifications, so I think it is safe to delete all bbp_new_reply notifications outright.

new_wire_post notifications are really old and can be removed as well.

Private message notifications (new_message) and Social Paper notifications (followedpaper_comment, mypaper_comment, followedpaper_edit, follow_paper_X) can be ignored since we no longer display them in the Notifications interface as of Commons 2.2.0. Can even consider deleting them.

I'm in favor of deleting all of these.

For group_invite notifications, I need to confirm with Boone how these are still created. I do see some new group_invite notifications that have been created over the past three years. I know the cac-group-admin-auto-add plugin creates a group invite, but other than that,I thought we prevented native BuddyPress group invites from being created since the introduction of our cac-onboarding plugin.

The vast majority of recent 'group_invite' notifications appear to be linked to the Group for Group Admins, as you suggest. I can't explain where the handful of others come from. It's possible that users have found a path that I'm not aware of to the invite-anyone panel for a given group. It's a small number - about 20 since the beginning of 2022 - so I don't think we should spend a lot of time worrying about it in the absence of other problems.

We can add back the "Unread" and "Read" tabs, but if we do, is the "All" tab even necessary?

I agree that an 'Unread' and 'Read' panel (with 'Unread' the default) is probably enough. Hard to see the use case for 'All'.

Actions #4

Updated by Raymond Hoh 6 months ago

  • Status changed from New to Staged for Production Release
  • Target version set to 2.2.2

I'm in favor of deleting all of these.

I just ran a script to delete notifications for the following component actions on production -- 'bbp_new_reply', 'new_message', 'new_wire_post', 'followedpaper_comment', 'mypaper_comment', 'followedpaper_edit', 'added_reader' and 'follow_paper_X'.

I agree that an 'Unread' and 'Read' panel (with 'Unread' the default) is probably enough. Hard to see the use case for 'All'.

I've reinstated the 'Unread' and 'Read' tabs and removed the 'All' tab -- https://github.com/cuny-academic-commons/cac/commit/fb543c5e9108c9e8feeb187b8c03dd321e5d9967 . I've also bumped the notification pagination to 100 as decided in the dev call -- https://github.com/cuny-academic-commons/cac/commit/b28df615041ca19879191d4affe28f703d81e3a4 . This will be part of the next maintenance release scheduled for November 14th.


One thing I haven't done is add a threshold to only show notifications from the past two or three years yet. Maybe we can circle back to this if power users are still seeing a ton of unread notifications.

Actions #5

Updated by Colin McDonald 6 months ago

Thanks, Ray. Boone, what do you think about pushing this earlier than Nov 14th? I'm wondering if that way we might still save some inconvenience for power users running into the backlog of notifications in their first few times using the Commons since the release. A couple more weeks and they will be more likely to have already worked through it, one way or another.

Actions #6

Updated by Boone Gorges 6 months ago

I guess it could be pushed sooner. But I wonder whether Ray's bulk deletion of old items is good enough to ease the transition, even for most power users. Is there anyone in our orbit who would be able to take a look? I think Luke was mentioned on our most recent call.

It's easy enough to push Ray's changes if the team thinks it's best.

Actions #7

Updated by Colin McDonald 6 months ago

Ok, I will check around and report back, by Friday afternoon at the latest after the community call.

Actions #8

Updated by Colin McDonald 6 months ago

I checked with Luke, who had already gone ahead and marked his 700+ unread notifications as read using the current longer page-by-page setup. Since I haven't had many other reports of issues right now with a backlog, I think we can push the read/unread tabs and other changes during the usual release cycle and see how things go from there.

Actions #9

Updated by Boone Gorges 6 months ago

  • Status changed from Staged for Production Release to Resolved
Actions

Also available in: Atom PDF