Diff for "IssueTracker"

Not logged in - Log In / Register

Differences between revisions 1 and 15 (spanning 14 versions)
Revision 1 as of 2009-08-27 11:16:01
Size: 16502
Editor: mpt
Comment: moved from private wiki, with private comments and obsolete items removed
Revision 15 as of 2011-02-14 12:31:46
Size: 17819
Editor: jml
Comment:
Deletions are marked like this. Additions are marked like this.
Line 5: Line 5:
Merging Bugs and Blueprints into a single application would make Launchpad more functional and easier to use, make scheduling easier for developers, simplify the codebase, and make Launchpad development faster. Bug reports, feature requests, and other to-dos can be created, processed, scheduled, and resolved the same way. This should not be implemented as a whole new tracker, but by porting missing features from Blueprints to Bugs, then rebranding and migrating. Merging Bugs and Blueprints into a single tracker will make Launchpad more functional and easier to use, make scheduling easier for developers, simplify the codebase, and make Launchpad development faster. Bug reports, feature requests, and other to-dos can be created, processed, scheduled, and resolved the same way. This should not be implemented as a whole new tracker, but by porting missing features from Blueprints to Bugs, then rebranding and migrating. This specification covers (1) the tracker itself, (2) how representative projects would use it, and (3) how we will orchestrate the implementation and migration.

Our current top-level chronological plan:
 1. bug dependencies
 1. burndown charts
 1. work items
 1. nomination of bugs for sprints
 1. names?
 1. migration (data and socialization)

Some changes probably need to be chunked with visual design changes and data (e.g. bug status) changes.

