Trac ticket workflow

From OLPC
Revision as of 17:26, 3 September 2008 by Mstone (talk | contribs)
Jump to: navigation, search

Workflow States

Here is an approximate common path, subject to circumstances, followed by a toy user story.

A Trac ticket's position in the workflow is recorded in its Action Needed field. This field can contain the following values:

 (everyone should):
 reproduce       --  first we need to know how to reproduce your issue
 diagnose        --  then its root cause needs to be diagnosed
 design          --  at which time we can design...
 code            --  and code a fix.
 review          --  to ship the fix, we need to review it,
 testcase        --  write a test case for it,  
 
 (module maintainers should):  
 package         --  and package it up as an RPM, an activity, etc.
 add to build    --  then package needs to be added to a development build
 
 (everyone should):
 test in build   --  and the packaging needs to be tested.
   
 (during change control):
 approve for release --  get approval to add the package to a stable build stream (stable builds only)
 add to release  --  approved changes need to be committed
 test in release --  and retested at least once...
 
 (everyone should):
 qa signoff      --  some developers will want QA to review their work... (optional)
 finalize        --  before being added to the release notes
 no action       --  and closed.


Approval for Release

We enter change-control near the end of each release (e.g. 8.2.0 release schedule). When we enter change control, the ticket workflow expands to include the 'approve for release', 'add to release', and 'test in release' actions.

In order to pass the 'approve for release' action, you are expected to provide:

packages
a complete list of the packages (in source: (E)NVR form, e.g. koji: rainbow-0.7.20.fc9) which must be included to effect your change.
changelog
a nice human-readable description of your change including citations of tickets that will need to be updated as it is processed.
testcases
checkable test cases in either the |TestCase| Sugar style, the Systematic testing style, or the Tinderbox style.
(optional) risk assessment
an explanation, if convenient, of what risks are incurred by accepting your change.


General Notes

  • After testing in a build, the developer tags the bug with the results, e.g.:
 joyride-2126:-    or   joyride-2126:+
 ( '-' means bad result, try again, whereas '+' means good result )
  • The purpose of the finalize state is for the release team to provide any user-facing documentation or to conclude that no documentation is necessary.
  • The workflow can be exited early by resolving a ticket as 'worksforme', 'invalid', etc.
  • At various times, someone (e.g. the developer or the release team) may need an answer to a question. In this event, the ticket's next action should be set to 'communicate'.
  • Finally, the other 'Action Needed' states can be used to describe ignorance about what sort of action is needed. The regular Trac triage process will be responsible for pushing these tickets along.


Example

  1. Alice observed curious behavior while exploring the system. She records it in Trac but does not set the next action field.
  2. Bob decides Alice's reported behavior is erroneous but doesn't know how to reproduce it so he changes the next action to reproduce to indicate his need for instructions on how to reproduce the issue.
  3. Carol can reproduce Alice's behavior but doesn't understand its root cause so she changes the ticket's next action to diagnose.
  4. Don diagnoses Alice's behavior and changes the next action to design to indicate that he is needs a design.
  5. Eve provides a design and changes the next action to code.
  6. Frank implements the design and changes the next action to review.
  7. Geraldine reviews Frank's changes and asks for a testcase.
  8. Harry accepts merges the reviewed changes into a package.
  9. Ia adds Harry's package to a development build and requests that the package be checked by setting next action to test in build.
  10. John tests the development build Ia triggered. He records his results and may send the issue back to an earlier state (e.g. for a fresh diagnosis) or may send it forward into one of approve for release (if change control is active), qa signoff, finalize, or no action.
    • If the next action is approve for release, then the release manager, Karl, will make sure the requirements for approval are satisfied and will push the ticket back to an earlier state (if they are unsatisfied), will slip the issue into the next release, or will approve the changes. If approved, they will go into the add to release state, then the test in release state, then either a
    • Lily from QA retests the issue and moves the ticket to finalize because she thinks that the release notes need to be updated.
    • Mark updates the release notes and, at last, sets next action to no action and resolves the ticket as fixed.