Remote Development Environments
## Problem to Solve Currently GitLab supports editing multiple files within a single interface, but many important features of a typical local development environment are missing like linting, formatting and live preview of changes. This makes it harder to resolve feedback in merge requests, fix small bugs when reading source code, or contribute to new projects. ## Vision We want the Web IDE to be the fastest and easiest way to contribute to a project on GitLab. ## Additional Details Contributing to a new project has numerous barriers, one of which is setting up a local development environment. In open source projects or private organizations that have large complex development environments it may be challenging to setup a proper environment and require a significant amount of time just to get started. This strategy has been evaluated multiple times for the Web IDE through various different paths: 1. [Server Side Evaluation](https://gitlab.com/groups/gitlab-org/-/epics/167) - The Web IDE has no attached compute and therefore users can't execute or test their changes prior to commit. Numerous options were evaluated to utilize GitLab runners to achieve this capability, but they were met with [continued challenges](https://gitlab.com/gitlab-org/gitlab/-/issues/4013#note_185709001). 1. [Container Based Web IDE (Theia)](https://gitlab.com/groups/gitlab-org/-/epics/1619) - Theia was evaluated as a POC for replacing the Web IDE with a more complete and containerized solution. Successful prototypes were developed that were able to utilize existing runner infrastructure and provide a complete development environment to users. Additional details are available [here](https://gitlab.com/gitlab-com/www-gitlab-com/-/merge_requests/33310/diffs) ### Current GitLab K8s Landscape - [Less than 1% (~1600)](https://app.periscopedata.com/app/gitlab/441909/Active-Instances) of active GitLab instances are currently using helm based installations. - `<INSERT DATA ABOUT K8s BASED RUNNERS>` ## Competitive Landscape On 6 May 2020, GitHub announced [Codespaces](https://github.com/features/codespaces) which provides a ready to go VS Code environment in the browser for projects. [GitPod.io](GitPod.io) is a commercial offering from developers of the [Theia IDE](https://theia-ide.org/) project. [Coder](https://coder.com/) created [code-server](https://github.com/cdr/code-server) which allows running VS Code on a remote server. [Tilt](https://tilt.dev/) provides development tooling for applications with microservices architectures. As you code, Tilt updates your container environment and provides near real time feedback. [Okteto](https://okteto.com/) provides a development platform for developers based on K8s that works with any IDE allowing you to develop and test your code. [Dev Pods](https://jenkins-x.io/docs/reference/devpods/) allow users to test and preview code based on the same operating system, docker containers and tools available in CI/CD Pipelines. ## Proposal At this time (7 May 2020) it's not clear what a path forward for this might be. We'll continue to evaluate this space.
epic