Doki Pen wrote: > I want to revisit this topic[0]: > > I took over the abandoned AnnouncerPlugin[1] last year. I've been working on > the AnnouncerPlugin quite a bit[2]. I'd like to know what we need to do to > get this thing into trac. > > One thing that is becoming cumbersome is supporting backward compatibility > with trac notifications. Specifically, other plugins use the Notification api > to send their own notifications. This code has to be reimplemented using the > AnnouncerPlugin api since the Notification api is not very extensible. > > I still think AnnouncerPlugin needs a good amount of work before being > included in core, but I think it's at a point where I need specific feedback. > The core API is very stable. The existing notification functionality is > there. I think the arch is well described in api.py, but I'd be happy to > write up a proposal on the wiki. >
Good timing, we're wrapping up for 0.12, so it's appropriate to start discussing the steps ahead. As a notification overhaul has always been on the table, I think your proposal is very welcome. I looked a bit in the code, without actually testing the plugin yet, but I must say that at this point I'm already pretty much convinced by what I've seen. The code is very clean (1), understandable, and its general architecture seems sound. Great work, from both you and Stephen! Now we have to think about how we could integrate this in Trac itself, as a replacement to the current notification system. I think the separation we have introduced between trac and tracopt lately will be very useful here, as a way to separate the core announcer components from those which are not always required, like some subscribers. The question of backward compatibility is also worth mentioning, and that can perhaps be done with a transition period where the legacy modules are first part of trac.announcer.subscribers, then in a next release moved to tracopt.announcer.subscribers, before their complete removal(?). Concerning the producers, I'd welcome your opinion on the discussion about IResourceChangeListener (http://trac.edgewall.org/ticket/8834), I think it can be used to simplify things, eventually getting rid of the producers entirely. But I think that the main issue here is not really about the code, more generally about the contribution process. Integrating such a large subsystem can't be done without integrating at the same time a dedicated contributor ;-) Judging by the amount of support you've already done on the Announcer, I see that you're able to undertake this task. Of course, what I'm asking for is not a "lifetime commitment" on your part for supporting the new notification / announcer subsystem in Trac, but rather the dedication necessary to get a high quality starting point, in the release of Trac where this feature will ship. The new system has to blend naturally with the rest of Trac and the code must lend itself to be easily extended and maintained. As I've said before, the plugin as it stands now shows every promise for that. Besides, we have a huge list of open tickets on t.e.o for the notification component, so it would be useful if you could update them and put them in perspective of the announcer merge. You could also create a new TracDev/Proposals page (.../AnnouncerIntegration?), which can be used to document the integration plan, as it evolves. The later steps would be to get an overview ticket where we could get the initial patches, then a branch in the sandbox and an associated sub-milestone, a bit like we did for the multirepos feature (and let's hope that *this* time, the branch won't take 2 years before being merged ;-) ). -- Christian (1) in particular, the SQL queries are very nicely presented, e.g. 13 cursor.execute(""" 14 SELECT value, authenticated 15 FROM session_attribute 16 WHERE sid=%s 17 AND name=%s 18 """, (sid, 'email')) We should do that in the rest of Trac as well ;-) -- You received this message because you are subscribed to the Google Groups "Trac Development" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/trac-dev?hl=en.
