[[PageOutline(2-3)]] = Advanced Notification enhancements == Context The TracNotification system has not kept up with the requirements users, administrators and developers have. The th:AnnouncerPlugin was developed to provide a more flexible notification system. An alternative [wiki:Announcer proposal] to replace the !TracNotification system with the !AnnouncerPlugin has existed for some years. == Proposal Improve the !TracNotification system by: * Deprecating the inflexible `Notify` class hierarchy. * Adding new infrastructure (based on !AnnouncerPlugin's proven design where appropriate) on a topic-by-topic basis. * Adopting some general advanced features. * Enabling plugins to provide more experimental or very specific features. === Coexistence with Announcer This proposal would not integrate or replace Announcer as a whole. Future versions of Announcer would ideally be compatible with new !TracNotification system and rebase additional non-core features on the new core infrastructure. Future versions of announcer could also provide upgrade paths from older versions of the plugin to the new core infrastructure. DB tables, configuration sections and extensions points adopted in core from Announcer may best be renamed to avoid confusion and upgrade troubles (especially when slightly modified). == Topics === Extension API for (mail) distribution * Related tickets: #3517 * New extension points: * [wiki:AdvancedNotification/INotificationDistributor INotificationDistributor]: Different notification distribution channels (e.g. XMPP) * [wiki:AdvancedNotification/INotificationFormatter INotificationFormatter]: Customized notification message formatting * [wiki:AdvancedNotification/IEmailAddressResolver IEmailAddressResolver]: What email address should be used? * [wiki:AdvancedNotification/IEmailDecorator IEmailDecorator]: Separates email header logic from message formatting * Status: * Proposed changes can be found in log:psuter@advanced-notification-mail-distribution === Extension API for subscriptions * Related tickets: #4056, #2247 * New extension points: * [wiki:AdvancedNotification/INotificationSubscriber INotificationSubscriber]: Who subscribes to this message? * New database table: * [wiki:AdvancedNotification/DatabaseSchema#Tablesubscription subscription]: Stores subscription preferences === Modular preference pages * Notification preferences should be on shared pages, but implemented by different plugins. * Related tickets: - === Advanced ticket subscriptions * Related tickets: #4519 * New database table: * [wiki:AdvancedNotification/DatabaseSchema#Tablesubscription_attribute subscription_attribute]: Stores subscription preferences === Permission filters * Related tickets: comment:4:ticket:5670 === HTML emails * Related tickets: #2625 === Wiki notifications * Related tickets: #1660 === Attachment notifications * Related tickets: #2259, #6069 === Watchable resources * Related tickets: #6217 === Background delivery thread * Related tickets: #3220 === SMTP-over-SSL * Related tickets: #4931 === Cryptography * Related tickets: #8294