| 1 | [[PageOutline(2-3)]] |
| 2 | = Advanced Notification enhancements |
| 3 | |
| 4 | == Context |
| 5 | |
| 6 | 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. |
| 7 | |
| 8 | An alternative [wiki:Announcer proposal] to replace the !TracNotification system with the !AnnouncerPlugin has existed for some years. |
| 9 | |
| 10 | == Proposal |
| 11 | |
| 12 | Improve the !TracNotification system by: |
| 13 | * Deprecating the inflexible `Notify` class hierarchy. |
| 14 | * Adding new infrastructure (based on !AnnouncerPlugin's proven design where appropriate) on a topic-by-topic basis. |
| 15 | * Adopting some general advanced features. |
| 16 | * Enabling plugins to provide more experimental or very specific features. |
| 17 | |
| 18 | === Coexistence with Announcer |
| 19 | |
| 20 | 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. |
| 21 | |
| 22 | Future versions of announcer could also provide upgrade paths from older versions of the plugin to the new core infrastructure. |
| 23 | |
| 24 | 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). |
| 25 | |
| 26 | == Topics |
| 27 | |
| 28 | === Extension API for (mail) distribution |
| 29 | * Related tickets: #3517 |
| 30 | * New extension points: |
| 31 | * `INotificationDistributor`: Different notification distribution channels (e.g. XMPP) |
| 32 | * `INotificationFormatter`: Customized notification message formatting |
| 33 | * `IEmailAddressResolver`: What email address should be used? |
| 34 | * `IEmailDecorator`: Separates email header logic from message formatting |
| 35 | |
| 36 | === Extension API for subscriptions |
| 37 | * Related tickets: #4056, #2247 |
| 38 | * New extension points: |
| 39 | * `INotificationSubscriber`: Who subscribes to this message? |
| 40 | * New database table: |
| 41 | * `NotificationSubscription`: Stores subscription preferences |
| 42 | |
| 43 | === Modular preference pages |
| 44 | * Notification preferences should be on shared pages, but implemented by different plugins. |
| 45 | * Related tickets: - |
| 46 | |
| 47 | === Advanced ticket subscriptions |
| 48 | * Related tickets: #4519 |
| 49 | |
| 50 | === Permission filters |
| 51 | * Related tickets: comment:4:ticket:5670 |
| 52 | |
| 53 | === HTML emails |
| 54 | * Related tickets: #2625 |
| 55 | |
| 56 | === Wiki notifications |
| 57 | * Related tickets: #1660 |
| 58 | |
| 59 | === Attachment notifications |
| 60 | * Related tickets: #2259, #6069 |
| 61 | |
| 62 | === Watchable resources |
| 63 | * Related tickets: #6217 |
| 64 | |
| 65 | === Background delivery thread |
| 66 | * Related tickets: #3220 |
| 67 | |
| 68 | === SMTP-over-SSL |
| 69 | * Related tickets: #4931 |
| 70 | |
| 71 | === Cryptography |
| 72 | * Related tickets: #8294 |