VS Code or VS Codium - Which should I choose?

You may have heard of VS Codium as an alternative to Visual Studio Code (VS Code) and may be wondering which you should choose. They are very similar but there are some differences. Which one is best for you?

A comparison of VS Code and VSCodium

VS Code is a mostly open-source code editor, with proprietary sprinkles on top, and a proprietary extension marketplace.

VS Codium is a fully open-source alternative based on the same codebase.

The majority of the code behind the code editor is available in a GitHub repo (microsoft/ vscode) under a MIT license. It is referred to as the “Code - OSS” repo by Microsoft. There is a build process that takes the code in this repo and creates a customized product that is the actual software that you install and use.

VS Code VS Codium
Organisation Microsoft VSCodium
Repository license MIT MIT
Product license Microsoft product license MIT
Build process Microsoft has a custom build that clones the “Code - OSS” repo and adds some Microsoft customizations to create the final product with a different license. VSCodium clone Microsoft’s “Code - OSS” repo and add some community-based customisations to create the final product.
Marketplace (registry) Microsoft Visual Studio Code Marketplace. The marketplace code is proprietary. The Terms of Use state that extensions in the marketplace are only to be used with Microsoft products. Open VSX Registry. The marketplace code is open-source (Eclipse Public License 2.0). There are no restrictions on the use of extensions.
Proprietary extensions You can use all Microsoft extensions. A few of Microsoft’s extensions are restricted. Some are blocked from running outside of VS Code.
Telemetry (data sharing) Enabled by default. Disabled by default. Restricted as much as possible.

Let’s look at these aspects one by one.

Organisation

Microsoft is a big 'ol software company. Don’t be misled by the name.

VSCodium is some open-source folks (I guess).

Licensing

Both the source code of VS Code and VS Codium are under a MIT license.

The built application of VS Code is under Microsoft product license, whereas VS Codium is under a MIT license.

Build process

According to this comment from a Visual Studio Code maintainer:

When we [Microsoft] build Visual Studio Code, we do exactly this. We clone the vscode repository, we lay down a customized product.json that has Microsoft specific functionality (telemetry, gallery, logo, etc.), and then produce a build that we release under our license.

When you clone and build from the vscode repo, none of these endpoints are configured in the default product.json. Therefore, you generate a “clean” build, without the Microsoft customizations, which is by default licensed under the MIT license

Microsoft’s build process also downloads additional files. This was brought up in Microsoft/vscode#141340 and Microsoft/vscode#45978. These are the packages downloaded during build:

VS Codium was created to save you from downloading and building from source yourself, and adds some community customization. The resulting binaries are added to the releases section of the vscodium repo.

Marketplace (registry)

VS Code is configured to use the Microsoft VS Code Marketplace. Its Terms of Use restricts access to Microsoft and GitHub products only. A number of key Microsoft extensions are only allowed to be used with Microsoft products, the legalese wording of this is the following from section 1b:

Marketplace Offerings are intended for use only with In-Scope Products and Services and you may install and use Marketplace Offerings only with In-Scope Products and Services

The code to the marketplace is proprietary. As a result, the source code cannot be reused to create an internal extension registry for developers, or to contribute new features and enhancements to the marketplace. The naming irks me, why call it a marketplace when you can’t sell anything!

While there is no indication that it will happen, there is nothing stopping Microsoft from changing the terms and conditions in the future. It leaves the door open for them to pivot if they wish to do something commercial.

To publish an extension to the marketplace, it requires some hoop-jumping. You must have a Microsoft/Azure account and follow some odd steps.

VS Codium is configured to use its Open VSX Registry. This registry is developed and maintained under the Eclipse Open VSX project. It is vendor neutral, so it can be used with any technology or tool. Examples are: VSCodium, Eclipse Theia, Eclipse Che, Gitpod, Coder, and SAP Business Application Studio.

The code is completely open source. So, it is possible for anyone to create their own registry and use it privately. As a result, you can maintain precise control over your extension’s availability. This is very similar to common practice found in other ecosystems such as npm, Cargo, and Maven.

Since the Microsoft VS Code Marketplace is more established and has more users, you are likely to miss some extensions that are available there. You have the following options to obtain the missing extensions:

To publish to the Open VSX marketplace has less requirements and steps than Microsoft’s set-up.

Both marketplaces offer a CLI tools to publish and manage your extensions, vsce for VS Code, and ovsx for Open VSX. They are quite similar.

I have written a number of extensions, and I use the publish-vscode-extension GitHub action to publish my extensions to both marketplaces.

Proprietary extensions

Some VS Code extensions have licenses that restrict their use to the official Visual Studio Code builds. You can download the .vsix file for these extensions from the VS Code Marketplace and manually install them. Though technically, you are breaking the license. If you ignore the licenses and try to run them in VS Codium, some extensions don’t work because there is an internal check that prohibits them from running outside of VS Code.

Here is a list of some of the extensions with restricted licenses/usage:

There are more too - here is a list of Microsoft extensions with their licenses.

Telemetry (data sharing)

As Microsoft states in their docs on telemetry:

Visual Studio Code collects telemetry data, which is used to help understand how to improve the product. For example, this usage data helps to debug issues, such as slow start-up times, and to prioritize new features. While we appreciate the insights this data provides, we also know that not everyone wants to send usage data and you can disable telemetry as described in disable telemetry reporting.

There are telemetry settings, telemetry.telemetryLevel and telemetry.enableCrashReporter, which are enabled in VS Code by default. These settings do not turn off telemetry 100% (as stated in section 2.a of the license).

When you first install VS Code, you are presented with a dialog giving you the option to opt out of telemetry.

VS Codium turns these telemetry settings off by default, and the organization looks to restrict all telemetry.

Extensions do not follow the global settings. Some of Microsoft’s extensions send telemetry data such as the C# language extension and the extensions in the Remote Development extension pack. To quote Microsoft:

VS Code lets you add features to the product by installing Microsoft and third-party extensions. These extensions may be collecting their own usage data and are not controlled by the telemetry.telemetryLevel setting. Consult the specific extension’s documentation to learn about its telemetry reporting and whether it can be disabled.

So, if you want to opt out of all telemetry, then you need to look at your extensions also.

I discuss this topic in more depth in the following article, VS Code - What’s the deal with the telemetry?.

Should you switch from VS Code to VS Codium?

The answer is “Yes”, if you want to:

If the answer is “No” to the above points, then you don’t have a reason to switch from VS Code. I see it as an ethical decision really.

I have been using them side-by-side for a while, and my experience is the same with them both now. Switching was a smooth experience for me, but I have seen some people have some issues.

The only limitation with VS Codium is the absence of a few of the proprietary Microsoft extensions in the Open VSX marketplace, however there are some alternatives for most of them. C# appears to be covered. It is up to the community to make their own versions of these extensions to make things exactly the same.

Tagged