Hi everyone,
I spent some time investigating possible solutions for BEP-0006 Ticket
Relations [1]. So far I can see two real candidates for adding the
functionality into Apache Bloodhound: MasterTicketsPlugin[2] and
TicketLinks [3]. I don't mention "write from scratch" intentionally
;).
I'd like to summarize my feelings regarding candidates in a few words (IMO).
- MasterTicketsPlugin - currently, only "blocked by/blocks" relation
is supported but, as far as I understand, there are plans to include
parent/child ticket functionality. Integration with UI is implemented
via ITemplateStreamFilter. I have feeling that the plugin code should
be forked to be BH friendly (maintaining Trac and BH compatibility can
be hard at the beginning) with theoretical possibility of merging Trac
and BH specific codebase later. It will be nice to have code as part
of Apache BH to avoid possible compatibility and installation
problems, but, IIUC, it is still open if we can get code grant to
include source in our repository.
- TicketLinks - introduces Trac code changes on branch. Designed with
different ticket relations in mind. Code quality is good and covered
by unit-tests. My understanding is that code is accessible under the
same license as Trac and can be copied into Apache BH repository. From
proposal wiki page [3]:
{{{
The approach from this patch was preferred over the ones from existing
plugins (TH:MasterTicketsPlugin, TH:SubticketsPlugin,
TH:ChildTicketsPlugin) as none was providing a really extensible
starting point, in the spirit of #31. The first two use a specific
table dedicated to the relation they're dealing with (respectively
mastertickets(source, dest),subtickets(parent,child)), and the latter
is using a parent custom field. That is not to say there are no
interesting ideas to lift from there ;-)
}}}
Personally, I would take TicketLinks code and extract it as BH plugin.
Changes in Trac core should be minimized to a couple of interfaces
that could be potentially accepted by Trac community.
What do you think?
If we want having ticket relation feature in 1.0 release, it is time
to start code integration soon.
Cheers, Andrej
[1] https://issues.apache.org/bloodhound/wiki/Proposals/BEP-0006
[2] https://trac-hacks.org/wiki/MasterTicketsPlugin
[3] http://trac.edgewall.org/wiki/TracDev/Proposals/TicketLinks