I believe Bugzilla's workflow can be improved using one of the central ideas from Getting Things Done, the "next action".
Currently, the answer to the question "what is needed to move this bug forward?" is scattered throughout each bug report. Sometimes it's a keyword, sometimes it's a review flag, and sometimes it's the third-to-last comment. It takes me maybe a minute per bug to determine whether I can help, and this wasted time adds up quickly.
Next-actions for bugs
I propose replacing the status field with a next action field, and the assignee field with a next action assignee field. The "next action" field answers the question "what is needed to move this bug forward":
- Understand what's wrong with the code
- Write patch
- Automate test
- Review patch
- Approve patch
- Push patch to mozilla-central
- Create tests for existing code
- Design new code
- Review design
- Test patch on try server
- Test patch against fuzzers
- Fix whatever caused the back-out
- Provide ideas
- Experiment by writing extensions
- Experiment in a usability lab
- Consider security ramifications
- Consider accessibility concerns
- Decide whether it goes in
- Specify desired behavior in detail
- Reduce testcase
- Find regression range
- Check against CSS spec
- Get crash stack
- Get hang profile
- Run under valgrind
- Debug with gdb
Organizing actions by context lets me remember projects when I can move them forward, rather than when they only increase my anxiety. This may be even more important in a community system: who you are is a key context determining whether you can do something.
With a next-action field, it would be easier to find places to put my skills to good use:
- Did Brendan hope to have this patch fuzzed?
- What bugs are waiting for input from the security team?
- What bugs could benefit from extension-space experimentation?
With the addition of a next-action-assignee field, I'd also be able to do searches like:
- What have I been asked to do in Bugzilla?
- What blockers are stuck on me?
- What bugs need someone to volunteer to make a reduced testcase?
I'm asking for new fields, but I think this will actually make Bugzilla less complicated. The "next action" field and its assignee would replace:
- The current "status" field, which is mostly useless because each open state (unconfirmed / new / reopened / assigned) can mean so many different things.
- The current "assignee" field, which is misleading when the next action required is anything other than "write a patch" or "check it in".
- Eleven keywords: uiwanted, qawanted, helpwanted, stackwanted, icon, testtracker, crashreportid, regressionwindow-wanted, testcase-wanted, checkin-needed, push-needed.
- Status whiteboard markers like "[needs review gavin]" and "DUPEME".
- Many comments that are only temporarily meaningful.
It would also make our process more transparent: there is always a first-level answer to "Why hasn't this bug been fixed yet?"