Skip to content

User capacity as a first level feature

Problem to solve

As a MR author, I'd like to know the capacity of a team member before assigning it to a reviewer or maintainer.

As a MR reviewer/maintainer, I'd like to communicate my capacity so that I don't get overloaded with MR's and pings which I won't be able to respond in a timely way.

Limitations of Set status

At GitLab, we currently use the GitLab status to sometimes communicate capacity, but this has some limitations:

  • Status is used to communicate much more than capacity (i.e. OOO, sick, fun status).
  • Status is only visible when I hover over a user's name (or view their profile page). It'd be nice if I can see capacity in the @ user dropdown within the comment box or assignee dropdown.
  • Status is fairly free form which causes organizations to have to create their own internal process for using this to communicate capacity.

Options

Option 1 - Smartly detect user capacity based on assigned MR's and assigned issues

This would be interesting, but could be difficult to get right.

Option 2 - Allow users to update their capacity

Maybe in the "Set status" modal we could have a single checkbox for "At capacity". IMO, capacity isn't necessarily binary, so it might be cool to use a segmented control to allow a user to set levels of capacity:

  • Green - Available
  • Yellow - Near capacity
  • Red - At capacity

Proposal

I propose we go with option 2.

Follow-up ideas

  • Show capacity warnings next to users in user dropdowns.
  • Allow admins to configure the ability to remove "At capacity" users from MR assignments.

FAQ

Why use the word "capacity"?

I use this word because I usually want to communicate "I'm at capacity". However, this might not be the best wording because "Low Capacity" confusingly means I have high availability. Maybe we should just call this "availability"... but being unavailable sounds more related to being offline or OOO. 🤔

Is this related to OOO or a separate concept?

I think this should be a separate concept. For instance, I may want to assign something, and I don't care if their OOO for the next few days. But, if their OOO for a few days and at capacity, I know that they probably won't see my ping for about a week or so. 😱

Edited by Paul Slaughter