Phabricator/Project management

Good practices for Phabricator project management. Coming soon.

See T558

Setting priorities
One task can have only one priority at a time. This limitation leads to the art and science of prioritizing tasks keeping multiple perspectives in sync: project level, sprint level, team level, individual level...

Priority should normally be set by product managers, maintainers or developers who plan to work on the bug, or by the bugwrangler or experienced community members, not by the reporter filing the bug report or by outside observers.

When an assignee is already set for a task, its priority should not be changed without agreement of the assignee or development team first.

Priority levels
Wikimedia Phabricator offers these priority levels: Usually the tricky part is to handle High - Normal - Low in a consistent way, especially for tasks that are still unassigned. One way to approach this:
 * Needs Triage - Default option, signaling that the priority is to assign a priority.
 * Unbreak Now! - Something is broken and needs to be fixed immediately, setting anything else aside.
 * High - Someone is working or planning to work on this task soon.
 * Normal - Less priority than High, but you are still planning to work on it.
 * Low - Less priority than Normal, but you are still planning to work on it.
 * Needs Volunteer - You are explicitly saying that you don't plan to work on this task, even if you would be happy if someone does.
 * High priority for tasks committed for the current sprint, or that need to find an owner who can start working on them soon.
 * Normal priority for tasks that are not critical for the current sprint or candidates for a next sprint.
 * Low priority for tasks that we can live without, usually sitting in the backlog, sometimes added to a sprint.

Limiting high priority tasks assigned to a single person
The first perspective that must be sensible is the personal perspective. If the priorities at a personal level are not accurate or realistic, the other views aggregating personal priorities will be directly affected.

The "Assigned to Me" task view needs to be always realistic. For instance, having 17 high priority tasks assigned to one person is not realistic. Defaulting to three high priority tasks makes a lot more sense, committing to five or so in exceptional times. More than this it is probably not realistic, or not sustainable.

Workboards
Despite the plural in the Phabricator UI, it seems a project can only have one workboard, e.g. the Phabricator project itself has one workboard. In comparison Mingle directly supports identifying tasks in the current sprint, and in Trello it's common to have separate boards for the current sprint and backlog, or even a separate board for each sprint.

One approach in Phabricator is to have a MyProj-currentSprint project as well as MyProj, and add the former tag to the tasks you plan to work on in the current sprint.

Once a task is done it drops out of the Phabricator workboard view, which may make it hard to review previous sprints.