Phabricator/Wikimedia use cases for Phabricator
This page is obsolete. It is being retained for archival purposes. It may document extensions or features that are obsolete and/or no longer supported. Do not rely on the information here being up-to-date. |
This page collected use cases for Wikimedia's Phabricator task tracking system. This includes use cases from Wikimedia Foundation (WMF) staff, from community members, and from any other potential direct user of Phabricator.
Community Member
[edit]Community Developer
[edit]Staff Developer
[edit]As someone doing work in a project, I want to use category and priority and assignment information to figure out which task to work on next.
[edit]Normally, VisualEditor (VE) team members do this via consultation with the Product Owner (PO), but on occasion they navigate to the VE work board and look at the top of the columns they are working on to identify new work.
As a team member, I need to add work to the board other than via formal meetings, so that I can document and maybe start new work without delay.
[edit]Manager of Staff Developers
[edit]As a team manager, I need to make weekly reports so that I can meet managerial requirements.
[edit]As a team manager, I want to help the team be more effective by reducing context switching and task fondling.
[edit]As a team manager, I need a list of what the team is going to do next so I can plan the budget.
[edit]Staff Member responsible for a product
[edit]As a Product Owner with new information, I want to alter the backlog for my project to reflect new priorities.
[edit]VE does this via the PO adding and renaming columns and moving tasks between columns on the work board. (All VE work is on a single workboard, which means it's all in one project.) We have also experimented with using the "Blocked By" relationship to identify a tree of related tasks, but this is not visible in Phabricator workboards (nor can ancestor Blocked-By be seen or sorted or filtered on) and can only be seen in Phlogiston reports.
As a Product Owner, I want to categorize and prioritize incoming tasks so that they can be worked on by the right people at the right time.
[edit]VE does this with a weekly triage meeting in which the Product Owner views all new tasks in the last week, in order of submission (or reversed), and triages one at a time. Specifically, the PO looks at tasks in the default column of the VisualEditor project, edits the Priority field, possibly adds a comment, and drags the task to a different column. In VE, the columns represent different [initiatives/ultra-milestones/goals/tranches/categories] (for example, "Rich Media" or "Language Support").
As a Product Owner, I want to de-prioritize low-value work so that the product can deliver high-value work first.
[edit]As a Product Owner with knowledge of work in my project, I want to review the backlog for my project so that I can see if the backlog is current and correct compared to reality.
[edit]In VE, this has two parts: First, are tasks in right categories? This normally happens in triage, but the Product Owner occasionally notices something out of place (a task in the wrong column) while examining the board view for other purposes. Second, are categories right in relation to one another? This happens when the PO looks at the board, but more often when the PO looks at the Phlogiston report that shows not only columns but also task family (blocked by)-based categorizations.
VE sometimes does overall work planning (in the style of Scrum card mapping, where tasks from different areas/columns are all sliced into different releases/rows) from the board. I've already heard that some teams have approximated Scrum card mapping by using "dummy tasks" in columns, so that tasks above or below that task in a column can be perceived to be in a theoretical "row" that may be consistent across columns.
The main activity in VE that isn't supported adequately in Phabricator is mixing blocked-by relationships and columns. For example, VE may have 50 tasks in the "Language" column, and five of those tasks may all be set to block a "Release Korean support". Those six tasks comprise "sub-category" within Language, where Language is a broad, long-term grouping and "Release Korean support" is a subset with a fixed scope. There is no way directly in Phabricator to see, in one view, which tasks share the same blocking relationship. One way to support this in Phabrictor would be to add a display field in the task and/or task card showing the ancestor "blocks" task(s). Currently we can see this in aggregate, but not per-task, in Phlogiston reports. The sub-project construct supports the same underlying data relationship, but in a different, reversed way: in Phabricator, you can filter on a project and you will see all tasks belonging to sub-projects.
As a team work planner, I need to know how much work is not goal-related so that in crunch-time I can de-prioritize it.
[edit]Work planner could be manager or could be team member self-planning.
Work = active or planned work.
Goal could be quarterly goal or other work.
As a team planner in a weekly planning meeting, I want to know how much capacity we have for new work in the next week and how close we are to deadlines so that I can defer non-deadline work.
[edit]As a team manager responsible for team deadlines, I want to know if the team is currently on track to meet those deadlines so that if not I can take corrective action.
[edit]As a team planner, I need to oversee the implicit or explicit triage each task has received so that I can help team members balance their priorities.
[edit]As a program owner, I need to approve a task without closing it
[edit]ArchCom-RFCs get filed (given the "#ArchCom-RFC" tag), which puts the task in the ArchCom inbox. If we approve the task, the task isn't closed, but instead needs to be somehow marked as "ArchCom-Approved". [Tentative: The task can't be marked "Resolved" in Phabricator because 1) participants experience sub-task or successor task creation as excessive barriers, and/or 2) the original task is intended and understood to be the master tracking unit.]