Problem Validation: Visualize user counts over time for GitLab.com
Problem to solve
This is the implementation issue for related ~"product discovery" in https://gitlab.com/gitlab-org/gitlab-ee/issues/7052.
Instances don't have a sense for how user counts have changed over time. If they've gone over their license's limit and owe true-up, we don't have a good way of showing why and how this happened.
We also have a hard time doing quarterly and semi-annual renewals, since Maximum Users currently operates on a rolling 12-month basis.
We should solve this for both self-managed and GitLab.com.
Proposal
For this kind of data, I think we should use a line chart, so I used the burndown chart model as a template. Charted appears:
-
Total seats: The number of seats that have been 'activated' through users being added to the group.
- It can never decrease, except in special cases, like subscription renewals or customers contacting customer support.
-
Active users: The number of users who are active members of the group. Guest members don't count toward this metric.
- It can be lower than the number of toal seats, for example because of users leaving or becoming Guests, but it can never be higher.
- If there are no available seats, the addition of an active user will automatically create a seat and increase the total.
-
Paid seats: This is the number of seats that have been paid for.
- The difference between the this metric and Total seats is the amount of seats owed by the customer.
- This line changes as customers pay their periodic true-ups. Regarding the format of the table:
- The X axis represents time, and is divided in weeks.
- Alternating blocks of white and grey are shown in the background to represent the months of the year.
- This axis starts at the moment of the subscription and ends in the present.
- The Y axis represents seats.
Hover popovers
Hovering over the chart will display information for each point in the form of a popover. The information for both lines will be displayed in the same popover at the same time:
- Date range covered by the point.
- Total number of seats in subscription + delta from last point.
- Number of active users + delta from last point. Just like on the burndow chart, it will not be necessary to hover over each specific point. The popover will be displayed for whichever point is closest to the cursor's
X
coordinate.
Here are some example popovers:
Seats | Users | Overlap |
---|---|---|
Placement in the page
This chart should be displayed below the subscription information table. I think the page would become overloaded if we displayed both the chart and the table with the raw data (#7772 (closed)) by default, so I included a segmented control to switch between two:
Chart | Details |
---|---|
Side by side view
Nevertheless, I think it could be interesting to display both the chart and the details table side by side because it could help some users better understand their usage. This limits the width that we can dedicate to each element, so I had to make some modifications:
- Instead of compressing the chart, I reduced the number of points displayed and made it scrollable. This will also be interesting for the normal chart, although I think we won't need to introduce scrolling for the first few iterations, since I don't believe we have historical data to display in the chart.
- I changed the copy for the elements in the table to save horizontal space.
- When expanding a row in the details table, I removed most of the columns and only left the user's information and their join date, as there was no more space to fit the other columns. Alternatively, we could make this section full width like we do for the Changes tab in MRs, but I'm not sure if typical window sizes will allow for much more usable space.
Side by side | Expanded |
---|---|
Support Priority Score: 21