Task Tracking System

If you encounter technical software behavioral anomalies (bugs) while playing, visit the Task Tracking System. This page defines the terminology and workflow (task lifecycle) used to track tasks.

Note: The terms task, issue, and bug are essentially interchangeable.

Category

The category field indicates to which part of the system an issue relates:

Client The game client application (and not strictly a GUI issue)
Client → GUI Strictly a graphical user interface issue
Server The game server application
Tools Game/content tools (being developed for this project)
Common A client/server/tools shared library component (but not core)
Protocol Client-server communication/coordination/behavioral issues
Core The base (core) libraries
Gameplay Issues involving logic/rules/features of playing the game

Notice that Protocol issues imply more than Common library updates, and should be used to particularly denote behavioral aspects of the client-server interaction, such as timing issues, coordination of actions, and actual messaging issues. Avoid using this category for library improvements, even if they are network related.

Note: Gameplay may include non-technical design issues as well as technical development (implementation/integration) issues.
Update: Until design issues are phased out of this tasking system…

Task Type

Explanation of bug task type field:

Bug Report Incorrect system behavior Usually technical, sometimes gameplay related
Feature Request Desirable augmentation of system Usually gameplay related, sometimes technical
Enhancement Improvement to existing component Technical or gameplay related
Dev Task Internal software change Always technical in nature, no direct gameplay impact
Design Game design task Non-code related task (game design documentation)
Note: Design-based tasks may be phased out of this issue tracking system.

Status

The status field represents a task's state in its lifecycle:

Unconfirmed This bug is reported, but not seen in the wild
New Newly entered (not yet evaluated)
Assigned Evaluated enough to assign to a developer to be researched
Researching Being looked into by assigned developer
Coding Issue being fixed in code
Awaiting test Coding finished, but not yet released to test
Testing Code fixes have been released for playtesting
Closed Testing has shown the issue to be resolved (in specified way)

The lifecycle of a task begins as Unconfirmed or New. When the Assigned developer takes on the task, it moves to Researching, Coding, and to Awaiting Test. When released to test, the state moves to Testing, where the issue may be Closed. During Testing, however, any lingering issues with the task may push it back to Assigned state (for the developer to perform continuing research and coding until the task reaches testing once again).

Note: Since I'm the only one here right now (and Flyspray seems to have a problem with Assigned state not sticking), I usually skip from New directly to Coding. I fall back on Researching state when coding work is being postponed.

Severity Guidelines

The severity field is subjective. These guidelines guide the use of the severity levels:

Very Low Not causing any loss of functionality (could be ignored), wish-list tasking
Low Not causing any harm, but not to be ignored (should be addressed)
Medium Causing some loss of functionality (no loss of data), work-around exists
High Causing loss of data or loss of important functionality with no work-around
Critical System is unable to function until this is fixed

Priority Guidelines

The priority field is subjective. These guidelines guide the use of the priority levels:

Low I will get to it someday
Normal I will get to it sooner or later
High I will get to it sooner than later
Note: Flyspray also includes Urgent, Immediate, and Flash priorities, which seems excessive. Urgent might be used to indicate something that absolutely positively must be accomplished as soon as possible.

Frequency

Flyspray does not include any notion of frequency, which would (vaguely) indicate how often a bug tends to occur in practice. Frequency could be measured, for example, as high,medium,low or frequent,occasional,rare. Frequency would be set during investigation, in order to provide more information for deciding severity and priority (even a low severity bug may be deemed higher priority if it occurs frequently). This field would only impact Bug Report tasks.

Subtasks

Note: I'm planning to phase out this technique of subtasking. Tasks can have dependencies, as supported by Flyspray, but the practice of creating parent tasks for the sole purpose of containing subtasks is overkill (at this time). What's more, task “grouping” is often best represented by assigning a future release version.

A subtask is a task that represents some portion of another (parent) task. Create subtasks to break down a larger task into smaller units of work.

Flyspray does not yet have the concept of a subtask (all tasks are top-level, first-class elements). To represent subtasking, make the parent task dependent on all subtasks. The parent task cannot be closed until its subtasks are complete. This technique helps ensure several related tasks are completed together to fulfill the parent task. As a side effect, the dependency graph will show the relation of the subtasks to their parent.

This explanation of subtasks will be made redundant if/when Flyspray supports an explicit parent-subtask relationship.

Revision Control Integration

There is no formal issue-to-revision integration. By convention, revision comments should start with the issue tracking ID like this: (#nnn,mmm,..)

Game design tasks may be likewise referenced in its documentation revision system.

Note: As stated above, game design tasking may be phased out of this process.

Scheduling

Flyspray does not seem to have any notion of Impact, Effort, or Risk. These elements would be specified in the issue tracking system as research-based estimates, used to aid in scheduling decisions.

Consequently (or irrespective of), I just wing it.
Impact Amount of change to the codebase
Effort Time required to perform the task
Risk Likelihood of failure or unforeseen impact

These estimates are independent. A task with high impact could affect several developers' work. A task with high effort may tie up parts of the code for some time. A task with high risk may not be an advisable undertaking depending on deadlines.

For example, repackaging Java classes can be high impact (import statements of all dependencies must be changed), but low effort (just file moving and basic search-and-replace) and low risk (strong typing is a wonderful thing). On the other hand, implementing a new combat artificial intelligence routine could be low impact (very isolated code changes), but high effort (difficult to get it right, thus taking longer to debug and test) with moderate risk (can fall back on previous AI).

tech/bugs.txt · Last modified: 2008/08/28 11:28 by neb
Back to top

Copyright © Potential Games

Valid CSS Driven by DokuWiki Recent changes RSS feed Valid XHTML 1.0