[go: up one dir, main page]

Skip to content

Process of building AI Features for various IDEs

Overview

The IDE team are building extensions targeting various IDEs. The following is the list of IDEs that we want to eventually support

  1. VS Code
  2. Web IDE
  3. Jetbrains IDEs (Intelij, Ruby Mine, etc)
  4. Visual Studio
  5. NeoVim

We have an existing extension in the marketplace for VS Code, the rest of the extensions are work in progress.

Unfortunately, because each of these IDEs are built on different platforms it is not possible to target all IDEs using a single extension and therefore each of the IDEs have different extensions which require a different set of skills. For example the VS Code extension and Web IDE use typescript. The extension for the Jetbrains IDEs use Kotlin and the Visual Studio IDE uses c#.

Building IDE Extensions for various platforms:

  1. VS Code & Web IDE - For VS Code and Web IDE, we are working on a unified way to build extensions. Essentially, the team will have to build an extension that will target the desktop environment (VS Code) and contribute code to the GitLab VS Code Extension(aka GitLab Workflow Extension) and using our build process we can automatically build the same extension for Web IDE. The work to ensure that we can target both platforms is underway and can be tracked in this epic. Once the work for that epic is completed, the AI enablement team can build a single extension that will work on both platforms. An example of such an extension is the Code Suggestions feature.

  2. Jetbrains IDEs - The work on building an extension for the JetBrains IDEs is in progress. Code can be contributed to the repository and needs to be written in Kotlin.

  3. Visual Studio - Similar to the JetBrains extension, the code for the extension is currently in the POC phase and further code can be contributed to the WIP repository.

  4. VIM, Emacs, Sublime, etc - Right now for these platforms we only support a LSP extension. LSP is limited in what can be done with it and therefore it’s suitable for only a few use cases such as code completion. The code for the LSP repository is here.

Edited by Shekhar Patnaik