Wikimedia Release Engineering Team/Phab process proposal

Purpose of this document
The WMF Release Engineering team does not have a single/unified process for how we manage tasks across/within projects in Phabricator. The current situation was a combination of organic growth and best efforts/ideas. It is also not documented (because it's practically undocumentable)

This document attempts to do two things:
 * 1) Propose a unified process/description, and
 * 2) document it on wiki.

Current situation
We have a team project at  (aka:  )

We have a ton of software projects we maintain (, ,  , etc, etc etc)

A task can be in any of:
 * Just
 * Just some software project (eg: )
 * Both in  and a software project

There is no consistency and status of a task, for example, a task can be in the "in-progress" column on one or more workboard.

Problems

 * Other teams don't know if we're working on something or if we plan on working on it any time soon.
 * It's hard to see what the entire team is working on (or at least, what people are saying they are working on based on assignee status).
 * It's hard to see what the team is blocked on in one place.
 * We're tracking status (eg: "in-progress") on multiple workboards.
 * It's hard to plan the future without mudding up workboards that track shorter term work.

Proposal
Generally, be more "people focused" than "software focused".

Planning related

 * : to track all open tasks that are on our long term goal list (aka: epics).
 * These generally take more than one quarter, but don't have to.
 * Examples:
 * [EPIC] Run CI jobs in disposable VMs
 * "Migrate Gerrit to Differential"
 * Quarterly projects eg: : to track quarterly keyresults/outcomes/measures of success
 * These are explicitly not tasks you "work on". They are the desired outcome from the tasks/work that you do work on.
 * Examples:
 * [keyresult] subset of jobs run in disposable instances
 * [keyresult] Allow cloning of Phabricator hosted git repositories

Daily task tracking

 * : Our team board to track work progress/status, eg, the board where the "in-progress" column lives
 * Use this board only for work tasks
 * Examples:
 * "Scap3 should break up remote deploy tasks"
 * "Phabricator needs to expose ssh"

Software projects

 * These are the usual software projects, eg,  , or
 * All tasks should have one of these associated with it. Think of it as the primary home of the task.
 * If one doesn't exist then it should probably be created (is Greg's guess); there are of course corner cases.
 * Do not use those boards to track daily work in progress. In other words, remove the "in-progress" column from these projects (unless otherwise needed) and only worry about dragging a task into an "in-progress" column on the  workboard.
 * That information ("in-progress") is still visible to users/others interested. See the next section for further explanation.

The process

 * Add any task you plan to work "soon" on to the #releng team project
 * Corollary: remove the  project to tasks we don't plan to work on any time "soon"
 * "soon" here is not precisely defined, and that's OK. Let's just not have tasks rotting in  that haven't been touched for months
 * Drag the task into the "in-progress" column on the #releng team workboard when you start working on it
 * Take task T97464 as an example.
 * Right now the users/others interested in the work see that it is in the "backlog" column of our team project: see this screenshot.
 * When someone begins work on this, they will drag it into the "in-progress" column, which will do two things:
 * 1) it will email all subscribers that someone moved it in the team "in-progress" column
 * 2) Be clear at the topic of the task for new people that it is in the "in-progress" column because of the "(in-progress)" next to the RelEng team project.

What this gives us

 * One place to look for who from RelEng is working on what right now (the  team project "in-progress" column)
 * Clear areas for planning tasks ( and the   etc projects)
 * Corollary to above: No longer cluttering up our  team workboard with planning tasks

Workboard Tips
NB: expand as needed
 * Sometimes a "watching/externally blocked/stalled" column is useful
 * Having the default column be something like "To Triage" and then a "Triaged" column tends to be useful.