BMO/Workflow Proposal 2: Difference between revisions

No edit summary
 
(5 intermediate revisions by the same user not shown)
Line 7: Line 7:
===The Big Idea===
===The Big Idea===


Knowing what just happened on a bug is not all that useful. What observers and potential helpers really want to know is: what needs to happen next? How can this bug be moved forward? This enables meaningful participation - people can search for bugs which require the skill they have, or try and find someone which has it. It makes it much less likely that bugs will fall through the cracks as each person expects someone else to take action. It's much more obvious whether a bug is in the realm of QA, dev, UX, security or is actually in limbo.
Knowing what just happened on a bug is not all that useful. What observers and potential helpers really want to know is: <b>what's next?</b> How can this bug be moved forward? This enables meaningful participation - people can search for bugs which require the skill they have, or try and find someone which has it. It makes it much less likely that bugs will fall through the cracks as each person expects someone else to take action. It's much more obvious whether a bug is in the realm of QA, dev, UX, security or is actually in limbo.


It would be possible to agree with this idea but disagree with my particular proposal to implement it. Please make it clear when you comment whether you object to the principle or the proposal.
It would be possible to agree with this idea but disagree with my particular proposal to implement it. Please make it clear when you comment whether you object to the principle or the proposal.
Line 19: Line 19:
====Open States====
====Open States====


(These states have no associated resolution.)
(These Next Actions have no associated resolution.)


* <b>TRIAGE</b> - the bug requires triage to see if it really is a bug, and whether it is in the correct product and component.
* <b>TRIAGE</b> - the bug requires triage to see if it really is a bug, and whether it is in the correct product and component.
* <b>TESTCASE</b> - the bug requires a reduced testcase to be written which shows it off.
* <b>MAKE_TESTCASE</b> - the bug requires a reduced testcase to be written which shows it off.
* <b>DIAGNOSE</b> - the bug is confirmed as a real bug, but requires someone to investigate the cause.
* <b>DIAGNOSE</b> - the bug is confirmed as a real bug, but requires someone to investigate the cause.
* <b>DESIGN</b> - the problem has been identified, and work is required to design a solution. This code be code design, UI design or something else.
* <b>DECIDE</b> - a general state which means that someone or some group has to make a decision for the bug to progress further.
* <b>FIX</b> - the path is clear, and someone needs to fix the bug or implement the feature.
* <b>FIX</b> - the problem definitely needs fixing, and someone needs to do some work towards that goal (design or coding).
* <b>REVIEW</b> - some particular person needs to review either an artifact (such as a patch) for some reason (code review, design review, accessibility review) or a approve a decision
* <b>CHECK_IN</b> - the change has had all necessary reviews and approvals, and now needs to be checked in.
* <b>APPROVE</b> - the change has been reviewed, but (perhaps due to the tree it is destined for) this bug requires approval.
* <b>CHECKIN</b> - the change has had all necessary reviews and approvals, and now needs to be checked in.
* <b>VERIFY</b> - the change has been checked in, and someone needs to check it has worked.


Bugs with Next Action as TRIAGE, TESTCASE, DIAGNOSE and VERIFY would be the responsibility of QA; the others would be the responsibility of Dev. When QA was initially finished with a bug, they would set the next action to FIX. (Dev might later decide some DESIGN was necessary first.) Once Dev has fixed a bug, they set it to VERIFY. Once QA has verified, they set it to --NONE--.
====Closed States====


====Closed States====
(These Next Actions have an associated resolution.)
 
* <b>VERIFY</b> - the change has been checked in, and someone needs to check it has worked. This probably makes most sense for FIXED, but occasionally for other resolutions.
* <b>--NONE--</b> - no further action is required on this bug - see the Resolution to find out why.
 
====Commentary====
 
Bugs with Next Action as TRIAGE, MAKE_TESTCASE, DIAGNOSE and VERIFY would be the responsibility of QA, DECIDE can be either depending on the assignee, and FIX and CHECK_IN would be the responsibility of Dev. When QA was initially finished with a bug, they would set the next action to FIX. Once Dev has fixed a bug, they set it to VERIFY. Once QA has verified, they set it to --NONE--.


(These states have an associated resolution.)
The names have been chosen to hopefully be general enough that groups which use Bugzilla for things other than software bugs (e.g. helpdesk tickets) can still use it, even if they wouldn't have a use for every state. MAKE_TESTCASE and CHECK_IN are fairly software-specific, but the rest are general.


