Microsoft's Visual Studio Code, commonly just called VS Code, is a great piece of software. This is in no small part due to all extensions on the extensive marketplace providing extreme flexibility. It has proven it to be adaptable to most, if not all, software development projects.

My editor of choice, neovim, provides no such benefits out of the box, requiring me to configure everything, install language plugins, code completion, myself.

Vim and neovim are by far more powerful editors, but lacking the ease-of-use of VSCode, and easy discoverability of new features; I don't recommend beginners to use these. Configuration is done through code, not a nice UI allowing you to browse a marketplace and take popularity into consideration when choosing between different plugins for the same task.

And while both pieces of software are distributed as open-source software, Microsoft is actively preventing the modification and distribution of the source code under the ethos of open-source.

What is Open-source Software?

For software to be considered "open-source", you must be able to make modifications, distribute the modifications, and run the software or your modified software for any purpose without any restrictions.

The term "open-source" is predated by "free software"

The FSF (free software foundation)'s goal was to promote the development and use of free software, which they defined as software that grants users the freedom to run, study, share, and modify the code.1

"Free software" had a unclear meaning however, as "free" is unclear. It was free as in "free speech", not "free beer". "Open-source" was coined instead to avoid confusion.

While Richard Stallman and FSF didn't adopt this, as the term might indicate you only had the ability to inspect software, the Open Source Initiative still governs the core principles; that open-source software can be modified and shared, regardless of its purpose.

OSI have reviewed many licenses. They have have published a list of approved licenses that meet the criteria of open-source.

Distributing Source Code is not Open-source.

MongoDB is a database engine by MongoDB Inc.2 who provides hosted MongoDB databases as a service. The source code for MongoDB is available under the conditions of their own proprietary SSPL license. The license provides a lot of flexibility in how you can use the software; you can even use it with no licensing fees to power your own web applications. But if you offer MongoDB as a service; the license impose some extreme requirements.

MongoDB's approach is IMHO reasonable and fair. They are basically making the software freely available to anyone who is not a direct competitor to their own hosted service.

But it's not open-source, as you do not have the freedom to modify and run the code without restrictions. The license was rejected as an open-source license by OSI, Red Hat, and Debian.

How Visual Studio Code Violates the Ethos

Visual Studio Code is distributed under the MIT license, a permissive license that allows you to do anything with the source code. This license is recognised by the OSI as an open-source license. And quite predictably, a few forks of VSCode exists. VSCodium seems to be the most popular.

This was all perfectly well, if it wasn't because of the barriers Microsoft impose on derived works ...

VSCode has little value without any extensions. The VSCode marketplace has an almost infinite list of extensions, so almost no matter which tool or language you use, you will find an extension to provide support. If you want a new programming language to succeed, it's almost vital that you have proper VSCode integration.

Microsoft also provides VSCode extensions as well. And this is where the problem lies, as you are not allowed to use these extensions in any a fork of VSCode. Two popular extensions provided by Microsoft are pylance and C/C++ for Visual Studio Code. Both of these contain the following condition in their license:

You may install and use any number of copies of the software only with Microsoft Visual Studio, Visual Studio for Mac, Visual Studio Code, Azure DevOps, Team Foundation Server, and successor Microsoft products and services to develop and test your applications.

The "Open-source Theatre"

I call this the "Open-source Theatre", somewhat inspired by the "Security Theater"

Security theater is the practice of implementing security measures that are considered to provide the feeling of improved security while doing little or nothing to achieve it.3

So while Microsoft distributes VSCode itself as an open-source product, providing a feeling of commitment to open-source, they are not just "doing little" to achieve it, they are actively fighting against this. The ethos dictates that you should be able to make modifications and run without restrictions, but they are actively placing barriers on those modifications.

I would call this a legal loophole, as they managed to place open-source software in a context where they can violate the principles of open-source in the surrounding context.

The Value of VSCode is it's Community.

As I mentioned, I think VSCode is a good product, particularly as your first editor.

