Shared user lists for Feature Flag strategies
Problem to solve
After rolling out feature flags with the ability to turn them off or on per environment. We added the ability to control percent rollout based on users (https://gitlab.com/gitlab-org/gitlab-ee/issues/8240). However, it is quite tedious to add lots of users over and over again per flag/environment, creating lists will create a container that is convenient to use and reuse.
Intended users
- Developers who create feature flags
- QA engineers enabling/disabling flags
- Release managers who want to control which features are released and to which customer base
- Support engineers that wish to release features to beta customers or test version to fix bugs for specific customers
Further details
We want to create lists that users can be associated to - this will serve as a container.
Feature flags can later use these lists in order to enable/disable features per list and environment.
For the first iteration, lists will serve as a simple container.
In the future, we would like to import/export users from a list We would like to create complex lists - not only as a list of users but also users that meet a specific criteria such as email extension (i.e @gitlab.com), belong to a specific customer tier, age (based on create date) etc.
We would later also associate the feature flag list to the epic/issue
Proposal
Support for creating the list strategy via API will be developed in #205409 (closed). This issue is to extend support in the UI based on the UX proposal below.
Add lists as a container for a list of users that can be referenced by feature flags.
UX proposal
Add the ability to create a list and define users within it.
- Add a button to the feature flags list page to allow new lists to be created
- Add a new list screen
- Users can name a list
- User can save a list
- Add a screen to manage users within a list
- Users can see a list of users
- Users have the ability to add users
- Users can delete users
- Users can edit the list (name) Add a tab to the feature flags list page to view a list of lists
- Users can edit lists
- Users can delete lists
- List items should display
- list name
- created date
- modified date
- modified by
- expandable list of user ids
Description | Mockup |
---|---|
Lists tab | |
List tab empty state | |
New/Edit | |
List details empty state | |
List details | |
Add users modal |
Note: This proposal would eliminate the Enabled/Disabled tab that are useful views for sorting feature flags. The intent is to reintroduce this functionality in #35558
Future considerations
- We will likely want to introduce additional group types in the future.
- Possible other future enhancements could include:
Permissions and Security
A list can only be created by someone that is a maintainer of a project or higher.
Documentation
Testing
What does success look like, and how can we measure that?
- Number of times a list is added/removed to a feature flag
- Number of times a user is added/removed to a list