BugzillaWorkflowImprovements:FlowChart B: Difference between revisions

From MozillaWiki
Jump to navigation Jump to search
No edit summary
 
(Add NEEDSINFO, RESOLVED DEFICIENT, Remove short cuts)
 
Line 1: Line 1:
Draft wiki flowchart below illustrates how the suggested ideas fit together,
Draft wiki flowchart below illustrates how suggested ideas fit
including unconfirmed bug expiration, and splitting triaging into confirming NEW and preparing to be READY.
together, including:
* Bugzilla:
 
** warns reporter after 30 days unconfirmed.
* NEEDS-INFO status,
** automatically resolves EXPIRED after 90 days unconfirmed.
* UNCONFIRMED and NEEDS-INFO bug expiration, and
* splitting triaging into confirming NEW and preparing to be READY.
 
New roles:
 
* Bugzilla daemon:
** after 90 days UNCONFIRMED, automatically resolves to EXPIRED.
** after 90 days NEEDS INFO, automatically resolves to DEFICIENT (a.k.a. INSUFFICIENT_DATA, INCOMPLETE).
** not shown: after 30 days, send a warning to bug participants.
* Confirmers:
* Confirmers:
** confirmers can set status to NEEDS INFO
** confirmers can resolve DUPLICATE
** confirmers can resolve DUPLICATE
** confirmers can resolve INVALID (garbage or Netscape bug)
** confirmers can resolve INVALID (garbage or Netscape bug)
Line 17: Line 26:
Some issues listed below chart.
Some issues listed below chart.


 
<hr />
<hr>
<!-- note: replace &lt; with < for editting -->
<!-- note: replace &lt; with < for editting -->
<pre>
<pre>
    reporter:
  reporter:      
  (enter bug)
  (enter bug)      
      |
      |            
      v
      |      reporter:  
  reporter:   
      | &lt;-- (add info)  
  {has canconfirm
      | |       ^      
  and confirms?}
      | |       |         buzilla:
    | |
      | | [NEEDS INFO] -> {bug age?} -> 90+ -> [RESOLVED: DEFICIENT]
     Yes No
      | |       ^                     days
    | |                         bugzilla:
......|.|........|....................................................
    |   -> [UNCONFIRMED] -> {age of bug in days?} - 90+ -> [RESOLVED: EXPIRED]
      v v        |         bugzilla:
    |         |   ^                 |                    (tell reporter
[UNCONFIRMED] --|||-----> {bug age?} -> 90+ -> [RESOLVED: EXPIRED]
    |         |   |                 ~30                    can refile if
      |          |                     days   (inform: can refile
    |         |  |                  |                    bug still in
      |     confirmer:                        on recent build)
    |         |   | &lt;----------------                      recent builds)
      |      (ask for details, steps,
    |          |  (warn reporter once: will expire)
       v      clarification, etc.)
     |          |  |
  confirmer:    ^
    |          |   &lt;-------
{clear and     |
     |          v            ^ (ask for details, steps,
sufficient?} -- No
    |      confirmer:       clarification, etc.)
      |            
     |       {clear?} ---No->
     Yes            
    |          |
      v
     |        Yes
  confirmer:     
    |          v
{appropriate?} -- No ------------------------> [RESOLVED: INVALID]
    |      confirmer:     
      |        (may be garbage/trial, Netscape bug, etc.)
    |    {appropriate?} --No--------------------------> [RESOLVED: INVALID]
     Yes
    |          |        (may be garbage/trial, Netscape bug, etc.)
      V
     |        Yes
  confirmer:
    |          V
{duplicate?} -- Yes ------------------------> [RESOLVED: DUPLICATE]
    |      confirmer:
      |        (mark duplicate or dependent of prior/clearer bug)
    |    {duplicate?} --Yes--------------------------> [RESOLVED: DUPLICATE]
     No
    |          |        (mark duplicate or dependent of prior/clearer bug)
      v
     |        No
  confirmer:
    |          v
{reproducible?} -- No -----------------------> [RESOLVED: WORKSFORME]
    |  confirmer or reporter:
      |        (only if on same OS as reporter?)
    |  {reproducible?} --No--------------------------> [RESOLVED: WORKSFORME]
     Yes
    |          |        (only if on same OS as reporter?)       |
      V
     |        Yes                                                 |
  confirmer:
    |          V                                             reporter:
