Quota management concept for (user-created) Team folders
Nobody has claimed this yet.
- Dominant language
- JavaScript
- Stars
- 177
- Forks
- 68
- Avg merge
- 2d 22h
- Merged PRs (30d)
- 60
Description
How to use GitHub
- Please use the 👍 reaction to show that you are interested into the same feature.
- Please don't comment if you have no relevant information to add. It's just extra noise for everyone subscribed to this issue.
- Subscribe to receive notifications on status change and new comments.
Is your feature request related to a problem? Please describe.
Non-admin users can now create Team folders for an existing team, and the Teams app automatically creates team folders when a team is created.
In both cases, administrators need to have a degree of control as quota could be used up quickly. The typical use case is a large organization on a paid SaaS instance where there is a cost-per-gigabyte. Admins would want to assign quota's to departments, and let them figure out what to do in the department.
The easiest way to manage this for admins would be through groups. These can be managed in the IDP (like LDAP or MS Entra) in their daily workflows. Here is a proposal.
Storage handling
Principle
We have a default max quota that can be based on group membership; and a total limit of the storage for all team folders in a certain group, acting as a shared storage pool.
The first quota is just relevant at creation and basically introduces rate limiting while allowing over-provisioning.
The second, total limit, requires maintaining a link between the initial group and the Team.
It can be done in two ways:
- Check on team (folder) creation and quota changes. That way, the total group quota works as a shared storage reservation. Technically easiest.
- Act based on real-time storage usage: allow creating unlimited folders with quota, but when a group exceeds their total allotted storage, block upload.
Admin options
The admin can configure the group quotas in the admin section of the Teams app, in a table:
| group | default quota | total storage |
|---|---|---|
| marketing | 2gb | 1tb |
| sales | 10gb | 500gb |
| engineering | 5gb | 2tb |
The total storage controls the pool for the group. The default quota is the max quota on individual Teamfolder.
You might want some people to assign a higher default quota... For this, we allow being in more than one group:
| group | default quota | total storage |
|---|---|---|
| marketing | 2gb | 1tb |
| sales | 10gb | 500gb |
| engineering | 5gb | 2tb |
| team leads | 20gb | - |
| VP | 10 gb | 1tb |
The logic for the default quota picks the highest number, allowing the admin to reduce the 'rate limiting' on specific people.
If you are in multiple groups, as said at the start, you can pick the group the team belongs to. That allows also control over total storage.
Managing quota
- Admins can see all team folders and manage quota. Total storage pool is managed at group level.
- When the team folder hits a quota limit, the team managers can request more.
- When a group hits 90% usage of total quota, we should warn admins. Members of the group won't be able to create new team folders anymore.
- If no groups have quota or total storage assigned, your team folder can be whatever quota you want. This is simple and does not require any setup for private users and small organizations that don't really need to care.
- The team page should show, at least to team managers, their quota, group, and their pool usage.
- If for some reason a team folder has exceeded quota, you can't upload anything anymore. I think that's how we do it now, too, just wanted to be explicit.
If we opt for real-time quota, implications:
- when storage runs out, all teams are blocked uploading files, no matter their quota. Thus warning in advance becomes very important.
- It should be possible to move a teamfolder to a different group. By admin, or by team member that is in a different group.
- scenario: team member makes team. 1gb quota. Adds team lead and makes them admin. Team lead is part of group with higher quota. Team lead moves the Team to their own group, increasing quota and changing the 'pool' used to control max usage.
- 4 above means - if a team has no group assigned, it has unlimited quota. So removing a group from the system means all its teams get unlimited quota -> see: reassign the teams to another group. We should order team folders by group, so these are easy to spot.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
The issue names no implementation files, tests, or entry points. First clarify whether quota enforcement is reservation-based or real-time, then map the Teams admin section, team page, group membership, and upload handling before defining the scope. Done means the quota model, group assignment rules, admin controls, warnings, and enforcement behavior are agreed and specified.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- javascript
- Domain
- backend
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Quiet
- Clarity
- Needs clarification
- Newbie friendliness
- 35/100