The value of VSCode comes from the ecosystem of extensions. While some are developed by Microsoft, the majority are developed by individuals or small teams made who provided their solutions as free and open-source software. In effect, a large number of individual developers are increasing the value of VSCode, often in their spare time; but under the assumption that they are contributing to an open-source community.

This isn't just a theoretical case, of some outdated licenses they forgot to update. Microsoft are actively enforcing the restriction, as this issue from the vscodium project shows. The plugin used to work from VSCodium, but Microsoft has actively taken measures to prevent this.

To be fair

While researching for this article, I notice that the restrictions is in the license for the compiled .vsix file distributed to the VSCode marketplace. Their source code have more permissive licenses. Maybe you could compile the extensions your self and use them? But the situation isn't clear from what I learned.

pylance has a license I think should be fine, but it's not an OSI approved license.4 At first, things looked better for the C/C++ extension, as it uses the OSI approved MIT license. But it also includes a notice that the code depends on runtime files "built and distributed by Microsoft; these are governed by the more restrictive proprietary license".

I did not research whether you could legally use these plugins if you were to compile them yourself. So these two plugin could be possible, but requiring extra work.

It doesn't change the fact that Microsoft are taking steps to actively prevent using the compiled version distributed to the VSCode marketplace, thus actively imposing barriers for VSCode forks.

Conclusion

The revolution of open-source software is by far the most important change in the software industry I've witnessed during my career. When I started, software development required the purchase of tools, compilers and component libraries. Bugs in libraries meant bugs in your own code; with no ability to fix them yourself.

Open source has democratised software development. Large companies like Netflix, Meta, Google, have distributed tools as free and open-source software.

And the linux kernel is a massive open-source project. It's safe to say that the internet runs on Linux; and Google is also making a fair bit of profit from 2.5 billion active Android devices.

Even VSCode is build on the open-source Electron framework, created by Github (later acquired by Microsoft) as a foundation for their Atom editor. And Electron is based on Chromium, the open-source core powering Google Chrome.

I don't argue that companies are obligated to distributing their products as open-source. Not at all. One of my favourite pieces of software, Obsidian is closed source, and I have no objection to that. They as a company need to make a profit, and they are free to chose their own strategy.5

But I do expect when a company release a product as open-source, they support the ability to modify and distribute, rather than actively imposing barriers for derived works, while using this legal loophole to justify an "open-source" label.

Open-source is the foundation for a free internet.6 Open-source is important. Open-source is worth fighting for.

But in the land of open-source software, VSCode is a wolf in sheep's clothing. It should be exposed for what it is.

If you are using VSCode, I encourage you to try something new. See if VSCodium works for you. Or if you are ready to move on to vim or neovim (see my getting started guide for some batteries-included options). Or try emacs.7

Hell, even check out JetBrains' products and see if they work for you. JetBrains have build development tools for decades, and have an insane amount of experience in that field. Unfortunately, their tools are closed-source8 paid products.9

But JetBrains don't pretend to be what they are not.


  1. https://en.wikipedia.org/wiki/Open_source#Open_source_as_a_term 

  2. https://en.wikipedia.org/wiki/MongoDB 

  3. https://en.wikipedia.org/wiki/Security_theater 

  4. Pylance source code is distributed under the Creative Commons Attribute 4.0 International license. Creative Commons is normally used for other creative arts, such as images, graphics, audio, etc. I've never seen it applied to software before. AFAIK it does follow the ethos of open-source software. According to my research is not an OSI approved license. But that could simply be because it was never evaluated for that purpose. 

  5. Obsidian is a safe investment because data is stored in an open format, markdown files. If at any point in the future I should want to abandon Obsidian, while I ca't rely on a fork suited for my purposes, I can still access my notes; using a plain text editor; like vim. 

  6. "Free" as in "free speech". An internet free as in "free beer" is very unlikely to support free speech. But if it does, it would be due to open-source projects. 

  7. Emacs seem to have decreased significantly in popularity. Many of the advantages emacs previously had over vim are easily achievable in neovim today. 

  8. JetBrains have a staggering amount of open-source projects, including the Kotlin programming language. But to the best of my knowledge, their IDEs are closed source. 

  9. There appears to be free plans for non-commercial use.