Improving subscriptions and notifications

Currently Project issue tracking has a limited ability for users to follow the progress of individual issues via e-mail -- they can either get notifications on all issues or on individual issues which they have created or commented on. If a user subscribes to their own issues, they cannot unsubscribe, either. In addition, the current subscription system doesn't scale well with a large number of projects.

We should provide more granularity in what users can subscribe to, and the ability to subscribe/unsubscribe as they see fit. Specifically, it would be great to:

  • Easily subscribe to any individual issue without commenting on it.
  • Have a summary view of all issues you're subscribe to, with an accompanying RSS feed.
  • Easily unsubscribe from an issue from either the issue itself or the summary page.
  • Continue to allow subscriptions to entire projects.
  • Make it scale well to a large number of projects/subscribers.

Plan of attack

  1. Several subscriptions frameworks were considered, and Flag module has been chosen as the one best-suited to our goals. It's well-maintained, has a good API, and views integration
  2. A new UI will be designed, living at user/X/subscriptions, which will have the following components
    • A global, site-wide radio button set for "Email me issues from any project" with choices for "All issues", "Subscribed issues", and "None". This information will be stored in a new, per-user table
    • A table of any projects where the user has configured emails on a per-project basis (e.g. http://drupal.org/project/issues/subscribe-mail/drupal). The table shows the current settings for each project, and includes a row with an auto-complete text field to opt-in for emails to other projects. Again, the choices are "All", "Subscribed", and "None"
    • A global setting for the option to receive issue emails in full digest format (like you get now) or to just get the latest comment (better for threaded mail clients).
  3. Users will automatically flag issues as 'Subscribe' any time they post an issue, or leave a comment on an issue.
  4. Code for sending issue emails will be adjusted to build the list of users to mail from the list of users that have flagged the issue and the global settings at user/X/subscriptions
  5. Project module will adjusted to become flag-aware, allowing users to mark projects they would like to track.
  6. The /project/user/X page will become tab-based, with new tabs for "My watched projects" and "Projects with commit access" (along with the existing "Projects I own")
  7. Tracker2 module will be adjusted to become flag-aware, which will remove the necessity to '+1 subscribe' on forum posts as well, and provide a more consistent interface between the "My issues", "My projects" and "Recent posts" pages.