[Spec] Web notifications for forums
UPDATED: 25TH MAY, 2023
Project leads (2U): @Asad Azam (Deactivated) (tech), @Aamir Ayub (Deactivated) (product)
- 1 Background
- 2 Notifications preferences
- 3 Notifications tray
- 3.1 Layout of notifications tray
- 3.2 Format of a notification
- 3.3 Unseen notifications
- 3.4 Unread notifications (versus unseen)
- 3.5 Structure of forum notifications
- 3.6 Sort
- 3.7 Loading notifications
- 3.8 Mark all as read
- 3.9 Interacting with a notification
- 3.10 Icon for notification type
- 3.11 When will the notifications tray be updated?
- 4 Tracking metrics
- 5 Storage cost optimisation
- 6 Notification delivery start/stop
- 7 Future enhancements and optimisation
- 8 Potential risks associated with web notifications
- 9 Next milestones
Background
An initiative is underway at 2U for building a comprehensive notifications framework that would allow notifying users for chosen activities in the LMS or Studio. The aim is to deliver timely and relevant information to our users and increase their engagement with the platform. We plan to support three notification channels – web, email, and push notifications, in the long run.
We plan to test and deliver the first release of this framework using web notifications for the edX discussion forum. The ultimate aim is to establish a foundation for a framework that can expand to include other platform areas and notification channels.
This document discusses some concepts beyond web notifications and edX discussion forums, in order to capture a reasonable amount of potential future improvements and make provisions for them in our current implementation.
Notifications preferences
Types of preferences
Notification preferences will be either general or course-specific. General preferences refer to notifications about platform updates, marketing and promotional messages, progress updates etc. Course-specific preferences allow users to customise notifications for each course they are enrolled in, such as new content notifications, discussion forum updates etc.
Preferences management
Users will be able to customise their notification preferences for each course they are enrolled in. This will be done through a dedicated preferences page that can be accessed through a direct URL, a link on the Account Settings page, or a button on the notifications tray. This feature will provide users with greater control over the notifications they receive and ensure that they only receive notifications that are relevant to their learning experience.
Preferences page
The notification preferences page allows users to manage their notification settings for each course they're enrolled in. Key features of this interface include:
Grouped preferences: Preferences are organised by platform area (e.g. Discussions, Coursework) to help users quickly find and manage the settings they care about. For example, the "Core notifications" preference covers activity types 5-9 in the forum notifications list, while the "Content reported" preference covers activity types 10-12.
Important notifications: Certain types of notifications are considered important and cannot be individually opted out of. However, users can opt out of the entire platform area to stop receiving notifications for that activity. For example, users cannot opt out of "Core notifications" for Discussions, but they can turn off notifications for the entire Discussions forum.
Email and push notifications: In addition to web notifications, users can opt in to receive email and/or push notifications for some activity types. For example, the option to enable email and push notifications is not available for likes on authored posts and responses.
Role-based visibility: The visibility of preferences for each activity type is based on roles. For example, only the users with Course Staff and Course Admin roles will see preferences related to course authoring.
Default notification settings: Default notification settings are assigned to each preference based on the user's role in the course. For example, users with Discussion Admin, Discussion Moderator, Community TA, and Group Community TA roles will be automatically subscribed to web notifications for the "Content reported" preference by default. However, push and email notifications will not be automatically enabled for this preference.
Since roles are assigned after a user has enrolled in a course, and some may change afterwards, we will need to link the default settings for a user, to changes in its role in the course.
Preference creation logic
General preferences for a user will be created as soon as they sign up on the platform. Course specific preferences will be created for a user after they enrol in a course. Users will start receiving notifications as soon as their preferences have been created.
Notifications tray
Users will be able to see and interact with web notifications via a notifications tray. This tray will be accessible via a bell button in the top right corner, alongside the username, as seen below. Clicking the button will open the notifications tray on the right side of the page that the user is currently viewing. Clicking elsewhere on the page will close the tray.
Layout of notifications tray
Link to preferences: The button to navigate to the notification preferences page on the notifications tray helps users review and set preferences conveniently.
Tabs: To improve readability and prevent context switching, notifications will be organised and accessed through tabs representing different platform areas. This will allow users to quickly find and view notifications related to specific areas, such as discussion forums or grading, instead of having to search through a long, mixed-up list of notifications.
All tabs will be visible at all times to allow users to track older notifications. Sorting the tabs based on the number of unread notifications may cause confusion for users, so the tabs will remain in their fixed positions.
UI will be responsive such that if horizontal space is insufficient, the remaining tabs will be listed in a dropdown menu as seen below.
Notifications list: After selecting a specific tab representing a platform area, notifications for relevant activities within that area will be listed. More details are discussed below.
Format of a notification
Each notification item contains the following elements:
Temporal relevance: The amount of time that has passed since the notification was created.
Context: A brief description of what the notification is related to, could be a course or a feature announcement etc.
Notification: Detailed information about the activity that triggered the notification.
Tracking: A status indicator that shows whether the notification has been read or not.
Icon: The icon serves as a visual cue that quickly conveys the type of activity.
URL: Link to the content that notification is about.
For forum notifications, the context will be the name of the course to which the forum belongs. A list of potential forum activities that will trigger a notification and the corresponding notification format, is presented later in this section.
Unseen notifications
Unseen notifications refer to notifications that have been generated but not yet viewed by the user. The count of unseen notifications will help capture the user's attention and ensure that important updates are not missed. Count of unseen notifications will be tracked for each platform area separately. The count will be visible alongside the name of the tab for that platform area. Once the tab is clicked, the count will disappear and set to zero.
Count of all unseen notifications: The count of all unseen notifications will be the sum of unseen counts for all platform areas. The count will be shown alongside the bell icon. Once the notifications tray is opened, the count will change according to the user clicking each tab. If all tabs have been opened, the count will disappear and set to zero.
Difference between unseen and unread: It's important to distinguish between 'unseen' and 'unread' notifications. 'Unseen' notifications refer to those that the user hasn't viewed at all, while 'unread' notifications have been viewed but not yet clicked to access the associated URL.
Unread notifications (versus unseen)
Notifications that have not been clicked by the user are considered unread. Unlike unseen notifications, the count of unread notifications is not maintained or displayed. However, each notification will have an identifier for its read/unread state. This allows the user to easily identify which notifications they have already viewed and which ones they still need to read.
Structure of forum notifications
# | Activity type | Format | Default | Comment |
1 | A new discussion-type post | {username} posted {post title} | Off |
|
2 | A new question-type post | {username} asked {post title} | Off |
|
3 | New response on post i'm following | {username} responded to a post you’re following: {post title} | On |
|
4 | New comment on post i'm following | {username} commented on {response user's username}'s response in a post you're following {post title} | On | Including the response creator's username makes searching easier as there is no way to direct users to responses or comments. |
5 | New response on my post | {username} responded to your post {post title} | On |
|
6 | New comment on my post | {username} commented on {response user's username}'s response to your post {post title} | On | Including the response creator's username makes searching easier as there is no way to direct users to responses or comments. |
7 | New comment on my response | {username} commented on your response in {post title} | On |
|
8 | A response on my post has been endorsed/ marked answer | {username}’s response has been endorsed in your post {post title} | On |
|
9 | My response is endorsed/marked answer | Your response has been endorsed in {post title} | On |
|
10 | A post has been reported (moderation roles only) | {username}’s post has been reported {truncated post content} | On | In case of reported content, the content itself is likely more relevant than the post it belongs to. |
11 | A response has been reported (moderation roles only) | {username}’s response has been reported {truncated response} | On | As above |
12 | A comment has been reported (moderation roles only) | {username}’s comment has been reported {truncated comment} | On | As above |
cc @Felipe Montoya