Bug management/How to triage

Note: This triage guide is work in progress and in an early stage!

When we triage bugs, we review each bug's initial report, comments, reproducibility, and any attached patches. We discuss its priority and status and decide whether to change them, and sometimes recruit developers to fix the bug or implement the enhancement.

Before you start
Make sure that you have an account in Wikimedia Bugzilla - this account is separate from your wiki accounts. If you are not familiar with Bugzilla, you may want to take a look at the Bugzilla page on this wiki first, and at Bugzilla/Fields to understand what all those options on a bug report page are used for.

For a basic understanding of the triaging workflow and the steps to perform, we recommend to take a look at the [Triaging flow graphic] of the KDE project.

Getting Started: Find reports to work on
There are many different techniques and approaches to find reports to triage.

TODO: Write a tasks page.

If at any point you feel like you do not know what to do with a certain report, please first ask developers or contributors before changing something.

Is it a duplicate?
Some reports in Bugzilla have already been reported before. We do not recommend to spend too much time on it; if a bug is filed twice, someone else will mark it as a duplicate later. If the bug is a duplicate, mark it as a duplicate in the resolution box below the comment field by setting the "RESOLVED DUPLICATE" status, and shortly explain your action in a comment for the reporter (or see "Help tools" at the bottom of this page).

As it is often hard for reporters to find the right place (product and component) where to file a report, also search for duplicates outside same product and component of the bug report you are triaging. When searching drop the ending of a verb (e.g. search for "delet" so you get reports for both "delete" and "deleting"), and also try similar words (e.g. search both for "delet" and "remov").

If you think that you have found a duplicate but you are not totally sure, just add a comment like "This bug looks related to bug XXXXX" (and replace XXXXX by the bug number) so somebody else can take a look and help judging.

You can also take a look at Bugzilla's list of popular duplicates.

Is it an outside problem?
If the problem happens because of a piece of software that is not developed by MediaWiki/Wikimedia developers the problem should be forwarded to the so-called "upstream" developers (MediaWiki/Wikimedia is called "downstream" in this context, as we are just users of that piece of software). You can find a list of software which is tracked elsewhere and used by Wikimedia, plus addresses of the corresponding bugtrackers here: Bug management/Upstream bugtrackers.

After forwarding a bug report to an upstream bugtracker, please add the address of the upstream report to the "See Also" field in the bug report, add the "upstream" keyword to the report, and explain in a comment that the problem has been reported to its original developers.

Setting priority
During triage, a Priority is assigned to a bug. Project managers can use this field, in cooperation with the Bugwrangler, in order to drive development of fixes or features to address the bug.

In order for these fields to retain meaning and effectiveness, communication is essential. For example, the priority Highest has no meaning if no one has agreed to get it resolved quickly.

With that in mind, here are some guidelines for basic communication that should take place:

Highest
This priority should be reserved for bugs that affect Wikimedia's servers in production. In other words, the effect of this bug can be seen by an end user of Wikipedia or its sister sites. Usually, this is a problem that affects a number of users and impedes their use of the site. For anything that isn't marked with a severity of enhancement, these are regressions in site behavior — in other words, some functionality that worked before is not currently working.

Bugs with this priority should have someone assigned to them so that they can be addressed as soon as possible. If you think a bug deserves this priority, but do not know the developer who should work on it, then assign it to the manager for the affected product (i.e. Visual editor, Mobile, Page Triage, etc.). If you don't have any idea who to assign the bug to and you are still sure that the bug deserves this priority, then ask in IRC for some help before giving it that priority.

Immediately after marking a bug up to Highest priority, notify the following people in IRC or via email: the director of platform engineering, the management of 20% time, the management of QA. This way problems can be addressed quickly.

High
A list of bugs marked High should be collated on a regular basis and distributed to wikitech-l. This will encourage discussion of the problems and remind people of their existance. The discussion may also help you understand why a bug does not deserve this priority and improve your triageing abilities.

Non-enhancement bugs marked with a High priority should be addressed after Highest priority bugs. These should be good targets for WMF developers 20% time, so it is good to make sure the manager of 20% time is aware of the bugs.

Normal
Any bugs that have a severity of major, critical, or blocker that is not marked with Highest or High should probably be marked with Normal priority.

Low
All other bugs that merit any attention should be marked Low priority.

Lowest
Bug that are genuine issues with the software (i.e. the software is doing something it shouldn't) but that do not affect many people and do not cause a loss of data should be marked Lowest priority.

Helper tools
Andre Klapper has shared some Greasemonkey scripts that he uses (Greasemonkey is a clientside Javascript extension that runs in Firefox and some other browsers). These scripts are available under "wikimedia/bugzilla/triagescripts" in Wikimedia's code repository (see Download from Git if you have not used Gerrit/Git before) and everybody can install them to save some time!

These scripts include for example stuff like
 * provide one-click stock comments,
 * embed several links (to Extension product homepage; query tickets previously filed by the reporter)
 * display email addresses of people and not just the name
 * color people based on a manual list (e.g. green = "I know this person and don't need to look at this report")
 * color MWExtensions based on a manual list (e.g. "green = deployed")

Please contact Andre Klapper if you need help installing or understanding the code. Contributions are welcome!

Other triaging documentation sources
Much has been written about triaging by other teams and Bugzilla users.


 * “What to do and what not to do in Bugzilla” from Mozilla.
 * “Guide to Bug Triaging” from KDE BugSquad.
 * “Confirming unconfirmed bugs” from Mozilla.
 * “Eight Quick Steps to Triage Nirvana” from Gnome.
 * http://www.gentoo.org/proj/en/qa/bug-wranglers/index.xml
 * http://osdir.com/ml/sage-devel/2010-10/msg00428.html
 * http://solutionsfit.com/blog/2012/07/22/consolidate-your-technical-debt/