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>>