(recategorize if needed)
    |    confirmer:                                   (reopen if clarified)
......|...............................................................
    |  (recategorize if needed)                                   |
      v
    |         |                                                  v
[NEW (EVERCONFIRMED yes)]  
    v          v                               [REOPENED (EVERCONFIRMED No)]
      |
reporter or confirmer:
      v
{has canprepare and
  preparer:                 
  testcase minimized?} -No-> [NEW (EVERCONFIRMED yes)]  
{minimal test case?} -- No --->  
          |                    |
      |                       |
          Yes                preparer:                 
    Yes                   preparer:
          |              {clean report?} ---- No ---->  
      v              (minimize test case)
          |                     |                    |
  preparer:                   |
          |                    Yes               preparer:
(maybe add keyword &lt;-----------
          |                    |      (maybe clarify, recategorize, retitle,
  'testcase')
          |                    v        divide into dependent bugs, etc.)
......|...............................................................
  |                preparer:                 |
      v
          |      (maybe add clean-report keyword) &lt;---
  [READY] &lt;---------------
          |                    |
      |                   ^
          |                    v
      v                    |
  |                preparer:               
lead developer/manager:    |
          |            {minimal test case?} -- No --->
(assign bug)             |
          |                     |                    |
......|....................|..........................................
          |                   Yes                preparer:
      v                    |
          |                    v            (minimize test case)
[READY (has Assigned-to)]  |
  |                 preparer:                |
      |                   |
          |       (maybe add testcase keyword) &lt;------
      v                   |
          |                     |
  developer:              |
          v                    v
{accept bug?} -- No ------>  
            ----------------> [READY (EVERREADY yes)]  
      |
                                |  
    yes
                                v
......|...............................................................
                            developer:
      v
              (diagnose component, maybe recategorize, maybe [ACCEPT])
  [ASSIGNED (EVERASSIGNED yes)]  
            ^ ^               |
      |                       ^
            | |               v
      v                       |
            | |           developer:
  developer:                 |
            | |   (attach patch, request review)
(develop and attach patch, &lt;--|||-- [REOPENED (EVERASSIGNED yes)]
            | |               |
  request review(s))            |        ^
            | |               v
......|........................|.........|............................
            | |           reviewer:
      v                       |         |
            |  &lt;-Retry- {approve patch?} -- Never --> [RESOLVED: WONTFIX]
  [ASSIGNED, Review requested] |         |
            |                   |                             |
      |                       |         |
            |                 Yes                reviewer:   |
      v                        |         |
            |                   |               -- (reopen) &lt;--
  reviewer:                    |         |
            |                  v             |    
{accept patch?} -- no -------->         |
            |        reviewer or developer:
      |                                 |
            |        (check patch into cvs) ---------> [RESOLVED: FIXED]
    Yes                                |
            |                                                 |  
......|..................................|............................
            |                                 |               v         
      v                                  |  
            |                                  v              QA:          
   [REVIEW+]                              |
        [REOPENED (EVERREADY yes)] &lt;----------- &lt;--No-- {verify fixed?}
      |                                 |
                                                                |
      v                                 |
                                                              Yes
reviewer or developer:                   |
                                                                v
(check patch into CVS)                   |
                                                            [VERIFIED]
......|..................................|............................
      v                                  |
[RESOLVED: FIXED]                       |
      |                                 |
      v                                 |
    QA:                                 |
  {verify?} -- No -----------------------
      |
    Yes
......|...............................................................
      v
  [VERIFIED]
</pre>
</pre>
<hr>
<hr />
 
====Notes:====
====Notes:====


Line 122: Line 140:
** reporter
** reporter
** confirmer
** confirmer
** preparer  
** preparer
** developer
** developer
** reviewer
** reviewer
** QA
** QA
** bugzilla (automatic timeouts).
** bugzilla (automatic timeouts).
* Horizontal dotted lines indicate change of state, storing status during likely delay.  Delay is usually because responsibility for next step belongs to a different person.  In addition, accepting an assigned bug may also be followed by delay because developer accepting it may not work on it immediately.