<<TableOfContents()>>
Line 9: Line 21:
Bug reports and feature requests are a continuum with no definite boundary. Trying to impose a boundary has little benefit, and significant costs. Tracking bug reports and feature requests in separate systems makes tasks hard to report, hard to track, and hard to schedule, subtly discourages quality in projects that use Launchpad, and impedes development of Launchpad itself. These points are explained, with many examples, in [[/Rationale|the full rationale]].
Line 11: Line 23:
||<tablestyle="background-color: #ddd; color: #000; width: 50%; clear: right; float: right; margin-left: 0.5em;" style="border: none;"><fouadbajwa> hi, who should i post a feature request to for launchpad?<<BR>><kiko> fouadbajwa, to launchpad-users, to the spec tracker, or to the bug tracker, depending.||
||<) style="border: none;">''-- [[http://irclogs.ubuntu.com/2006/10/17/%23launchpad.txt|#launchpad, 2006-10-18]]''||
== Research ==
Line 14: Line 25:
||<tablestyle="background-color: #ddd; color: #000; width: 50%; clear: right; float: right; margin-left: 0.5em;" style="border: none;">Quite a number of specifications on the list should really be wishlist (or above) bug reports on the appropriate package ...||
||<) style="border: none;">''-- [[https://launchpad.net/bugs/70067|Colin Watson, 2006-11-03]]''||
We have carried out [[https://wiki.canonical.com/Launchpad/Strategy/Research/BlueprintBugMerger|interviews and statistical analysis]] of the projects that most use blueprints. (Unfortunately, because some of these projects are private, the data is also private. The following user examples capture the publishable details.)
Line 17: Line 27:
||<tablestyle="background-color: #ddd; color: #000; width: 50%; clear: right; float: right; margin-left: 0.5em;" style="border: none;">Use the bug tracker (not blueprints) here to report bugs, request features, and contribute patches.||
||<) style="border: none;">''-- [[https://launchpad.net/exaile|Exaile]], a Launchpad "featured project"''||
== User examples ==
Line 20: Line 29:
The most obvious cost is that people often waste time [[http://launchpad.net/bugs/177519|reporting an issue in the wrong application]], [[http://launchpad.net/bugs/172532|shuffling issues]] between one application and the other (examples [[https://blueprints.launchpad.net/ubuntu/+spec/ri-li|1]], [[https://launchpad.net/bugs/89118|2]], [[https://launchpad.net/bugs/111338|3]]), or [[https://lists.ubuntu.com/archives/ubuntu-devel/2006-November/022461.html|wondering which to use]] in the first place. For example, often a seemingly simple bug is reported, but the developers realize that fixing it will be complicated enough to need a specification. To humor Launchpad's data model, you then need to (1) write the specification on a separate wiki, (2) include a link to the bug report in the specification, (3) register the specification under Blueprints, (4) put the tracked blueprint's URL in the specification itself, (5) update the bug report to mention the blueprint, so that the reporter doesn't think nothing's happening, (6) implement the specification, and record it as being implemented, and (7) remember to mark the bug as fixed. It would be simpler and quicker if the specification could be written, edited, and tracked [[http://launchpad.net/bugs/185905|right there in the original report]].  * In '''Ubuntu''', people propose hundreds of blueprints for discussion at the next Ubuntu Developer Summit; that number is helpfully limited by the obscurity of the function. Managers [[https://launchpad.net/sprints/uds-n/+specs|approve]] or [[https://launchpad.net/sprints/uds-n/+specs?acceptance=declined|decline]] blueprints for UDS, renaming them to fit into semi-arbitrary [[http://uds.ubuntu.com/tracks/|tracks]]. The [[https://launchpad.net/summit|Summit]] scheduler arranges sessions based on who has registered their attendance and marked themselves as “essential” subscribers. During UDS sessions, participants assemble work items with other notes as plain text in [[http://en.wikipedia.org/wiki/Gobby|Gobby]], then up to a week or two later, transfer them to the blueprint whiteboard. Sometimes a blueprint links to a [[https://wiki.ubuntu.com/SpecSpec|specification]] on the Ubuntu wiki. The Unity Design team avoids blueprints, instead using [[https://bugs.launchpad.net/ayatana-design|a dummy project]] to track feature design separately from implementation in bug reports. For all other teams, Ubuntu drivers approve or decline the finished blueprints. If approved, a blueprint’s work items and linked bug reports appear on [[http://people.canonical.com/~platform/workitems/|burndown charts]]. As work items are updated during the cycle, Launchpad mails whiteboard diffs to the subscribers. If a feature takes more than six months, sometimes the blueprint is reused for the next UDS, and sometimes it is superseded.
  || <rickspencer3> jcastro, where can I see some organized lists of the blueprints registred to date for Natty?<<BR>>...<<BR>><jcastro> https://blueprints.edge.launchpad.net/sprints/uds-n <<BR>>...<<BR>><jcastro> the link at the bottom takes you to the "pending" ones people are submitting<<BR>>...<<BR>><jcastro> which is the link you'll want to check regularly<<BR>><rickspencer3> jcastro, can I see them listed by track?<<BR>><rickspencer3> also, I'd like to be able to list them by team if possible<<BR>><rickspencer3> jcastro, does stuff like this work: https://blueprints.edge.launchpad.net/sprints/uds-n?searchtext=*-foundations-* <<BR>><rickspencer3> ?<<BR>><jcastro> rickspencer3: clicking on the column sorts them by name, which is are the tracks<<BR>><jcastro> yes, it does<<BR>>...<<BR>><jcastro> rickspencer3: as long as you stick to the naming convention it should be fine||
Line 22: Line 32:
(The flip side of this problem is that the existence of "Blueprints" as a separate category encourages people to report ill-thought or incomplete ideas, consuming the time of developers.)  In the new tracker, people (would this need restricting?) could nominate any issue to be discussed at UDS. (Would the sprint tracker still be part of Launchpad?) Drivers could approve or decline issues for UDS based not on whether they were “features”, but on whether they were complex enough to need in-person discussion. During a UDS session, participants would update the issue description directly and add/remove work items. Drivers could approve or decline issues and/or individual work items for the release, and allocate them to milestones if desired. Launchpad itself would display burndown charts for the Ubuntu series as a whole, for milestones, for teams, and for individuals.
Line 24: Line 34:
||<tablestyle="background-color: #ddd; color: #000; width: 50%; clear: both; float: left; margin-right: 0.5em;" style="border: none;">[I] was tracking this work as a spec, unaware that there was already a bug||
||<) style="border: none;">''-- [[https://launchpad.net/bugs/90476|Michael Hudson, 2007-06-22]]''||
 * '''Linaro''' processes are complex but their presentation is in flux. As with Ubuntu, features are proposed, and the [[http://www.linaro.org/how-linaro-works/|Technical Steering Committee]] approves or declines them, for discussion at six-monthly [[https://wiki.linaro.org/Process/ProjectManagement|developer summits]]. Overall changes targeted for a release are described as [[https://wiki.linaro.org/Process/linaro1011ReleaseCycle#References|technical requirements]] ([[https://wiki.linaro.org/Releases/1011/TechnicalRequirements|example]]). [[https://wiki.linaro.org/Process/Blueprints|Blueprints]] representing these have a `tr-` prefix, sometimes depending on other blueprints from both Linaro and Ubuntu. As with Ubuntu, [[https://wiki.linaro.org/Process/linaro1011ReleaseCycle#Planning|blueprints have work items tracked on burndown charts]], and also on [[https://wiki.linaro.org/WorkingGroups/KernelConsolidation/Status|elaborate external dashboards]] that track both definition status and implementation status. [[http://people.canonical.com/~jamesw/workitems/natty.old/|Separate charts]] track [[https://wiki.linaro.org/Process/ReleaseManagement|weekly]] progress for each technical requirement. Project members are currently debating whether to request [[LEP/EffortEstimation|fields for person-hours estimated vs. expended]] in Launchpad for more precise tracking.
Line 27: Line 36:
Second, scheduling is slower and more error-prone, because bugs and features are prioritized separately, such that it's not obvious which thing a developer should work on next. [[http://fogcreek.com/FogBugz/docs/60/topics/schedules/Priorities.html|FogBugz addresses this directly]]: "The best way to use priorities is to have a single, global priority scheme across all your projects, bugs, and features, so that every team member can always work down their list of cases in order of priority." [[http://code.google.com/support/bin/answer.py?answer=56610&topic=10384|Similarly, in Google Code Hosting]]: "The issue tracker can be used for feature requests, support requests, or any other type of development task that a project needs to track". [[http://trac.edgewall.org/wiki/TracTickets|And in Trac]]: "tickets are used for project tasks, feature requests, bug reports and software support issues".  In the new tracker, people could nominate issues for discussion at an LDS. The Technical Steering Committee could have a [[http://launchpad.net/bugs/193585|team-controlled “tr” tag]] for marking issues as technical requirements, so that they could be displayed as a separate list, and those issue reports could depend on other issue reports that listed the actual work items. Launchpad could show overall progress of the release, but progress of technical requirements would still need to be displayed using an external tool. Estimated person-hours could be entered in Launchpad either for a whole issue, or for its individual work items.
Line 29: Line 38:
Launchpad could address this issue with separate to-do lists or task lists, but that would be adding even more complexity. With a combined issue tracker, the list of open issues would ''be'' the task list. This would not require projects with well-established separate specification processes (such as Python or Plone) to start using Launchpad for both bugs and feature requests simultaneously; they could adopt a "bugs only, please" policy if they wished. But for those projects using Launchpad for both, it would become much easier for developers to track all the things they are assigned to do.  * '''Drizzle''' heavily uses both work items and milestones, but [[http://drizzle.org/workitems/|its “burndown chart”]] does not track progress towards a milestone.
Line 31: Line 40:
Third, there is [[http://launchpad.net/bugs/235745|slower development of Launchpad itself]]. Having one fewer application would not only simplify Launchpad's codebase, it would also make Launchpad's bug-tracking and feature-tracking abilities both more feature-complete. Bug reports have comments, tags, multiple contexts, privacy, attachments, duplicates, easy linking to/from other bug reports, branch registration, product/package subscriptions, batched notifications, e-mail filtering by header, list sorting, and advanced search; blueprints should have all these things too, but currently don't ([[https://launchpad.net/bugs/3522|bug #3522]], [[https://launchpad.net/bugs/3552|bug #3552]], [[https://launchpad.net/bugs/58408|bug #58408]], [[https://launchpad.net/bugs/49698|bug #49698]], [[https://launchpad.net/bugs/68206|bug #68206]], [[https://launchpad.net/bugs/72669|bug #72669]], [[https://launchpad.net/bugs/113752|bug #113752]],
[[http://launchpad.net/bugs/126721|bug #126721]], [[http://launchpad.net/bugs/137397|bug #137397]], [[http://launchpad.net/bugs/147394|bug #147394]], [[http://launchpad.net/bugs/147404|bug #147404]], [[http://launchpad.net/bugs/218272|bug #218272]], ''etc''). Conversely, blueprints have feedback requests, and registration for sprints or hackfests; bug reports should have both these things too, but currently don't. And there are other features missing from both applications that will, if Bugs and Blueprints are kept separate, have to be implemented twice. We should be spending more time implementing awesome stuff, and less time implementing basic stuff multiple times.
 In the new tracker, contributors could easily see a burndown chart for each milestone, as well as an issue status chart for the project as a whole. Work items would be entered inside issue reports.
Line 34: Line 42:
Now that the Malone identity has been retired, there is not even any branding benefit in keeping the applications distinct.  * The '''Unity design team''' does not use blueprints. It assesses incoming Unity bug reports, and if they need design work, tags them as “UDT” and files them as “Confirmed” for [[https://launchpad.net/ayatana-design|Ayatana Design]]. A report bounces between “In Progress” and “Triaged” for whatever kinds of design work (interaction, visuals, animation) are needed. When design is complete, the report is marked “Fix Committed” for Ayatana Design, and “Confirmed” for [[https://launchpad.net/unity|Unity itself]]. Once “Fix Released” for Unity, it is (at least in theory) tagged as “needsdesignreview” and then “reviewedbydesign”.
Line 36: Line 44:
== Use cases ==  In the new tracker, the Ayatana Design project would be retired. Instead, a Unity issue report would be marked as “Ready” (a.k.a. “Triaged”) only when the desired behavior was either (a) obvious or (b) included in a specification linked to from the report. Unity managers or engineers could [[#Delegation|delegate]] an issue to whichever designers or testers were necessary.
Line 38: Line 46:
 * Liu Qishuai implemented Internet sharing in Gnome's network-admin, and wanted to tell Ubuntu developers about the new code. Reasoning that this wasn't a bug, it was a feature, Liu registered a specification in Launchpad, but then found no way to attach the patch. [[https://launchpad.net/ubuntu/+spec/internet-sharing|Tragedy ensued.]]  * '''A small project''' typically uses blueprints sporadically, if at all. When it does, Definition status is used to track whether the idea is ready to implement. Releases are made when they are ready, so there is no date for a burndown chart to reach.
Line 40: Line 48:
 * In theory, the Landscape developers use Launchpad's bug tracking features, while tracking specifications solely using [[https://wiki.landscape.canonical.com/SpecRegistry|a wiki]]. In practice, they end up entering mini-specifications into bug reports, because [[https://launchpad.net/bugs/64279|it's so easy to do]].  In the new tracker, the “Ready” status would be used to track whether an idea is ready to implement.
Line 42: Line 50:
 * Dan Lipsitt had an idea for different behavior in Launchpad, but he didn't know whether to request this as a bug report or a specification. [[https://launchpad.net/launchpad/+ticket/2380|Nobody else knew, either.]]  * Various hardware vendors publicly contribute to Ubuntu core packages. The same bug, in the same package, may be of different importance to each of these vendors.
Line 44: Line 52:
 * Jeff Bailey found a confusing page in Launchpad, but said: “I don't know where to file this, since it's not a bug (the page works), [and] not a support request (I know how to make it work).” So he e-mailed me (mpt) about it instead. == The tracker ==
Line 46: Line 54:
 * Andrew Frank wanted to report problems with Ubuntu’s documentation. He mistakenly concluded that Launchpad did not have an appropriate place for this: “finding a problem in documentation is [[https://launchpad.net/launchpad/+bug/76016/comments/0|neither a bug report nor a new feature]], so i suggest to add a new heading for such issues”.

 * Alan Pope expressed a similar sentiment on [[http://podcast.ubuntu-uk.org/2008/03/11/13/|the first episode of the Ubuntu UK Podcast]], when discussing [[http://brainstorm.ubuntu.com|Brainstorm]]: “Some things you wouldn’t consider a bug, wouldn’t consider a feature request/blueprint … I mean one I’m just looking at now, whilst I’m talking, is ‘Do not install support for Palm devices by default’. Now to me, that’s a valid point. I don’t own a Palm OS device, why would I want support for it? But I wouldn’t be able to consider that a bug, and I wouldn’t be able to consider that really a feature request.”

== Design ==
== Random notes ==
Line 99: Line 103:
 * “Invalid” -> “Declined” (because [[https://lists.ubuntu.com/archives/launchpad-users/2007-September/002289.html|“Invalid” is needlessly harsh]])  * “Invalid” -> “Declined” (because [[https://lists.canonical.com/archives/launchpad-users/2007-September/002289.html|“Invalid” is needlessly harsh]])
Line 101: Line 105:
 * “Opinion” -> “Declined” (because something being a matter of opinion is orthogonal to whether the maintainer will accept it)
 * “Confirmed” -> “Unconfirmed” (superseded by users-affected count)
Line 108: Line 114:

=== Work items ===

As a workaround for poor tracking in Blueprint, the separate [[https://wiki.ubuntu.com/WorkItemsHowto|work items tracker]] has been grafted on top for large projects (Ubuntu, Linaro, Drizzle), with burndown charts. Work items are entered, and edited, as lines of text in blueprint whiteboards. Bug reports are (at least currently) too much work to use as work items. Any combined issue tracker will need to satisfy the same requirements.
Line 133: Line 143:
 * What would be the typical process for small, medium-size, large projects?
  * For example, What would happen before and during UDS?
Line 140: Line 148:

== Notes ==

''Transcription of jml's notes made at the Launchpad Thunderdome 2011-01-19''

 * Want bugs and blueprints on a single list
 * Need to have "work items" for issues that can be burned down for a release
 * Need to be able to say that issue is not finished until a set of issues and work items are finished
 * Want "issue cannot be started until this other issue is finished"
 * Want "issue is related to other issue"
 * Need to have separate queue / process for "features" instead of bugs
   * Need to change smoothly during course of their life
   * Need to avoid / discourage flag fights
   * e.g. How do you decide that something needs approval? How do you track that approval? e.g. LEP.
 * Must avoid swamping UDS planners with bugs proposed for discussion
 * Work items currently have DONE, INPROGRESS, TODO and POSTPONED statuses
 * See [[http://people.canonical.com/~james-w/workitems/natty.old/|Linaro charts]]

Merging Bugs and Blueprints into a single tracker will make Launchpad more functional and easier to use, make scheduling easier for developers, simplify the codebase, and make Launchpad development faster. Bug reports, feature requests, and other to-dos can be created, processed, scheduled, and resolved the same way. This should not be implemented as a whole new tracker, but by porting missing features from Blueprints to Bugs, then rebranding and migrating. This specification covers (1) the tracker itself, (2) how representative projects would use it, and (3) how we will orchestrate the implementation and migration.

Our current top-level chronological plan:

  1. bug dependencies
  2. burndown charts
  3. work items
  4. nomination of bugs for sprints
  5. names?
  6. migration (data and socialization)

Some changes probably need to be chunked with visual design changes and data (e.g. bug status) changes.

Rationale

Tracking bug reports and feature requests in separate systems makes tasks hard to report, hard to track, and hard to schedule, subtly discourages quality in projects that use Launchpad, and impedes development of Launchpad itself. These points are explained, with many examples, in the full rationale.

Research

We have carried out interviews and statistical analysis of the projects that most use blueprints. (Unfortunately, because some of these projects are private, the data is also private. The following user examples capture the publishable details.)

User examples

  • In Ubuntu, people propose hundreds of blueprints for discussion at the next Ubuntu Developer Summit; that number is helpfully limited by the obscurity of the function. Managers approve or decline blueprints for UDS, renaming them to fit into semi-arbitrary tracks. The Summit scheduler arranges sessions based on who has registered their attendance and marked themselves as “essential” subscribers. During UDS sessions, participants assemble work items with other notes as plain text in Gobby, then up to a week or two later, transfer them to the blueprint whiteboard. Sometimes a blueprint links to a specification on the Ubuntu wiki. The Unity Design team avoids blueprints, instead using a dummy project to track feature design separately from implementation in bug reports. For all other teams, Ubuntu drivers approve or decline the finished blueprints. If approved, a blueprint’s work items and linked bug reports appear on burndown charts. As work items are updated during the cycle, Launchpad mails whiteboard diffs to the subscribers. If a feature takes more than six months, sometimes the blueprint is reused for the next UDS, and sometimes it is superseded.

    • <rickspencer3> jcastro, where can I see some organized lists of the blueprints registred to date for Natty?
      ...
      <jcastro> https://blueprints.edge.launchpad.net/sprints/uds-n
      ...
      <jcastro> the link at the bottom takes you to the "pending" ones people are submitting
      ...
      <jcastro> which is the link you'll want to check regularly
      <rickspencer3> jcastro, can I see them listed by track?
      <rickspencer3> also, I'd like to be able to list them by team if possible
      <rickspencer3> jcastro, does stuff like this work: https://blueprints.edge.launchpad.net/sprints/uds-n?searchtext=*-foundations-*
      <rickspencer3> ?
      <jcastro> rickspencer3: clicking on the column sorts them by name, which is are the tracks
      <jcastro> yes, it does
      ...
      <jcastro> rickspencer3: as long as you stick to the naming convention it should be fine

    In the new tracker, people (would this need restricting?) could nominate any issue to be discussed at UDS. (Would the sprint tracker still be part of Launchpad?) Drivers could approve or decline issues for UDS based not on whether they were “features”, but on whether they were complex enough to need in-person discussion. During a UDS session, participants would update the issue description directly and add/remove work items. Drivers could approve or decline issues and/or individual work items for the release, and allocate them to milestones if desired. Launchpad itself would display burndown charts for the Ubuntu series as a whole, for milestones, for teams, and for individuals.
  • Linaro processes are complex but their presentation is in flux. As with Ubuntu, features are proposed, and the Technical Steering Committee approves or declines them, for discussion at six-monthly developer summits. Overall changes targeted for a release are described as technical requirements (example). Blueprints representing these have a tr- prefix, sometimes depending on other blueprints from both Linaro and Ubuntu. As with Ubuntu, blueprints have work items tracked on burndown charts, and also on elaborate external dashboards that track both definition status and implementation status. Separate charts track weekly progress for each technical requirement. Project members are currently debating whether to request fields for person-hours estimated vs. expended in Launchpad for more precise tracking.

    In the new tracker, people could nominate issues for discussion at an LDS. The Technical Steering Committee could have a team-controlled “tr” tag for marking issues as technical requirements, so that they could be displayed as a separate list, and those issue reports could depend on other issue reports that listed the actual work items. Launchpad could show overall progress of the release, but progress of technical requirements would still need to be displayed using an external tool. Estimated person-hours could be entered in Launchpad either for a whole issue, or for its individual work items.

  • Drizzle heavily uses both work items and milestones, but its “burndown chart” does not track progress towards a milestone. In the new tracker, contributors could easily see a burndown chart for each milestone, as well as an issue status chart for the project as a whole. Work items would be entered inside issue reports.

  • The Unity design team does not use blueprints. It assesses incoming Unity bug reports, and if they need design work, tags them as “UDT” and files them as “Confirmed” for Ayatana Design. A report bounces between “In Progress” and “Triaged” for whatever kinds of design work (interaction, visuals, animation) are needed. When design is complete, the report is marked “Fix Committed” for Ayatana Design, and “Confirmed” for Unity itself. Once “Fix Released” for Unity, it is (at least in theory) tagged as “needsdesignreview” and then “reviewedbydesign”.

    In the new tracker, the Ayatana Design project would be retired. Instead, a Unity issue report would be marked as “Ready” (a.k.a. “Triaged”) only when the desired behavior was either (a) obvious or (b) included in a specification linked to from the report. Unity managers or engineers could delegate an issue to whichever designers or testers were necessary.

  • A small project typically uses blueprints sporadically, if at all. When it does, Definition status is used to track whether the idea is ready to implement. Releases are made when they are ready, so there is no date for a burndown chart to reach. In the new tracker, the “Ready” status would be used to track whether an idea is ready to implement.

  • Various hardware vendors publicly contribute to Ubuntu core packages. The same bug, in the same package, may be of different importance to each of these vendors.

The tracker

Random notes

Bugs and Blueprints should be merged into Issues, a unified application for handling bug reports, feature requests, and other to-dos. Projects should be able to choose what kind of issues they want to use the issue tracker for, without having to learn separate applications.

Dependencies

Some bug and issue trackers include dependency tracking. Unfortunately dependencies are used to express a variety of different relationships:

  • Work on X can't begin until Y is finished.
  • Work on X can begin, but can't finish until Y is finished.
  • X could be finished without Y being finished, but the software wouldn't make sense to users in that state.
  • X might still be an issue, but it's difficult to tell because of Y.
  • Fixing Y would be one way of fixing X, but not the only way.
  • X is divided into two tasks, Y and Z.

When people assume that all dependencies are of the first sort, development is slowed unnecessarily.

FogBugz doesn't record dependencies, because "on software teams, it's almost always the case that the team can keep working even when there's a dependency. Software developers have a great deal of flexibility in the order in which things are done, unlike, say, a construction crew building a house. Because it's so easy to create simple stub functions as placeholders, with software, it's perfectly reasonable to build the roof before the foundation is poured."

There are also other interesting relationships between issues, that cannot reasonably be tracked as dependencies:

  • If X was fixed, Y would become invalid.
  • Y is similar to X, and testers should be careful not to confuse them.
  • Y is a regression of X.
  • Y is the unfixed remainder of X.

With all these relationship types, the benefit of having a specific field for them in Launchpad is outweighed by the cost of the extra complexity. And this applies exactly as much to feature requests as it does to bugs. Therefore issue relationships should be recorded using free-form text in the issue's description, with Launchpad automatically linking issue numbers as it does now for bug numbers.

Data migration: Once blueprints are assigned issue numbers, blueprint dependencies should be converted to sentences at the end of the issue description.

Delegation

For effective issue tracking, it is important for all issues assigned to someone to represent things they are able to work on right now. When an issue is blocked on someone else, it should appear in that person's task list, and be downplayed in your own. Therefore Launchpad should know about delegation, or temporary reassignment.

  • A specification in the Ready state may be delegated to drivers for approval, before being returned for implementation.
  • A smaller bug fix that affects the user interface may be delegated to a UI designer for sign-off, before being returned for implementation.
  • A code change may be implemented and then delegated to the review team for review, before being returned for committal.
  • Close to a major release, a reviewed code change may be delegated to a drivers team to gauge risk vs. reward, before being returned for committal to the release branch and/or the trunk.

Status

Issues should have six possible statuses.

  • Unconfirmed: Not yet investigated by someone qualified to determine its coherence.

  • Declined: Not appropriate or relevant for this project.

  • Incomplete: May be appropriate, but is missing information about the precise problem — for example, reliable steps to reproduce, a testcase, or hardware details.

  • Ready: The issue is described well enough, and is approved if necessary, so that work can begin. (Cf. BugzillaWorkflowImprovements.)

  • In Progress: Actively being designed, implemented, or fixed. (Some projects and/or assignees may not bother with this status.)

  • Done: Fixed, implemented, or achieved. Any unresolved issues have been recorded separately. For versioned things (such as software), the version/versions in which the issue is resolved should be recorded.

Issues marked as "Declined" or "Done" should continue appearing in search results for a period afterward (defaulting to six months, but configurable per-project to suit the typical upgrade cycle of the project's users). This would perform almost exactly the same duplicate-reducing function as "Fix Committed" was intended but failed to do, and as "Won't Fix" does, but in a much simpler way.

Data migration:

  • “New” -> “Unconfirmed” (because “New” is misleading)

  • “Invalid” -> “Declined” (because “Invalid” is needlessly harsh)

  • "Won't Fix" -> "Declined"

  • “Opinion” -> “Declined” (because something being a matter of opinion is orthogonal to whether the maintainer will accept it)

  • “Confirmed” -> “Unconfirmed” (superseded by users-affected count)

  • "Triaged" -> "Ready" (because the name "Triaged" is both misleading and over-specific)

  • "Fix Committed" -> "Done" with "context-target-name-committed" tag (for easing migration of projects that were purposefully distinguishing between Committed and Released)

  • "Fix Released" -> "Done" with "context-target-name-released" tag

Importance

Issues should have the same set of importance values as Bugs had previously, except without Wishlist. Whether something is a wishlist item is orthogonal to how important it is.

Work items

As a workaround for poor tracking in Blueprint, the separate work items tracker has been grafted on top for large projects (Ubuntu, Linaro, Drizzle), with burndown charts. Work items are entered, and edited, as lines of text in blueprint whiteboards. Bug reports are (at least currently) too much work to use as work items. Any combined issue tracker will need to satisfy the same requirements.

Implementation

This would not be implemented as a whole new tracker. The overall implementation plan would be:

  • port missing features from Blueprints to Bugs, rolling them out as ready
  • implement the rebranding of "Bugs" to "Issues" and the hiding of "Blueprints"
  • implement migration of all current blueprints to issue reports
  • simultaneously roll out the rebranding and perform the migration
    • possibly the migration can be done in the hours after the rollout
  • once it's all working, implement the removal of the dead code and DB records.

Code changes

Schema changes

Migration

  • blueprint "names" become issue nicknames
    • requires uniqueifying nicknames
  • bugs with "Wishlist" importance reset to "Undecided" for proper triage
  • URL redirects (https://launchpad.net/bugs/nnn should continue to work)

  • "Blocked" should be represented by an unresolved dependent issue

Unresolved issues

  • What to do with "informational" specifications?
  • Bug 136103: Suggestion about bug types

  • Bug 176431: Better organization/segregation of wishlist items

  • Could "Declined" and "Done" be merged into "Closed"? Is there a functional distinction between the two? For example, if a bug is reported about a feature that is later removed, should the bug be considered invalid or fixed? Google Code Hosting makes no distinction by default. And Ubuntu package changelogs "Close" bugs, rather than fixing some and invalidating others.
  • How should "Does not affect software X" (or "Does not affect software X version Y") be represented?

Notes

Transcription of jml's notes made at the Launchpad Thunderdome 2011-01-19

  • Want bugs and blueprints on a single list
  • Need to have "work items" for issues that can be burned down for a release
  • Need to be able to say that issue is not finished until a set of issues and work items are finished
  • Want "issue cannot be started until this other issue is finished"
  • Want "issue is related to other issue"
  • Need to have separate queue / process for "features" instead of bugs
    • Need to change smoothly during course of their life
    • Need to avoid / discourage flag fights
    • e.g. How do you decide that something needs approval? How do you track that approval? e.g. LEP.
  • Must avoid swamping UDS planners with bugs proposed for discussion
  • Work items currently have DONE, INPROGRESS, TODO and POSTPONED statuses
  • See Linaro charts

IssueTracker (last edited 2014-04-24 12:29:08 by mpt)