IssueTracker

Not logged in - Log In / Register

Revision 3 as of 2010-08-23 17:27:47

Clear message

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.

Rationale

Bug reports and feature requests are a continuum with no definite boundary. Trying to impose a boundary has little benefit, and significant costs.

<fouadbajwa> hi, who should i post a feature request to for launchpad?
<kiko> fouadbajwa, to launchpad-users, to the spec tracker, or to the bug tracker, depending.

-- #launchpad, 2006-10-18

Quite a number of specifications on the list should really be wishlist (or above) bug reports on the appropriate package ...

-- Colin Watson, 2006-11-03

Use the bug tracker (not blueprints) here to report bugs, request features, and contribute patches.

-- Exaile, a Launchpad "featured project"

The most obvious cost is that people often waste time reporting an issue in the wrong application, shuffling issues between one application and the other (examples 1, 2, 3), or 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 right there in the original report.

(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.)

[I] was tracking this work as a spec, unaware that there was already a bug

-- Michael Hudson, 2007-06-22

Looking at Launchpad, I see a system that loves to throw weird terminology at me, blueprints, drivers, WTF? Especially its hard separation between features and bugs, notion and treatment of "delivery" milestones, approvals and assignments, busts the hell out of me. That may be suitable for your company's business product development and perhaps understood by you and your co-workers after having had a workshop or completing the Launchpad certificate™, but how does that remotely apply to Drupal's flexible and successful usage of issues with various transitioning states...?

-- Daniel F. Kudwien, 2010-02-09

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. 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." 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". And in Trac: "tickets are used for project tasks, feature requests, bug reports and software support issues".

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.

Third, there is 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 (bug #3522, bug #3552, bug #58408, bug #49698, bug #68206, bug #72669, bug #113752, bug #126721, bug #137397, bug #147394, bug #147404, 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.

Now that the Malone identity has been retired, there is not even any branding benefit in keeping the applications distinct.

Use cases

Design

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:

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:

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.

Status

Issues should have six possible statuses.

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:

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.

Implementation

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

Code changes

Schema changes

Migration

Unresolved issues