[[PageOutline(2-3)]] = Advanced Notification enhancements {{{#!box note This proposal is partially implemented. See implementation status in the individual [#Topics]. }}} == Context The TracNotification system has not kept up with the requirements that 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. Database 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). See th:ticket:12120 == Topics === Preliminary refactorings * Related tickets: #11854 * Split up `notification.py`. * Extract reusable functionality. * Status: * ~~Proposed changes can be found in [log:psuter@10283 log:psuter.hg@advanced-notification-preliminary-refactoring]~~ * DONE Committed for release in 1.1.3. ([13433]) === Extension API for (mail) distribution * Related tickets: #3517 * A new / extended [wiki:AdvancedNotification/NotificationApi NotificationApi] * 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@8492-8501 log:psuter.hg@advanced-notification-mail-distribution]~~ * ~~Proposed changes can be found in [log:psuter@10285 log:psuter.hg@advanced-notification-mail-distribution.2]~~ * DONE Committed for release in 1.1.3. ([13454]) === Extension API for subscriptions * Related tickets: #4056, #2247 * New extension points: * [wiki:AdvancedNotification/INotificationSubscriber INotificationSubscriber]: Who subscribes to this message? * Implementations providing the common simple ticket subscriptions (owner, reporter, updater, cc, etc.) * New database table: * [wiki:AdvancedNotification/DatabaseSchema#Tablenotify_subscription notify_subscription]: Stores subscription preferences * New [attachment:notification-subscription-prefs.png preferences panel] for managing subscriptions * Status: * ~~Proposed changes can be found in [log:psuter@8502-8504 log:psuter.hg@advanced-notification-subscriptions]~~ * ~~Proposed changes can be found in [log:psuter@10288 log:psuter.hg@advanced-notification-subscriptions.2]~~ * ~~Proposed changes can be found in [log:psuter.hg@advanced-notification-subscriptions.4]~~ * DONE Committed for release in 1.1.3. ([13469]) === Modular preference pages * Notification preferences should be on shared pages, but implemented by different plugins. * Related tickets: #11853 * Modified extensions points: * [wiki:AdvancedNotification/IPreferencePanelProvider IPreferencePanelProvider]: Child panels * Status: * ~~Proposed changes can be found in changeset:advanced-notification-preferences/psuter.hg~~ * ~~Proposed changes can be found in changeset:advanced-notification-preferences.2/psuter.hg~~ * ~~Proposed changes can be found in changeset:advanced-notification-preferences.4/psuter.hg~~ * DONE Committed for release in 1.1.3. ([13510]) === Advanced subscriptions * Related tickets: #11869, #11870, #11871, #11875, #4519, #6217 * New database table: * [wiki:AdvancedNotification/DatabaseSchema#Tablenotify_watch notify_watch]: Stores watch preferences * New preferences child panel​s for: * [attachment:notification-watch-components-prefs.png:ticket:11870 Watching components] * [attachment:watch-prefs.png:ticket:11870 Joinable groups, watching users] * Status: * ~~Some proposed changes can be found in [log:psuter.hg@T11870_watch_components]~~ * DONE Committed `notify_watch` DB table for release in 1.1.3. ([13551]) * ~~Some more proposed changes can be found in [log:psuter.hg@623e0e1bdb74]~~ * TODO More proposed changes can be found in [log:psuter.hg@T11870_optional_subscribers] * Abandoned. Feel free to finish this. === XMPP * Related tickets: #11884 * New preference child panels for: * [attachment:xmpp-prefs.png:ticket:11884 XMPP Address] * Status: * Proposed changes can be found in [log:psuter.hg@17f251f548bb log:psuter.hg@T11884-xmpp] * Abandoned. Feel free to finish this. === On-site notifications * Related tickets: #11889 * New database table: * `notify_onsite`: Stores on-site notifications * Status: * Proposed changes can be found in log:psuter.hg@T11889_onsite_notifications * Abandoned. Feel free to finish this. * Available as a plugin: th:OnSiteNotificationsPlugin. === Permission filters * Related tickets: comment:4:ticket:5670, th:ticket:7349 * Status: * Not ready for integration in Trac. * Feel free to start working on this. === HTML emails * Related tickets: #2625, #11927 * Status: * Integrating th:TracHtmlNotificationPlugin in Trac may make more sense. * Feel free to start working on this. === Wiki notifications * Related tickets: #1660 * Status: * Feel free to start working on this. === Attachment notifications * Related tickets: #2259, #6069 * Status: * DONE Independent implementation of ticket attachment notifications from scratch, see #2259. * Wiki attachment notifications (#6069) only make sense once [#Wikinotifications wiki notifications] are implemented. === Background delivery thread * Related tickets: #3220 * Status: * Not ready for integration in Trac, see comment:17:ticket:3220. * Feel free to start working on this. === SMTP-over-SSL * Related tickets: #4931 * Status: * Not ready for integration in Trac, see comments in #4931. * Probably obsolete assuming STARTTLS became pervasive. * Feel free to start working on this. === Cryptography * Related tickets: #8294 * Status: * Not ready for integration in Trac. * Feel free to start working on this.