In order to help organize the flow of work on trac, here is a proposed 
workflow for trac tickets (see attached image or 
http://sage.math.washington.edu/home/jason/sage_workflow.png).  The "*" 
state is a wildcard for any state (so, for example, you can go from any 
state to "needs_work", "needs_review", or "closed").

What do people think?  In this workflow, I tried to make it 
patch-centric, in that there is no "assigned" state.  Owners on a ticket 
can be assigned/accepted as they will, but the status of the ticket 
reflects the state of the work on the ticket, not who owns it.

I also separated the "needs work" into two categories, because it seems 
that often there are people that are comfortable working on 
documentation and testing issues that aren't comfortable working on the 
code.  This allows someone in that category to easily find work they can do.

I also separated out the "needs info" state into a state that is for new 
tickets (e.g., bug reports where we still need the make of the 
computer), and needs info on other tickets where work has already been 
started (e.g., there is a design discussion on sage-devel about how to 
proceed).  Comments on this separation?

Also, I was thinking about adding a third work category, needs_rebase. 
Thoughts?  Or should rebase work just be part of needs_work and 
needs_doc_work?

Thanks,

Jason


For the curious, here is the trac configuration used to generate the 
picture.  The picture was generated with 
http://foss.wush.net/cgi-bin/visual-workflow.pl

[ticket-workflow]
; opensource-workflow.ini

; accept action
; When you accept a ticket, you get ownership of it.  (You can't accept a
; ticket on someone else's behalf.)
accept = * -> *
accept.operations = set_owner_to_self
accept.permissions = TICKET_MODIFY

; assign, unassign actions
assign = * -> *
assign.operations = set_owner
assign.permissions = TICKET_MODIFY

unassign = * -> *
unassign.operations = del_owner
unassign.permissions = TICKET_MODIFY

; leave actions
leave = * -> *
leave.operations = leave_status
leave.default = 1

; resolve actions
resolve = * -> closed
resolve.operations = set_resolution
resolve.permissions = TICKET_MODIFY

; reopen actions
reopen = closed -> new
reopen.operations = del_resolution
reopen.permissions = TICKET_CREATE

; request info actions
requestinfo_new = new -> needs_info_new
requestinfo_new.name = request info
requestinfo_new.permissions = TICKET_MODIFY

provideinfo_new = needs_info_new -> new
provideinfo_new.name = provide info
provideinfo_new.permissions = TICKET_MODIFY
provideinfo_new.default = 2

requestinfo = needs_work, needs_doc_work -> needs_info
requestinfo.name = request info
requestinfo.permissions = TICKET_MODIFY

; review
submit_review = new,needs_work,needs_doc_work -> needs_review
submit_review.name = submit for review
submit_review.permissions = TICKET_MODIFY

; needs doc work
needs_doc_work = * -> needs_doc_work
needs_doc_work.name = needs documentation/testing work
needs_doc_work.permissions = TICKET_MODIFY

; positive review
positive_review = needs_review -> positive_review
positive_review.name = positive review
positive_review.permissions=TICKET_MODIFY

; needs work
submit_to_work = * -> needs_work
submit_to_work.name = needs work
submit_to_work.permissions = TICKET_MODIFY


-- 
Jason Grout

--~--~---------~--~----~------------~-------~--~----~
To post to this group, send an email to sage-devel@googlegroups.com
To unsubscribe from this group, send an email to 
sage-devel-unsubscr...@googlegroups.com
For more options, visit this group at http://groups.google.com/group/sage-devel
URL: http://www.sagemath.org
-~----------~----~----~----~------~----~------~--~---

<<inline: sage_workflow.png>>

Reply via email to