Replace Web IDE with client-only VS Code
## Problem Statement The GitLab Web IDE is in a sort of in-between area. It's not a full "IDE" in that it can't compile code and it's not customizable to match a developer's personal workflows. But it's also way more powerful than our Web Editor, a single-file editing experience that is super fast but can be limiting if you want to do anything more than fix a typo or write some Markdown. ## Solution Replace the current Web IDE, which is based on the open sourced Monaco editor, with a client-side instance of VS Code and implement custom extensions for creating commits and interacting with MRs. ## Benefits - Dramatically improved usability and feature complete-ness - Ability to customize the theme and syntax highlighting from within the editor - Access to VSCode extensions to customize the user experience ### Web IDE issues this addresses With the implementation of a more mature open source editor, we will be able to close a number of issues and feature requests. See https://gitlab.com/gitlab-org/gitlab/-/issues/355797 for more detail ## Risks / Drawbacks - VS Code has a huge percentage of the IDE market but some people may prefer other editors. - The current Monaco-based Web IDE is exceptionally simple and we'll be increasing the complexity of the editor, potentially making it harder for non-developers to contribute. ## Iterations This is a large task but very achievable in the near term. We already have a functional proof of concept. To get to a production-ready implementation we'll follow this approach: 1. ~~Convert the proof of concept to a read-only instance deployed to `gitlab-org` behind a feature flag.~~ :heavy_check_mark: 2. ~~Build a custom git module for VS Code~~ :heavy_check_mark: 3. ~~Handle commits from the new editor~~ :heavy_check_mark: 4. ~~Launch Beta on~~ ~~Gitlab.com~~ :heavy_check_mark: 5. Pre-install the GitLab Workflow VS Code extension to handle MR workflows 6. ~~Launch to a small number of users and solicit feedback~~ (moved to earlier, beta release) 7. Enable extensions for Self-managed users behind a feature flag 8. Allow users to opt-in to using extensions after accepting the privacy statement 9. Allow self-managed admins to enable extensions in the Admin interface 10. Self-managed admins can create an allow-list for extensions 11. ~~Re-implement Web Terminal functionality~~ :heavy_check_mark: The Remote Development MVC gives you access to an interactive terminal. 12. ~~Re-implement Live Preview functionality~~ (not going to do this) 13. Remove the "old" Web IDE code 14. Search across a project
epic