The IDE component in Gitpod is responsible for packaging and managing the various Integrated Development Environments (IDEs) that are available to users within Gitpod workspaces. It includes support for VS Code (both web and desktop versions) and JetBrains IDEs, providing the necessary files, configurations, and integration points for these IDEs to work seamlessly within the Gitpod environment.
The primary purposes of the IDE component are:
- Package and distribute IDE binaries for use in Gitpod workspaces
- Configure IDEs to work within the Gitpod environment
- Provide integration between IDEs and the Gitpod platform
- Support multiple IDE types (VS Code, JetBrains)
- Enable both web-based and desktop IDE experiences
- Manage IDE versions and updates
- Provide IDE-specific extensions and plugins
The IDE component is organized into several sub-components, each responsible for a specific IDE or IDE family:
- Code: Packages VS Code (OpenVSCode Server) for web-based usage
- Code-Desktop: Packages VS Code for desktop usage
- JetBrains: Packages various JetBrains IDEs (IntelliJ, GoLand, PyCharm, etc.)
- Xterm: Provides terminal functionality
Each IDE sub-component typically includes:
- Dockerfiles for building IDE images
- Configuration files for IDE integration
- Scripts for downloading and setting up IDE binaries
- Plugins or extensions for Gitpod integration
code/BUILD.yaml
: Build configuration for VS Codecode/leeway.Dockerfile
: Dockerfile for building VS Code imagecode/codehelper/
: Helper utilities for VS Codecode/gitpod-web-extension/
: Gitpod-specific VS Code extension
jetbrains/image/
: JetBrains IDE image buildingjetbrains/image/BUILD.js
: Build script for JetBrains IDE imagesjetbrains/image/leeway.Dockerfile
: Dockerfile for JetBrains IDE imagesjetbrains/image/supervisor-ide-config_*.json
: IDE-specific configuration filesjetbrains/backend-plugin/
: Backend plugin for JetBrains IDEsjetbrains/gateway-plugin/
: Gateway plugin for JetBrains remote developmentjetbrains/launcher/
: Launcher for JetBrains IDEsjetbrains/cli/
: Command-line interface for JetBrains IDEs
- Web-based VS Code (OpenVSCode Server)
- Desktop VS Code
- IntelliJ IDEA
- GoLand
- PyCharm
- PhpStorm
- RubyMine
- WebStorm
- Rider
- CLion
- RustRover
Each JetBrains IDE is available in two versions:
- Stable: Regular release version
- Latest: Latest EAP (Early Access Program) or RC (Release Candidate) version
- Clones the OpenVSCode Server repository
- Builds the web and desktop versions
- Packages the built binaries into a Docker image
- Configures the image for use with Gitpod
- Downloads the specified JetBrains IDE binary
- Creates a Docker image with the IDE binary
- Configures the IDE for use with Gitpod
- Sets up the necessary plugins and extensions
The IDE component integrates with:
- Supervisor: For launching and managing IDEs within workspaces
- Workspace: For accessing workspace content
- IDE Service: For resolving IDE requirements
- Blobserve: For serving static IDE assets
- Registry Facade: For providing IDE images
Each IDE has specific configuration requirements:
- Extensions to be pre-installed
- Web configuration for browser-based usage
- Desktop configuration for desktop usage
- IDE-specific configuration files
- Backend plugin configuration
- Gateway plugin configuration
- CLI configuration
supervisor
: For IDE lifecycle managementide-service
: For IDE resolutionblobserve
: For serving static assetsregistry-facade
: For image management
- VS Code (OpenVSCode Server) source code
- JetBrains IDE binaries
- Various build tools (Node.js, npm, etc.)
The IDE component is typically used to:
- Build and package IDE images for use in Gitpod workspaces
- Configure IDEs for optimal use within Gitpod
- Provide integration between IDEs and the Gitpod platform
- Support both web-based and desktop IDE experiences
- Manage IDE versions and updates
- IDE Service: Resolves IDE requirements and manages IDE configurations
- IDE Proxy: Proxies requests to IDEs
- Supervisor: Manages IDE lifecycle within workspaces
- Blobserve: Serves static IDE assets
- Registry Facade: Provides IDE images