Web IDE Replacement w/ Theia
NOTE: No decision has been made to pursue the replacement at this point in time. ### Problem to solve <!-- What problem do we solve? --> The current Web IDE is only useful for the smallest of changes and things that don't require additional testing ([UXR#220](https://gitlab.com/gitlab-org/ux-research/issues/220)). In order to become a more valuable component of a developers toolkit we've set out on a path to build: * [Server Side evaluation in the Web IDE](https://gitlab.com/groups/gitlab-org/-/epics/167) * [Self-hosted client side evaluation](https://gitlab.com/groups/gitlab-org/-/epics/484) * [Lint, Format & Code Completion](https://gitlab.com/groups/gitlab-org/-/epics/70) * [Configurability of Web IDE](https://gitlab.com/groups/gitlab-org/-/epics/175) (Preferences, Highlighting, .editorconfig) * [Syntax Highlighting Parity](https://gitlab.com/groups/gitlab-org/-/epics/1474) Unfortunately, we've encountered [many](https://gitlab.com/gitlab-org/gitlab-ee/issues/4013#note_185709001), [many](https://gitlab.com/gitlab-org/gitlab-ee/issues/11078#note_174341149), [many](https://gitlab.com/gitlab-org/gitlab-ce/issues/58548#note_177999244) issues in getting Server Side and Self-Hosted evaluation complete. Not to mention the [complex configuration](https://gitlab.com/help/user/project/web_ide/index.md#file-syncing-to-web-terminal) and [hacks](https://gitlab.com/gitlab-org/webide-file-sync/issues/7) required to make some features work at all. These delays and blockers have prevented any progress from being made to support Linting, Code Completion, Syntax Highlighting and other preferences. ### Intended users <!-- Who will use this feature? If known, include any of the following: types of users (e.g. Developer), personas, or specific company roles (e.g. Release Manager). It's okay to write "Unknown" and fill this field in later. Personas can be found at https://about.gitlab.com/handbook/marketing/product-marketing/roles-personas/ --> We want to make it easy for **everyone** to contribute. Removing barriers will help people contribute more than fixes to typos and dead links, but allow people to contribute larger changes, offer more comprehensive code review suggestions and be able to do meaningful development in a cloud development environment. ### Further details <!-- Include use cases, benefits, and/or goals (contributes to our vision?) --> During the %12.1 and %12.2 milestones [initial investigation](https://gitlab.com/gitlab-org/gitlab-ce/issues/56812) was done on Theia with a primary goal of understanding some basics around architecture requirements and if it would accelerate features we're currently lacking. [Notes](https://docs.google.com/document/d/1b-dgL0ElBf_I3pbBUFISTYBG9VN02F1b3TERkAJwJ20/edit#bookmark=id.hsgc8rgapl9e) from that meeting and [video recording](https://drive.google.com/open?id=1O77OxKg9zuPUkoTmtGlQ6pOaGzf09NLp) are available (INTERNAL ONLY). The current Web IDE also boxes features important to delivering a `Complete` experience in the `Ultimate` tier which is inconsistent with our [Likely Buyer](https://about.gitlab.com/handbook/ceo/pricing/#the-likely-type-of-buyer-determines-what-features-go-in-what-tier) framework assuming the primary user of an IDE is an individual contributor developer. ### Proposal <!-- How are we going to solve the problem? Try to include the user journey! https://about.gitlab.com/handbook/journeys/#user-journey --> The current Web IDE should be replaced with a more complete container based IDE, namely [Theia](https://www.theia-ide.org/). Theia is a popular open source editor with over 100 contributors and supported by TypeFox, Ericsson, redhat, IBM, Google and others. By leveraging an existing open source project we can accelerate our delivery of key features required to deliver a `Complete` Web IDE to users. This allows GitLab to focus on delivering more value with the Web IDE through tighter integrations with other stages and less on features that larger communities are already building. GitLab can utilize an existing framework (CI Runner Minutes) for providing this feature to users across all tiers with an included number of usage minutes and with additional up-sell opportunities for more usage. ### What does success look like, and how can we measure that? <!-- Define both the success metrics and acceptance criteria. Note that success metrics indicate the desired business outcomes, while acceptance criteria indicate when the solution is working correctly. If there is no way to measure success, link to an issue that will implement a way to measure this. --> Success sees more usage out of the Web IDE for more advanced tasks. We should see more larger commits to file types that aren't `.md, .html`. As we begin to measure `time in IDE` we should see that increase as the Web IDE becomes more full featured. ### Risks There currently exists a set of identified risks and issues that need to be solved in order to implement Theia. Initial problem statements have been proposed below: - [The Web IDE requires attached compute to run](https://gitlab.com/gitlab-org/gitlab-ce/issues/65083) - [Startup time of the Web IDE](https://gitlab.com/gitlab-org/gitlab-ce/issues/65084) - [default on for self-managed GitLab installation](https://gitlab.com/gitlab-org/gitlab-ce/issues/64939) - [security of shared containers on `.com`](https://gitlab.com/gitlab-org/gitlab-ce/issues/65085) There is also an inherent opportunity cost to our existing Web IDE and other responsibilities of ~"group::editor".
epic