Organization/Workspace to replace instance-level functionality with group-level features
## Overview
#### :tv: [Intro video](https://www.youtube.com/watch?v=tDYjMxGD2Wg)
#### :construction: [Product Documentation](https://docs.gitlab.com/ee/user/workspace/)
GitLab's features currently exist at 3 levels:
| Level | Description | Example |
| ------ | ------ | ------ |
| Instance | Features for the entire instance. These are generally admin features (restricted to the admin panel or via a config like `gitlab.rb`), but not always ([Operations Dashboard](https://docs.gitlab.com/ee/user/operations_dashboard/)). | [LDAP](https://docs.gitlab.com/ee/administration/auth/ldap/#configuration-core-only), [admin-level push rules](https://docs.gitlab.com/ee/user/admin_area/#admin-area-sections) |
| Group | Features configured and used at the group level. These generally inherit behavior or objects down into subgroups (like epics, settings, or memberships). | [Epics](https://docs.gitlab.com/ee/user/group/epics/) |
| Project | Features used at the project level. | [Requirements Management](https://docs.gitlab.com/ee/user/project/requirements/) |
See https://www.youtube.com/watch?v=U8wTrxM35ow for a discussion with Sid on this topic outlining the problem and the concept of an "instance group".
## Problem
This leads to a few problems:
* 3 ways to build a feature leads to follow-on requests to build a feature at some other level (see meta issues like [group level things](https://gitlab.com/gitlab-org/gitlab/-/issues/17836)) and additional engineering effort.
* Restricts the audience, especially with instance level features. Many of these features are admin-only, which is a tiny percentage of most users on an instance. If we make a feature instance level, we're locking ourselves into a few thousand self-managed users and locking out GitLab.com users.
* Poor UX for instance-level things. We don't have a place to put instance level features, so cool features like the Operations Dashboard and the Security Dashboard get relegated to the "More" dropdown in the top navbar.
## Proposal
#### :tv: [Iteration discussion video](https://youtu.be/GmIn4O3GVWE)
#### ✏️ [Figma work file](https://www.figma.com/file/lrLPzCZRAC830p9kqezQBS/4257-Workspace-to-replace-instance-level-functionality-with-group-level-features?node-id=0%3A1)
While it would be ideal to have 1 way to build a new feature, most GitLab functionality should exist at the group level rather than the instance level at a minimum.
We should extract features from the admin panel into a new object called a *Workspace* that covers behavior for the entire instance.
* A workplace includes settings, data, and features from all groups, subgroups, and projects in an instance (including personal namespaces).
* A workplace allows settings to be defined and applied to all groups, subgroups, and projects in an instance
* Data from all groups, subgroups and projects in a workspace can be aggregated.
* There is a single workspace per instance that is accessible to instance administrators.
To make this happen we will need to:
* Consolidate groups and projects into a single object
* Epic: https://gitlab.com/groups/gitlab-org/-/epics/2885
* Architectural Blueprint: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/54792
* Build a consistent way to cascade settings down a group hierarchy https://gitlab.com/groups/gitlab-org/-/epics/4419
* We can then start to migrate existing settings and features into these new frameworks to have a consistent experience across GitLab.
#### Object model
| Current Self Managed and SaaS environments and the new conceptual workspace | Visual examples |
| ------ | ------ |
|  |  |
#### Iteration 1A
| In progress: https://gitlab.com/gitlab-org/gitlab/-/issues/300184 | - |
| ------ | ------ |
| Expose the "instance level" `NAMESPACE` Workspace with `Admin` / `Users`. |  |
#### Iteration 1B
| - | - |
| ------ | ------ |
| Expose the "instance level" `NAMESPACE` Workspace with `Groups` overview listing |  |
#### Iteration 1C
| - | Issues / List | Issues / Boards |
| ------ | ------ | ------ |
| Expose the "instance level" `NAMESPACE` Workspace with `Issues` / `Boards` |  |  |
#### Wireframes (object container)
| Workspace overview | Groups | Admin settings | New Admin settings |
| ------ | ------ | ------ | ------ |
|  |  |  |  |
## Related Epics and Issues
* https://gitlab.com/groups/gitlab-org/-/epics/4419
* https://gitlab.com/gitlab-org/gitlab/-/issues/218333
* https://gitlab.com/gitlab-org/gitlab-foss/-/issues/62802
* https://gitlab.com/groups/gitlab-org/-/epics/4257
* https://gitlab.com/groups/gitlab-org/-/epics/2885
* https://gitlab.com/gitlab-org/gitlab/-/issues/209020
* https://gitlab.com/gitlab-data/product-analytics/-/issues/48
epic