Email notifications of new comments and content changes have become de rigueur for social websites. If you've commented on a blog or participated in a discussion forum you've likely noticed the checkbox "Notify me of replies to this topic" or the like. This simple yet immensely useful feature helps build community and drive conversation by enabling near-real-time notification of new dialog. Dries wants it. And I want it.
Because this feature is so ubiquitous I assumed there would be a solid Drupal module available that I could plug-and-play. I was wrong on two counts: there are not one but several modules, and none of them do quite what I want. The problem, or the opportunity as the case may be, is that these modules are trying to build frameworks and be all things to all people. Although I wouldn't have guessed it, this turns out to be a surprisingly difficult problem space, and while modules like Notifications and Subscriptions have made great strides their user experience is still clumsy and complicated. Notifications probably has the best architectural solution, and the broadest feature set. But these frameworks are too intrusive, are not intuitive, and have far too many switches to flip. They distract from the content, rather than complement it.
All I want is a simple comment notification via email, which narrowed the field down to Comment Notify, Comment Subscribe, and Watcher. After trying them all I decided to go with Watcher because what it does it does well, and what it does is provide a slick AJAX-y widget that enables one-click subscription to a post, without having to leave one of those stupid "subscribe" comments. It also provides a nice view of all of your current subscriptions, with an easy one-click disable or unsubscribe.
The Watcher code is clean and easy to understand, which is good because I wasn't happy with the default presentation. I applied this patch to move the widget down into the node links, enable the link text to be modified, and changed the image (that eye is just...creepy). I also created a helper module that provides the expected "Notify me..." checkboxes on the node and comment authoring forms. Finally, I commented out the menu items for the "Settings" and "Help" tabs on the user profile page, which I felt added more confusion than value.
I should mention that notifications are only available to registered users. Watcher supports notifications for anonymous users, but doesn't require any confirmation from the email address before it starts sending emails, leaving it wide open for abuse. I've created a feature request and perhaps proper email confirmation will make it into a future version.
It took a heck of a lot of more time and effort than I anticipated, mostly spent evaluating all the different solutions, but I'm happy with the result. There is a lot of brainpower working in this space now; I look forward to watching the solutions evolve (and with any luck, seeing one of them move into the core). In particular, I would love to see a slick implementation of Notifications; if you find one leave me a comment and let me know.