====Issues:====
====Issues:====
* Suggests REOPENED behaves as READY if EVERREADY flag is set.
* Suggests REOPENED behaves as ASSIGNED if EVERASSIGNED flag is set.
* Suggests developers should be able to confirm and prepare their own bugs, but perhaps the bugs should default to unconfirmed and the developer should need to explicitly check confirmed and/or ready on their initial form.
* Delays suggest developers should be able to confirm and prepare their own bugs, but perhaps the bugs should default to unconfirmed and the developer should need to explicitly check confirmed and/or ready on their initial form.
* Developers should be able to set READY bug back to NEW if turns out it is not actually READY (not shown).
* Developers should be able to set READY bug back to NEW if turns out it is not actually READY (not shown).
* Components may not have an owner, but many reviewers.
* Components may not have an owner, but many reviewers.
* Emphasis is on common transitions.  Other transitions are omitted for clarity.  For example, the following possible transitions are not shown:  
* Emphasis is on common transitions.  Other transitions are omitted for clarity.  For example, the following possible transitions are not shown:  
** Permission required for reviewer > developer > preparer > confirmer > reporter, so the participants with greater permissions can modify any of the prior settings set or neglected by the participants with equal or less permission.
** Permission required for reviewer &gt; developer &gt; preparer &gt; confirmer &gt; reporter, so the participants with greater permissions can modify any of the prior settings set or neglected by the participants with equal or less permission, and can revisit any of the earlier decisions.
** Participants may REOPEN from any RESOLVED state that they can set.
** Participants may REOPEN from any RESOLVED state that they can set.
** Reviewer may resolve bug to WONTFIX before bug receives attention from a developer.
** Reviewer may resolve bug to WONTFIX before bug receives patch from a developer.
** Bug may be fixed by another patch while it is waiting in NEW or READY state, so preparer or developer may resolve it WORKSFORME.
** Bug may be fixed by another patch while it is waiting in NEW or READY state, so preparer or developer may resolve it WORKSFORME.
** "Short-cut" paths, such as when a developer files a preconfirmed bug or a pre-ready bug, or when a developer assigns preaccepted bug to self, are also omitted.</p>
* This diagram looks like a cascading waterfall with just a few iterative cycles.  It may be representative for bugs, for which it is usually easy to specify the expected behavior.  It is less representative for enhancement requests (new features), which often require larger iterative feedback cycles between designers, developers, and users as they try to build prototype designs and refine them.

Latest revision as of 01:07, 8 April 2007

Draft wiki flowchart below illustrates how suggested ideas fit together, including:

  • NEEDS-INFO status,
  • UNCONFIRMED and NEEDS-INFO bug expiration, and
  • splitting triaging into confirming NEW and preparing to be READY.

New roles:

  • Bugzilla daemon:
    • after 90 days UNCONFIRMED, automatically resolves to EXPIRED.
    • after 90 days NEEDS INFO, automatically resolves to DEFICIENT (a.k.a. INSUFFICIENT_DATA, INCOMPLETE).
    • not shown: after 30 days, send a warning to bug participants.
  • Confirmers:
    • confirmers can set status to NEEDS INFO
    • confirmers can resolve DUPLICATE
    • confirmers can resolve INVALID (garbage or Netscape bug)
    • confirmers can resolve WORKSFORME (if on same OS).
    • confirmers can add dependency on another bug (partial dup)
    • confirmers can change category
    • confirmers can set status to NEW (EVERCONFIRMED yes)
  • Preparers:
    • preparers can also add keywords
    • preparers can also set status to READY (EVERREADY yes)

Some issues listed below chart.


   reporter:        
  (enter bug)       
      |             
      |      reporter:   
      |  <-- (add info)  
      | |        ^     
      | |        |         buzilla:
      | | [NEEDS INFO] -> {bug age?} -> 90+ -> [RESOLVED: DEFICIENT]
      | |        ^                      days
......|.|........|....................................................
      v v        |         bugzilla:
