The objective of this project is to manage runtime extensions for cloud IDEs such as Theia. A runtime extension is one that can be plugged into a running application. In contrast, a compile-time extension is one that is baked into the application when it is built. Theia currently supports both: runtime extensions (plug-ins) using the VS Code extension API and compile-time extensions using the Theia extension API. The latter are already published to the npm Package Registry and are therefore not in the scope of this project.
The initial focus will be on extensions that follow the VS Code extension API. Further extension formats may be added in case Theia or other relevant cloud IDE projects decide to abandon the VS Code format. This is rather unlikely, but in theory such a step could become necessary because the VS Code format is governed solely by Microsoft.
The Extension Registry will include the following components:
- Manage the metadata of VS Code extensions in a database
- Store extension packages with a file storage service
- Upload / download extensions and fetch their metadata through a REST API
- Upstream mode: configure an upstream server instance to delegate requests in case they cannot be handled locally
- Web application for searching extensions and reading their details
- Read and write reviews (star-ratings and comments)
- Manage access tokens for publishing
- Authenticate users via OAuth
Command Line Interface (CLI)
- Publish extensions from the command line using an access token
The following topics are not on the initial agenda, but are potentially in the scope of this project:
- Mirroring of multiple server instances
- More CLI features such as resolution of extension versions and their dependencies
- Support additional runtime extension formats
The following topics are not in the scope of this project:
- Manage compile-time extensions
- Integration of the Extension Registry in Theia (manage installed extensions etc.). This is done within the Theia project.