UX Stories: Code Suggestions for Self-Managed
**Status:** {+Proposal pending UX review+}
GitLab Plus' [Iteration 1](https://gitlab.com/groups/gitlab-org/-/epics/10528https://gitlab.com/groups/gitlab-org/-/epics/10528) will enable Code Suggestions for SM developers using VS code IDEs. This requires UX consideration between two personas, and three environments.
* An instance administrator, who manages the self-managed instance. They will need to perform actions on GitLab SaaS and in their self-managed instance.
* Developer, who is looking to actually use the code suggestions feature. They will need to perform actions in their IDE.
Please refer to https://gitlab.com/gitlab-org/gitlab/-/issues/411676 for a technical overview.
## UX Flow Overview
Note: This flow is different between SaaS and self-managed. We need to make this clear in our documentation.
| In SaaS | In SM Instance | In User's IDE |
|---------|----------------|---------------|
| <span dir="">SM admin creates a free personal account</span> \[1\] | | |
| <span dir="">SM admin creates personal access token (PAT) for personal account</span> \[2\] | | |
| | <span dir="">SM admin stores PAT into SM instance</span> \[3\] | |
| | <span dir="">SM admin enables code suggestions functionality for their instances</span> \[4\] | |
| | | <span dir="">User configure SM user account against SM instance</span> \[5\] |
\[1\], \[2\]: This functionality exists independently of Code Suggestions.
\[3\]: This functionality is net new.
\[4\], \[5\]: We may be able to inherit design patterns from code suggestions, but will likely need to customize parts of this for SM.
## Key Tasks, by Persona
This section describes items we will need to provide documentation
#### Instance Administrator
<table>
<tr>
<th>In Scope for MVC?</th>
<th>Responsibility</th>
</tr>
<tr>
<td>Yes</td>
<td>Accept GitLab's Testing Agreement</td>
</tr>
<tr>
<td>Yes</td>
<td>Update GitLab instance to a version that will support Code Suggestions</td>
</tr>
<tr>
<td>Yes</td>
<td>Enable Code Suggestions access for their instance</td>
</tr>
<tr>
<td>Yes</td>
<td>
Create personal account on SaaS
* Used to create a personal account token; in MVC this personal token will be used to represent the SM instance to GitLab SaaS
</td>
</tr>
<tr>
<td>Yes</td>
<td>
Connect their self-managed instance to Plus.
* We will minimize friction by abstracting away the concept of "Plus" as much as possible
* They will need to store their personal account token in their instance
</td>
</tr>
<tr>
<td>
**Maybe**
</td>
<td>Configure their self-managed instance to accept an internet connection to Plus.</td>
</tr>
<tr>
<td>No</td>
<td>
Create service account on SaaS
* This will eventually replace the personal account requirement for SM instance administrators
</td>
</tr>
<tr>
<td>No</td>
<td>Enable / disable access to code suggestions for each individual SM instance user</td>
</tr>
</table>
#### Developer
| In Scope for MVC? | Responsibility |
|-------------------|----------------|
| Yes | Download a Code-Suggestion-compatible version of GitLab's VS Code workflow extension |
| Yes | Configure local VS Code IDE with self managed instance |
## Functional Considerations
* Code Suggestions is enabled separately from all other AI features. Our solution here should be narrowly scoped but extensible.
* Legal constraints: https://gitlab.com/gitlab-org/gitlab/-/issues/412337
epic