Sub groups
Progress
Before 9.0
-
Allow nested groups in URL (routing) of rails application https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/7459 -
Workhorse support gitlab-workhorse#74 (closed) -
Add nested groups on data level (db, migration, lookup etc). https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/7121, -
Inherit membership and permission from parent group - https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/8071 -
Update db, validations to allow creating groups with same path and different parent etc https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/7976, https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/8008, https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/8011 -
UI: General https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/8062, https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/8308
9.0
-
Allow create nested group in UI https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/8786 -
Documentation https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/9783 -
API support https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/9034 -
Nested groups GFM support https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/9184 -
Cache full_name and full_path !8979 (merged) -
Limit nesting level !9000 (merged) -
Search support for nested groups https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/8827 -
Show nested groups on dashboard, dropdown autocomplete etc https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/8827, https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/9227 -
Show parent groups on members page https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/9062 -
Project features like transfer, import should work for nested groups https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/9227 -
Project Members list should list all members of all ancestor groups https://gitlab.com/gitlab-org/gitlab-ce/issues/28786 -
It should not be possible to share a project with a group that's an ancestor of the group the project is in https://gitlab.com/gitlab-org/gitlab-ce/issues/28788 -
User doesn't have access to projects shared with a group if they're a member of one of that group's ancestors but not of the group itself directly https://gitlab.com/gitlab-org/gitlab-ce/issues/28787 -
GitLab.com HA compatible https://gitlab.com/gitlab-org/gitlab-ce/issues/28125#note_24973610
After 9.0
-
UX improvements: https://gitlab.com/gitlab-org/gitlab-ce/issues/25426, https://gitlab.com/gitlab-org/gitlab-ce/issues/30343 https://gitlab.com/gitlab-org/gitlab-ce/issues/31261 -
Cleanup: Update robots.txt https://gitlab.com/gitlab-org/gitlab-ce/issues/30795 -
Cleanup: rename *_with_namespace
with new methods https://gitlab.com/gitlab-org/gitlab-ce/issues/30786 -
Cleanup: groups GFM refactoring https://gitlab.com/gitlab-org/gitlab-ce/issues/30788 -
Cleanup: Change project
factory to use a nested group half of the time, so every feature is tested with projects under a user, under 1 groups, or under multiple groups? Downside: non-deterministic tests. https://gitlab.com/gitlab-org/gitlab-ce/issues/30790 -
Cleanup: Namespace#send_update_instructions
,Namespace#any_project_has_container_registry_tags?
,Namespace#shared_runners_enabled?
should respect nested groups https://gitlab.com/gitlab-org/gitlab-ce/issues/30789 -
Feature proposal: Transfer nested group feature https://gitlab.com/gitlab-org/gitlab-ce/issues/30547 -
Feature proposal: GitLab pages support for projects inside nested groups https://gitlab.com/gitlab-org/gitlab-ce/issues/30548 -
Feature proposal: Notifications settings support for projects inside nested groups https://gitlab.com/gitlab-org/gitlab-ce/issues/30549 -
Feature proposal: go import
support https://gitlab.com/gitlab-org/gitlab-ce/issues/1337 -
Feature proposal: Group level labels don't work in subgroups / sub projects. This can be a choice to only implement later. https://gitlab.com/gitlab-org/gitlab-ce/issues/30551 -
Feature proposal: Child group should respect parent group share lock
feature. https://gitlab.com/gitlab-org/gitlab-ce/issues/30550
Info
Zendesk: https://gitlab.zendesk.com/agent/tickets/20180
- dev issue (not public): https://dev.gitlab.org/gitlab/gitlabhq/issues/2085
- feedback: http://feedback.gitlab.com/forums/176466-general/suggestions/3867903-allow-project-groups-to-be-organized-in-a-hierarch
Nested groups are requested by several (very) large customers and now also a number of potential customers. In addition, it's the highest requested feature on feedback.gitlab.com.
We need to consider this well. Feel free to edit this issue.
Reasons people want this:
- separate internal / external organizations in GitLab instance (this is a concrete request from a customer)
- organize large projects, making it potentially easier to separate permissions on parts of the source.
- make it easier to manage people and control visibility
Implementation questions
- Do we want this?
- How deep can the nesting go?
- How do we call it? Others call this "organisations", but that can be limited if we want to support further nesting
- If it's just plain groups, do we expect the same integrations, settings, etc such as LDAP, Hooks
- How can we represent this in a non-confusing way?
- How can we maintain transparency of visibility of a project, users, etc?
Next steps
We can only do this once, well. Otherwise we'll introduce issues with paths, migrations, visibility and more. Moving to a nested model is easy, moving away from it is very painful.
I suggest we work out a detailed proposal here, followed by a mockup, then a design and only then it will be implemented. By doing this more formal than we usually do, it forces us to think more and repeatedly about every part of the implementation. I do think it's acceptable to do it iteratively, as we always do. For instance, first introducing only one level of hierarchy (gitlab-org / repos / gitlab-ce) to see how it works out, before (if we want this) adding more levels. Or restricting features depending on the hierarchy.
We should probably leave the current groups as the highest level.
Thoughts?