This proposal has been approved and the Eclipse Open VSX project has been created.
Visit the project page for the latest information and development.

Eclipse Open VSX Registry

Friday, November 8, 2019 - 03:03 by Miro Spönemann
This proposal is in the Project Proposal Phase (as defined in the Eclipse Development Process) and is written to declare its intent and scope. We solicit additional participation and input from the community. Please login and add your feedback in the comments section.
Parent Project
Proposal State
Created
Background

Eclipse Theia is approaching its first major release later in March 2020. One of the big features is its support for VS Code-compatible extensions. Microsoft is running a marketplace hosting more than 16 000 such extensions; most of them are available under an open-source license and are developed by third parties. Unfortunately, Microsoft does not allow access to the marketplace from outside a Visual Studio product.

So, Theia users cannot install anything from that marketplace, but have to obtain the extensions elsewhere (e.g. build them from source). This is obviously very inconvenient and will harm further adoption of Theia as well as the cloud tools that depend on it, such as Eclipse Che.

Additionally, high demand exists within the VS Code community for an extension registry than can be hosted within a company network and is able to contain proprietary, non-public extensions.

Scope

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:

Server

  • Manage VS Code extensions and their metadata in a database
  • Upload / download extensions and fetch their metadata through a REST API
  • Proxy mode: configure an upstream server instance to delegate requests in case they cannot be handled locally

Web Interface

  • 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:

  • Use multiple database types (key-value store / multi-model DB) to improve performance
  • 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.
Description

Open VSX Registry is a vendor-neutral open-source alternative to the Visual Studio Marketplace. It provides a server application that manages VS Code extensions in a database, a web application similar to the VS Marketplace, and a command-line tool for publishing extensions. A public instance of the Registry is hosted by Eclipse (TBD), but more instances can be freely deployed in public or private places.

The primary purpose of this project is to provide a marketplace for VS Code extensions that can be used with Eclipse Theia and other IDEs. Another important goal is to allow self-hosting the Registry, e.g. within a company network. None of this is currently possible with the VS Marketplace, which is proprietary and may be accessed only from Visual Studio products.

Why Here?

The vast majority of VS Code extensions is developed under the MIT or a similar license. To make those extensions available to all Eclipse Theia adopters, they should be hosted by a vendor neutral organisation.

Future Work

Once a public instance is running, the interesting question is how to fill it with useful VS Code extensions. This will require community building, e.g. by providing maintainers of existing extensions with a few simple steps to publish their work to our new marketplace.

While the number of published extensions grows, it will be important to monitor the performance and security aspects. The main goal for the next year will be to make the Extension Registry a reliable service for all users of Eclipse Theia and its adopting projects (Eclipse Che, Eclipse Codewind, etc.)

Project Scheduling

The first working draft of the Extension Registry will be available in December 2019. The initial contribution can be submitted as soon as the working draft is done. The next steps will be to implement a deployment process and to apply that to a public instance that can be used with Theia (early 2020).

Interested Parties
  • TypeFox
  • SAP
  • IBM
  • Red Hat
Initial Contribution

The initial contribution was created by TypeFox. It consists of a working draft of the project’s main components (server, marketplace, CLI). The initiation of this project was already announced at EclipseCon Europe 2019, and we found a lot of interest among other adopters of Theia (Red Hat, SAP, IBM etc.)

The server implementation is written in Java and has the following direct dependencies:

  • Quarkus (Apache Software License 2.0)
  • Guava (Apache Software License 2.0)
  • Elasticsearch (Apache Software License 2.0)
  • PostgreSQL (PostgreSQL License, similar to MIT)

The indirect dependencies of Quarkus are also available under ASL 2.0 or compatible licenses.

The marketplace implementation is written in TypeScript and has the following direct dependencies:

  • React (MIT License)
  • Material-UI (MIT License)
  • markdown-it (MIT License)
  • date-fns (MIT License)
Source Repository Type