= Triaging Launchpad bugs = ||<>|| Our triage process is basically this: make sure that ''Critical'' and ''High'' bugs are correctly marked. We want: * ''Critical'' bugs to be those that need attention before all others. Right now: OOPSes, timeouts, regressions, stakeholder-escalated bugs. * The ''High'' bugs list to be around six months deep. Many parts of Canonical are on a six month cycle and fitting in with that is convenient. We use a [[#quarterly|quarterly review]] to shrink the ''High'' list if it looks like more than six months of work. == How to triage == These are the questions we ask when triaging bug reports about Launchpad: 1. '''Is this a bug in Launchpad?''' If not, move it to the appropriate project and move to the next bug. 1. '''Is it a duplicate?''' if there is a duplicate, mark the newer bugs as a duplicate of the older bug ([[#duplicates|read more about duplicates]]). 1. '''Is it something we'll never do?''' If yes, mark it as ''Won't Fix''. 1. '''Is it an operational request?''' If yes, covert it to a question. 1. '''When are we likely to fix this?''' Set the importance to show when we'll get to fixing this bug ([[#importance|read more about choosing an importance]]). 1. '''Does the report have enough detail?''' If we couldn't replicate or otherwise begin work on the bug with information provided, request further information from the reporter and mark it as ''Incomplete''. If someone has already asked for more info and the reporter has replied, change the status from ''Incomplete'' to ''Triaged''. 1. '''Is the bug ready for a developer to fix?''' If yes, set the status to ''Triaged''. As you might expect, we give a triaged bug the ''Triaged'' status. If you're uncertain what importance to give a bug, chat with another engineer. If there's a disagreement, let common sense and courtesy take priority. == Quick links == ||All of Launchpad||[[https://bugs.launchpad.net/launchpad-project|All]]||[[https://bugs.launchpad.net/launchpad-project/+bugs?search=Search&field.status=New|New]]||[[https://bugs.launchpad.net/launchpad-project/+bugs?field.status:list=NEW&field.status:list=INCOMPLETE_WITH_RESPONSE&field.status:list=INCOMPLETE_WITHOUT_RESPONSE&field.status:list=CONFIRMED|Untriaged bugs with no importance]]||[[https://bugs.launchpad.net/launchpad-project/+bugs?field.status:list=NEW&field.status:list=INCOMPLETE_WITH_RESPONSE&field.status:list=INCOMPLETE_WITHOUT_RESPONSE&field.status:list=CONFIRMED|Untriaged bugs that have a status]]||[[https://bugs.launchpad.net/launchpad-project/+bugs?field.searchtext=&orderby=-importance&search=Search&field.status%3Alist=TRIAGED&assignee_option=any&field.assignee=&field.bug_reporter=&field.bug_supervisor=&field.bug_commenter=&field.subscriber=&field.tag=&field.tags_combinator=ANY&field.has_cve.used=&field.omit_dupes.used=&field.omit_dupes=on&field.affects_me.used=&field.has_patch.used=&field.has_branches.used=&field.has_branches=on&field.has_no_branches.used=&field.has_no_branches=on&field.has_blueprints.used=&field.has_blueprints=on&field.has_no_blueprints.used=&field.has_no_blueprints=on|Triaged]]||[[https://bugs.launchpad.net/launchpad-project/+bugs?search=Search&field.importance=Critical&field.status=New&field.status=Incomplete&field.status=Confirmed&field.status=Triaged&field.status=In+Progress&field.status=Fix+Committed|Critical]]|| ||Launchpad itself||[[https://bugs.launchpad.net/launchpad|All]]||[[https://bugs.launchpad.net/launchpad/+bugs?search=Search&field.status=New|New]]||[[https://bugs.launchpad.net/launchpad/+bugs?field.status:list=NEW&field.status:list=INCOMPLETE_WITH_RESPONSE&field.status:list=INCOMPLETE_WITHOUT_RESPONSE&field.status:list=CONFIRMED|Untriaged bugs with no importance]]||[[https://bugs.launchpad.net/launchpad/+bugs?field.status:list=NEW&field.status:list=INCOMPLETE_WITH_RESPONSE&field.status:list=INCOMPLETE_WITHOUT_RESPONSE&field.status:list=CONFIRMED|Untriaged bugs that have a status]]||[[https://bugs.launchpad.net/launchpad/+bugs?field.searchtext=&orderby=-importance&search=Search&field.status%3Alist=TRIAGED&assignee_option=any&field.assignee=&field.bug_reporter=&field.bug_supervisor=&field.bug_commenter=&field.subscriber=&field.tag=&field.tags_combinator=ANY&field.has_cve.used=&field.omit_dupes.used=&field.omit_dupes=on&field.affects_me.used=&field.has_patch.used=&field.has_branches.used=&field.has_branches=on&field.has_no_branches.used=&field.has_no_branches=on&field.has_blueprints.used=&field.has_blueprints=on&field.has_no_blueprints.used=&field.has_no_blueprints=on|Triaged]]||[[https://bugs.launchpad.net/launchpad/+bugs?search=Search&field.importance=Critical&field.status=New&field.status=Incomplete&field.status=Confirmed&field.status=Triaged&field.status=In+Progress&field.status=Fix+Committed|Critical]]|| <> = Importance = We use three of Launchpad's bug importances and give each a specific meaning. ||~+Importance+~||~+Meaning+~|| || ~+{{attachment:bug-critical.png}} Critical+~||Bugs that need to jump the queue. When all is well, we should have no Critical bugs.|| ||~+{{attachment:bug-high.png}} High+~||Bugs that are likely to get attention in the next six months.|| ||~+{{attachment:bug-low.png}} Low+~||All other bugs.|| The importance of a particular bug report reflects the priorities of the Launchpad project. Individuals working on Launchpad may have different priorities. ([[#selecting|Read more about selecting bugs to work on]]) <> == Critical == Any bug marked ''Crtitical'' takes priority over all other bugs. At present, timeouts, OOPSes (thanks to our [[https://dev.launchpad.net/PolicyAndProcess/ZeroOOPSPolicy|zero OOPS policy]], regressions (including supported-browser issues) and stakeholder escalations are all marked as ''Critical''. Other types of bug may also be ''Critical''; Francis or Robert will expect you to justify marking any other type of bug as ''Critical''. If all is well with Launchpad, there should be no ''Critical'' bugs. <> == High == These are bugs that we believe we will work on in the next six months. <> == Low == We mark as ''Low'' any bug that we recognise as legitimate but that we have no plans to fix. This is not the same as planning not to fix the bug; it means that we don't know when we will fix it, if at all. == Others == We do not use ''Medium'' or ''Wishlist''. This is primarily to avoid giving false hope to people who are interested in a bug that is neither ''Critical'' nor ''High'': if it does not have one of these statuses, we think it is unlikely we will fix it in the next six months. = Assigning bugs = We do not assign bugs as part of the triage process. Only ''In progress'' bugs should be assigned to someone. Even ''Critical'' bugs do not need an assignee, unless they are being worked on. Being at the top of the queue is all we need for ''Critical'' bugs to get the attention they require. <> = Selecting bugs to work on = If you are working on Launchpad in your own time you'll most likely want to fix those bugs that matter to you, regardless of what importance the Launchpad project gives them. That's great and we welcome all bug fixes; we encourage you to look at [[FixBugs|our page about fixing bugs]] first. Members of Canonical's Launchpad team will select bugs depending on whether they're in a maintenance or feature squad. Generally speaking, squads on feature-rotation will consider the importance of a bug only after filtering for work that applies directly to their current feature. Maintenance squads, however, will usually be working from the bug database: picking bugs based on their triaged importance. They should look at each importance in order — critical, high, low — and from within that bucket take one of the oldest bugs. Crucially though, there should be no ''Critical'' bugs before they start work on ''High'' bugs. Similarly, ''Low'' bugs should get attention only when there are no ''Critical'' and no ''High'' bugs. <> = Quarterly review = Four times a year, we put all of the ''High'' bugs back through the triage process. This lets us make sure that all those bugs really should be ''High'' and to take account of anything that has changed since they were last triaged. = Resolving disuputes = Beyond these rules a bug is more important than another bug if fixing it will make Launchpad more better than fixing the other bug. Discretion and a feel for whats in the bug database will help a lot here, as will awareness of our userbase and their needs. One sensible heuristic is to look at five to ten existing ''High'' bugs and, if the new bug is less important than all of them, mark it ''Low'' as it's probably less important than all existing ''High'' bugs. Engineers have discretion to decide any particular bug should be sorted higher (or lower) than it has been; some change requests are very important to many of our users while still not big enough to need a dedicated feature-squad working on them. When two engineers disagree, or if someone in the management chain disagrees, common sense and courtesy should be used in resolving the disagreement.