[UNCONFIRMED] --|||-----> {bug age?} -> 90+ -> [RESOLVED: EXPIRED] 
      |          |                      days   (inform: can refile
      |      confirmer:                         on recent build)
      |      (ask for details, steps,  
      v       clarification, etc.)
  confirmer:     ^
 {clear and      |
 sufficient?} -- No
      |              
     Yes             
      v
  confirmer:     
{appropriate?} -- No ------------------------> [RESOLVED: INVALID]
      |        (may be garbage/trial, Netscape bug, etc.)
     Yes
      V
  confirmer:
 {duplicate?} -- Yes ------------------------> [RESOLVED: DUPLICATE]
      |        (mark duplicate or dependent of prior/clearer bug)
     No
      v
   confirmer:
{reproducible?} -- No -----------------------> [RESOLVED: WORKSFORME]
      |         (only if on same OS as reporter?)
     Yes
      V
   confirmer:
(recategorize if needed)
......|...............................................................
      v
[NEW (EVERCONFIRMED yes)] 
      |
      v
   preparer:                 
{minimal test case?} -- No ---> 
      |                        |
     Yes                   preparer:
      v              (minimize test case)
  preparer:                    |
(maybe add keyword <-----------
  'testcase') 
......|...............................................................
      v
   [READY] <---------------
      |                    ^
      v                    |
lead developer/manager:    |
 (assign bug)              |
......|....................|..........................................
      v                    |
[READY (has Assigned-to)]  |
      |                    |
      v                    |
  developer:               |
{accept bug?} -- No ------> 
      |
     yes
......|...............................................................
      v
  [ASSIGNED (EVERASSIGNED yes)] 
      |                        ^
      v                        |
   developer:                  |
(develop and attach patch, <--|||-- [REOPENED (EVERASSIGNED yes)]
 request review(s))            |         ^
......|........................|.........|............................
      v                        |         |
  [ASSIGNED, Review requested] |         |
      |                        |         |
      v                        |         |
  reviewer:                    |         |
{accept patch?} -- no -------->          |
      |                                  |
     Yes                                 |
......|..................................|............................
      v                                  | 
  [REVIEW+]                              |
      |                                  |
      v                                  |
reviewer or developer:                   |
(check patch into CVS)                   |
......|..................................|............................
      v                                  |
[RESOLVED: FIXED]                        |
      |                                  |
      v                                  |
     QA:                                 |
  {verify?} -- No -----------------------
      |
     Yes
......|...............................................................
      v
  [VERIFIED]

Notes:

  • Labels {decisions} by role/permissions of decision maker, one of:
    • reporter
    • confirmer
    • preparer
    • developer
    • reviewer
    • QA
    • bugzilla (automatic timeouts).
  • Horizontal dotted lines indicate change of state, storing status during likely delay. Delay is usually because responsibility for next step belongs to a different person. In addition, accepting an assigned bug may also be followed by delay because developer accepting it may not work on it immediately.

Issues:

  • Suggests REOPENED behaves as ASSIGNED if EVERASSIGNED flag is set.
  • Delays suggest developers should be able to confirm and prepare their own bugs, but perhaps the bugs should default to unconfirmed and the developer should need to explicitly check confirmed and/or ready on their initial form.
  • Developers should be able to set READY bug back to NEW if turns out it is not actually READY (not shown).
  • Components may not have an owner, but many reviewers.
  • Emphasis is on common transitions. Other transitions are omitted for clarity. For example, the following possible transitions are not shown:
    • Permission required for reviewer > developer > preparer > confirmer > reporter, so the participants with greater permissions can modify any of the prior settings set or neglected by the participants with equal or less permission, and can revisit any of the earlier decisions.
    • Participants may REOPEN from any RESOLVED state that they can set.
    • Reviewer may resolve bug to WONTFIX before bug receives patch from a developer.
    • Bug may be fixed by another patch while it is waiting in NEW or READY state, so preparer or developer may resolve it WORKSFORME.
    • "Short-cut" paths, such as when a developer files a preconfirmed bug or a pre-ready bug, or when a developer assigns preaccepted bug to self, are also omitted.

  • This diagram looks like a cascading waterfall with just a few iterative cycles. It may be representative for bugs, for which it is usually easy to specify the expected behavior. It is less representative for enhancement requests (new features), which often require larger iterative feedback cycles between designers, developers, and users as they try to build prototype designs and refine them.