1st Class Editing Experiences for GitLab features
## Problem to Solve There are many unique to GitLab files that users interact with as part of their experiences in working with GitLab. These items include: - [.gitlab-ci.yml](https://docs.gitlab.com/ee/ci/yaml/) - [Code Owners](https://docs.gitlab.com/ee/user/project/code_owners.html) These files have GitLab specific syntax and constructs that can be hard to remember or require looking up additional documentation. This slows developer productivity as they try to work with these files. ## Vision We want editing GitLab specific files to be effortless inside of the Web IDE. Users shouldn't need to work with documentation open while they're editing these files, but rather the editor should help developers accomplish their goals. ## Additional Details The `.gitlab-ci.yml` file has nearly 30 [configuration parameters](https://docs.gitlab.com/ee/ci/yaml/README.html#configuration-parameters). Some of these parameters only accept a specific input, and some of them can be more varied. Finally the `.gitlab-ci.yml` file needs to be [validated](https://docs.gitlab.com/ee/ci/yaml/README.html#validate-the-gitlab-ciyml) to make sure it's following all the correct rules. The Code Owners [file syntax](https://docs.gitlab.com/ee/user/project/code_owners.html#the-syntax-of-code-owners-files) uses path based syntax coupled with GitLab group/usernames to create rules. Paths are relative to the project route, but may be challenging to get correct. More importantly, groups and member usernames may not be intuitive and engineers may spend time looking for those values. ### Other editing experiences While there isn't necessarily specific syntax or features here, it may be useful to help users with other autocomplete activities people might use in issues or merge requests related to quick actions. - [Issue Templates](https://docs.gitlab.com/ee/user/project/description_templates.html#creating-issue-templates) - [Merge Request Templates](https://docs.gitlab.com/ee/user/project/description_templates.html#creating-issue-templates) ## Proposal GitLab should create autocomplete libraries for specific editing experiences inside of the Web IDE. ### What could this look like? **`.gitlab-ci.yml`** As a user when I start typing `envir....` we should suggest/tab complete that to `environment`. If the user adds `:` after `environment` we should provide tab completion for the 5 available options. Near where the user is typing, we should provide information on what the `environment` variable does. Something along the lines of: ``` `environment` is used to define that a job deploys to a specific environment. ```
epic