= Trac Announcer System Proposal = ''Proposal to replace the [wiki:0.12/TracNotification Trac Notification System] with the [th:AnnouncerPlugin].'' == The Context == ''WIP'' == Requirements == ''(to doki_pen: feel free to move that section elsewhere in the page or into another page if you prefer)'' === Trac Notification API compatibility === #trac-api-compat This will be needed to not instantly break 30+ Trac plugins using TracNotification system right now (see: [wiki:TracDev/NotificationApi#Relatedinformation plugin listing] for details). So after analyzing the current implementation of [wiki:TracDev/NotificationApi Trac Notification Api] we have to decide on witch classes have to be added to Announcer code to fully replace TracNotification. === i18n requirements === #i18n-requirements One of the shortcomings of the current e-mail notification system is that there's only one e-mail prepared which is then sent to every receiver. It should be possible to customize the mail according to each user's preferences (e.g. #2625) and a nice customization would be to translate the notification mail to each recipient's preferred language (#8903). I'd be particularly interested to see how the Formatter / Distributor concepts of the Announcer would deal with that requirement. === Subscription logic === The current system is at the same time too complex with many .ini settings, and too inflexible. Not to mention the bugs ;-) Some kind of drastic change seems in order. For example, see the suggestion of a ''Subscribe ticket (notify me when the ticket is changed'' checkbox / link (ticket:4056#comment:19). == Announcer System == === Sequence Diagrams === ==== User Edits Ticket ==== [[Image(layer1-umlsd.png)]] ==== Event is Dispatched to the Mail Distributor ==== [[Image(layer2-umlsd.png)]] ==== Mail Distributor Formats and Sends Email ==== [[Image(layer3-umlsd.png)]] === Proposed Announcer Preferences === [[Image(prefs0.png)]] == Consider Notification Tickets == [[TicketQuery(status!=closed&component=notification&col=id&col=summary|priority|status|type|milestone,order=priority,format=table)]] === Discussion === If Announcer would substitute TracNotification, following tickets would be == Summary == based on 57 results from 04-Aug-2010, ordered by priority {{{#!th ticket no. }}} {{{#!th milestone }}} {{{#!th aims/notes/references }}} {{{#!th effect of migration }}} |---------------- {{{#!td colspan="4" style="background: #ffd" high }}} |---------------- {{{#!td #6217 }}} {{{#!td unscheduled }}} {{{#!td 1. allow for notification settings per ticket and do really fine grained options, like do/not notify on new comment, change of ticket prop|owner|status, etc. 2. have defaults for each registered user 3. apply different defaults depending on formal involvement (related component owner, reporter, etc.) }}} {{{#!td 1. unchanged - '''unresolved, discussion needed''' (too complicated to be useful?) 2. changed - '''partially solved''', since a bunch of user perferences already exists 3. changed - '''partially solved''', since action depending on involvement already exists ref: alternative/refinement of #4056 }}} |---------------- {{{#!td #9484 }}} {{{#!td 0.13 }}} {{{#!td 1. improve current email formatting for long custom text_area names ref: fits nicely with #3914 }}} {{{#!td 1. '''unknown''' - probably solved, need to check }}} |---------------- {{{#!td colspan="4" style="background: #eee" normal }}} |---------------- {{{#!td #731 }}} {{{#!td unscheduled }}} {{{#!td 1. sent commit notification }}} {{{#!td 1. '''unknown''' - probably unresolved, need to check ref: IRepositoryChangeListener available as notification trigger (since inclusion of mutirepos branch) }}} |---------------- {{{#!td #1660 }}} {{{#!td next-major-0.1X }}} {{{#!td 1. wiki notification }}} {{{#!td 1. changed - '''solved''', especially in combination with [th:wiki:WatchListPlugin WatchListPlugin] ref: new notification system discussion at [http://groups.google.com/group/trac-dev/msg/27f4118f1ef976fb Trac-Dev] }}} |---------------- {{{#!td #2245 }}} {{{#!td next-major-0.1X }}} {{{#!td 1. make user settings (email-address) editable by admins }}} {{{#!td 1. unchanged - '''unresolved, discussion needed''' (already resolved by th:wiki:TracUserSyncPlugin TracUserSyncPlugin?) }}} |---------------- {{{#!td #2311 }}} {{{#!td next-major-0.1X }}} {{{#!td 1. sent notification on owner change (to old owner) hint: inconsitency, since removal from cc-field triggers notification to removed address/user }}} {{{#!td 1. '''unknown''' - probably unresolved, need to check }}} |---------------- {{{#!td #2625 }}} {{{#!td next-major-0.1X }}} {{{#!td 1. rich format (i.e. HTML) wiki notification }}} {{{#!td 1. unchanged - '''unresolved''', only 'text/plain' in current Announcer hint: links to references on good HTML email design standards, discussion on [http://groups.google.com/group/trac-users/browse_thread/thread/50b20a8fdc262769 Trac-Users], hint on Announcer and more }}} {{{#!comment * solved * (reason: existing feature): #3517 * (reason: feature as WiP): #8294 * (reason: supporting this proposal): #7758 * changed * (largely solved): #4056 * (partially resolved): * propagated: * subject to further discussion: }}} ==== Summary of worth-to-be-propagated requests ==== * extend user pref: enhance filter/subscription - #4056 ---- See also: TracNotification, TracDev/Proposals, [wiki:TracDev/NotificationApi TracNotification API documentation], [wiki:TracDev/Announcer Developer reference page for AnnouncerPlugin], related tickets: [[TicketQuery(status=!closed&keywords=~announcer,format=compact)]], and [googlegroups:trac-dev:535b9ad2dd6e2882 Trac Notifications ] mail on Trac-dev