Merge todos into notifications with pinned and unpinned notification sets
Background
- GitLab has todos and email notifications.
- They should be combined because:
- There is a lot of overlap in functionality. Further development in both means wasted effort and poor user experience and poor product management.
- A todo vs a notification is ill-defined. One person’s notification is another person’s todo. For example, one person may care about all created ~Discussion issues (notification) but another person may need to triage all of them and always leave at least a comment (todo).
- Additional discussion in https://gitlab.com/gitlab-org/gitlab-ce/issues/43474.
Proposal
- Merge the concept of todos into the existing feature of notifications.
- In particular, enhance notifications so that notification sets can be pinned and unpinned.
- A pinned notification set is equivalent to the existing concept of an undismissed todo. An unpinned notification set is equivalent to the existing concept of a dismissed todo.
- So instead of GitLab creating a todo (under certain events), GitLab creates a pinned notification set.
- Overtime, remove the concept of todos from GitLab altogether.
There is a single interface in the GitLab UI called notifications. (This would replace todos.) The notifications in this UI are one-to-one mapped to the email notifications. If GitLab sends you an email notification, the same object appears in this UI. You can also have GitLab send you a one-time manual notification (more below).
The notifications are grouped into "sets" (thus, "notification sets"), analogous to how a modern email client threads conversations together. So all notifications belonging to the same issue/mr/epic (or other GitLab object), are shown as a single notification set in this UI.
This UI has an All
list that shows all notifications for the user, since forever. They are grouped in notification sets. By default, the notification sets with the newer notifications are toward the top of the list.
You can manually pin and unpin a notification set from this UI. Pinned notification sets appear at the top, and also in their own Pinned
tab in the UI.
All notifications | Pinned notifications |
---|---|
Within the sidebar of an issue/mr/epic, we allow a user to pin/unpin an existing notification set associated with that object. If no notifications have ever been created for that object, then you will still see the Pin notification
button. If you click that, GitLab will send you a notification for that object and the notification set will be pinned automatically.
No notifications exists or notification set is unpinned | Notification set is pinned |
---|---|
The notifications settings are updated so that you can decide whether you want GitLab to automatically pin the notification set when the notification is generated.
Additionally, we have to incorporate other existing todo triggers: https://docs.gitlab.com/ee/workflow/todos.html#what-triggers-a-todo.
Notification settings |
---|