Lib:Tasks Management
From GNUpdf
Contents |
Overview
This document contain information about the tasks management we use in the development of the GNU PDF Library.
The Ideal World: The Project Plan
Please see details about the Project Plan in the Roadmap.
The Real World: The Tasks Pool
The real tasks being worked out in the project are contained in what we call the tasks pool.
The tasks pool contain a set of tasks that should be performed out by some agent. The pool do not contain all the tasks for the project: there is an approximation in the project plan. Instead there is a constant flow of tasks being introduced in the pool by originators and being consumed out by the developers. That means that when a task is performed by a developer it is pulled out of the pool and archived.
An archived task can be reactivated and inserted again in the tasks pool.
A task is attributed with a priority while it is into the tasks pool. The priority is a number between 1 (less priority) to 9 (higher priority). Some priority levels have names:
- 1 - Later
- 2
- 3 - Low
- 4
- 5 - Normal
- 6
- 7 - High
- 8
- 9 - Immediate
Sometimes the maintainer could change the priority of a task to avoid it to starve.
Note that a reactivated task gets a new priority number when it is reinserted into the tasks pool.
Originators
There are several possible originators of tasks:
- The maintainer
- The maintainer is the responsible of maintaining the tasks pool, introducing new tasks when needed and setting the priorities. The source of the tasks is either the project plan, bug reports or reactivated tasks.
- Cron jobs running in gnupdf.org
- There are several cron jobs running in gnupdf.org that perform checks on a nightly build of the sources and executes the unit tests. These jobs can automatically generate new tasks to fix some problem (a high cyclomatic complexity in a module or a fail in a test case).
Types of Tasks
We distinguish between some types of tasks. Each task type has an initial priority defined:
| task type | originator | source | initial priority |
|---|---|---|---|
| planned task | maintainer | project plan | 5 (Normal) |
| sporadic task | maintainer | bug report | 4 |
| automatic task | gnupdf.org | test fail or bad software metric | 6 |
Tasks Workflow
The following diagram depicts the possible states for a task and the allowed transitions between states:
- TODO
- The task is into the tasks pool but it not ready to be performed.
- NEXT
- The task is into the tasks pool and it is ready to be performed by
- a developer.
- STARTED
- The task has been started by a developer but it is not finished.
- DONE
- The task is archived and succesfully performed.
- DISCARDED
- The task is archived but it has been discarded.
The Flyspray Task Tracker
We use a flyspray task tracker installed in gnupdf.org in order to implement the tasks pool.
Each flyspray task has the following attributes:
- Type
- The type of the task: planned, sporadic or automatic.
- Category
- The context of the task. It may be the name of a library layer (such as base layer), the name of a library module or a more general context (such as build system).
- Priority
- The priority of the task.
- Status
- The status of the task: TODO, NEXT, STARTED, DONE or DISCARDED.
- Summary
- A summary of the task.
Tasks Descriptions
We usually store tasks descriptions in the flyspray tasks tracker, but sometimes a task is complicated enough to require a more complete description (with images, diagrams, etc). In the later case we use a wiki page to contain the task description.
Each task in the tasks pool (in the flyspray installation) has a unique ID associated, such as #nnnnn. The corresponding wiki page containing the description of the task (if any) would be Tasknnnn. A link to the task description wiki page will be provided in the description of the savannah task.
- Template used to build task description pages: Template:Task
- Browse all the task descriptions: Category:Lib Tasks