* <b>--NONE--</b> - no further action is required on this bug - see the Resolution to find out why. (That could be FIXED, INVALID or whatever as now.)
Those without editbugs would file bugs into TRIAGE. Those with editbugs could also file a bug in MAKE_TESTCASE, DIAGNOSE, DECIDE or FIX.


Clearly, there are a great many other candidates for values - e.g. more specific ones like "STACK", "BISECT" or "VALGRIND". But the number of values cannot be too large, otherwise people will get choice paralysis. I hope the above covers everything at a high level.
Clearly, there are a great many other candidates for values - e.g. more specific ones like "GET_STACK", "BISECT" or "VALGRIND". But the number of values cannot be too large, otherwise people will get choice paralysis. I hope the above covers everything at a high level.


Some other things you might want to say would be covered by the Resolution field - "SUPPORT", "WRITE_AN_EXTENSION", etc.
Some other things you might want to say would be covered by the Resolution field - "SUPPORT", "WRITE_AN_EXTENSION", etc.


====Migration====
Review and approval would continue to use flags, as now.
 
Once a bug has been fixed, it is often passed to QA for verification, and it would therefore be assigned to a QA person. In order to make it possible to search easily for "who fixed this bug" even after that point, we would have a custom field which is automatically populated with the username of the person who actually did the fix.
 
====Next Action Owner====
 
(This bit still needs comment.)
 
The bug may have several owners over the course of its life. We need to make it easy for people to assign the bug to the right person.
 
Bugzilla currently has the concept of "default owner" and "default QA contact". We should morph those (only slightly) into "default developer" and "default QA person". Then:
 
* If a bug is filed in a dev state, it gets assigned to the default developer. If it is filed in a QA state, it gets assigned to the default QA person.
* Whenever a bug transitions from a dev state to a QA state, it gets assigned to the last person to own it in a QA state, or the default QA person if it's never been in a QA state.
* Whenever a bug transitions from a QA state to a dev state, it gets assigned to the last person to own it in a dev state, or the default dev person if it's never been in a dev state.
* (Both of the above can, of course, be overridden by people making an explicit choice of assignee.)
 
The aim here is to DTRT with the assignee with minimal effort on the part of the person making the change to the bug.
 
===Migration===


Migrating from the current system to the above one is tricky, because it requires some guesswork as to what the next action is! Here is a straw man proposal:
Migrating from the current system to the above one is tricky, because it requires some guesswork as to what the next action is! Here is a straw man proposal:
Line 50: Line 73:
* <b>NEW</b> -> DIAGNOSE
* <b>NEW</b> -> DIAGNOSE
* <b>ASSIGNED</b> -> FIX
* <b>ASSIGNED</b> -> FIX
* <b>REOPENED</b> -> FIX
* <b>REOPENED</b> -> TRIAGE (so we can see why it was reopened and move it on accordingly)
* <b>RESOLVED</b> -> VERIFY
* <b>RESOLVED</b> -> VERIFY (if resolved in the last month), otherwise --NONE--
* <b>VERIFIED</b> -> --NONE--
* <b>VERIFIED</b> -> --NONE--


Line 57: Line 80:


Incoming bugs which are now UNCONFIRMED would come in instead as TRIAGE, and those which are now NEW would come in as DIAGNOSE.
Incoming bugs which are now UNCONFIRMED would come in instead as TRIAGE, and those which are now NEW would come in as DIAGNOSE.
===Resolutions===
The Resolution field then ends up as the thing which tells you why the Next Action is --NONE--, or to put it another way, why the judgement is that there is no further action to take on the bug. This proposal would work fine with our existing set of statuses - nothing is to be done because it's FIXED, because we WONT FIX it, because the bug is INVALID, because it's a DUPLICATE, and so on. There are several other suggestions for Resolutions we might want to add, but discussing that at the same time as this would just lead to a larger discussion as the two issues became confused. So let's not do that.
===Possible Issues===
* It's useful to know who fixed a bug when it's closed; if the Current Action Owner at the end is the QA guy who verified the bug, then that information is not immediately obvious.


===References===
===References===


Most of this is shamelessly stolen from [http://www.squarefree.com/2009/04/20/getting-bugs-done/ Getting Bugs Done] by Jesse Ruderman.
Most of this is shamelessly stolen from [http://www.squarefree.com/2009/04/20/getting-bugs-done/ Getting Bugs Done] by Jesse Ruderman.
Account confirmers, Anti-spam team, Confirmed users, Bureaucrats and Sysops emeriti
4,925

edits