Page MenuHomePhabricator

Support "Oncall" Users
Open, LowPublic

Description

See PHI1226. An install would like reviews assigned to some projects (say, #widget-service) to only email/notify the current oncall for that project.

We've had a handful of other similar requests in the past, including T401.

I'm not wildly excited about these specific use cases, but think there's likely some flavor of reasonable feature here, and that oncall support makes sense in Phabricator in general in the long term.

Almost all of the complexity in this feature is in the scheduling UI (setting up rotations, making exceptions to rotations, letting users trade rotations, letting users propose rotation trades, requiring users to MFA-sign their rotation trades, etc). We don't actually have to build it to make the feature useful: installs can synchronize to an external source or handle rotations manually until we do build it. We can just cheat and implement all the interesting application parts of oncall first, then do actual terrible awful scheduling part later.

I think this likely looks like this, in Projects:

  • Projects can be marked as having oncall users.
  • A (temporary?) API call allows you to set oncall windows, so you can synchronize from an external source or cron a weekly schedule or whatever.
  • When you view an oncall project, the UI shows that the project has oncall and who the oncall users are.
  • The members list shows current oncalls.
  • The projects list allows you to search for projects you're currently on call for.
  • Only projects with members may be oncall projects (no parent projects).
  • A project may have multiple current oncalls.

This stuff we can skip:

  • Actual scheduling.
  • Reviewing your oncall schedule in the future (vs "projects you are oncall for right now").

In Maniphest:

  • Perhaps: tasks may be assigned to an oncall project. Not a v1 feature.

In Differential/Diffusion:

  • "Responsible Users: Oncall Project" expands to only the oncalls.
  • A new everyone(project) or similar expands oncall projects without regard for current oncalls.

In Mail:

  • When a project is an oncall project, it expands only into the current oncall users.
  • Current oncalls are added as mail stamps.
  • If a project has members but no oncalls, it expands to everyone?

Everywhere:

  • Oncall projects render specially and show the current oncall (either in the token or hovecard).

Open questions:

  • Can you have a "Primary Oncall" and "Backup Oncall"?
  • Can you have a "Review Oncall" and "Triage Oncall"?
  • Can you have a separate "Review" rotation and "Triage" rotation?

Event Timeline

epriestley triaged this task as Low priority.
epriestley added a project: Facebook.
epriestley added subscribers: epriestley, blair.

To elaborate on what we have now, we basically have:

  • Continuous rotations (n days, starting on day y, with set of people)
  • Fixed rotations (set dates per person)
  • Shifts so the day can be split up (more for operations, I assume, new to me)
  • Ability to override the rotation with a manual entry (to take over without changing everything)
epriestley renamed this task from Build Oncall Tool? to Build Oncall / Alerting / Monitoring tool, similar to PagerDuty.Jan 6 2015, 12:50 AM
epriestley merged a task: Restricted Maniphest Task.
eadler added a project: Restricted Project.Feb 23 2016, 6:58 AM
eadler moved this task from Restricted Project Column to Restricted Project Column on the Restricted Project board.
eadler removed a project: Restricted Project.May 16 2016, 10:38 AM
epriestley renamed this task from Build Oncall / Alerting / Monitoring tool, similar to PagerDuty to Support "Oncall" Users.May 3 2019, 4:22 AM
epriestley updated the task description. (Show Details)