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.
-
https://en.wikipedia.org/wiki/Open_source#Open_source_as_a_term ↩
-
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. ↩
-
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. ↩
-
"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. ↩
-
Emacs seem to have decreased significantly in popularity. Many of the advantages emacs previously had over vim are easily achievable in neovim today. ↩
-
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. ↩
-
There appears to be free plans for non-commercial use. ↩
Top comments (15)
lol this kinda touches a nerve for me - all that open-source talk but then gatekeeping features? yeah, bogus. good writeup
Why boycott it? Because it's a trap.
It's like the old "embrace, extend, extinguish" practice. People say it's ok to use because it's open source, then get locked in to using it because they've come to depend on a lot of community-built features, then it becomes a captive audience for Microsoft to exploit.
AI editors are mostly VSCode forks with some theme and extensions baked in. Regardless, the reasons people are switching to AI editors have nothing to do with this conversation.
Likewise mentioning Sublime, etc. That's not free software either.
I use VSCode in my day job. That doesn't have any bearing on its purpose or feature set.
I think it is shady indeed, but not shadier than common commercial practices. Microsoft was kind enough to pay for the development for the main application, which then gave away to the public.
Now you are angry because not EVERYTHING Microsoft does around this one free piece of software is free to use anywhere. It seems that you developed a sense of ownership over EVERYTHING even though you were only given a small piece. I think you are being greedy.
Just because you were given one piece for free, doesn't mean you are entitled to the whole thing for free as well.
Do you want or need the C++ extension? Well, Microsoft won't give it to you to use in another fork. They made it. Why do you think you're entitled to reclamation? Don't like it? Make one yourself and then give it for free to all forks. Too hard? Probably. Your choice.
Why I should boycott VSCode? I think the answer is, I shouldn't ... ;-)
I swear by VSCode, but I use a minimum number of extensions - "less is more" - so the value for me lies at least as much, if not more, in the 'core product' than in the extensions ...
Maybe I'm not "versed" enough in the theory of Open Source, but for me this doesn't feel like a reason to boycott a product which, for me, strikes the right balance between "lightweight" and "accessible" ...
By the way I use VIM too on a regular (daily) basis - I just don't see it as an "IDE".
Have used the Jetbrains products as well in the past, but they feel too sluggish and resource hungry, have a steeper learning curve, and have tons of features which I don't need, and which (for me) don't justify the purchase ...
Have toyed with Atom in the past, but VSCode just blows it out of the water, it's no competition ...
And apart from VIM and VSCode I love the command line too ... VSCode just fits perfectly in my development 'flow' - spending time on "migrating" to something else is guaranteed to achieve just one thing: wasting time and killing my productivity, while trying to achieve an elusive goal.
So, never mind the arcana of OSS licenses, for me VSCode has been a godsend - thank you for this wonderful product Microsoft, and I'm not saying that often (regarding Microsoft, that is) !
I'm not convinced. It's completely reasonable to open source the main application and restrict your own add-ons to your only fork. It is also reasonable to operate an extension store that only works with your own fork. It is also reasonable to NOT publish your own add-ons to other extension stores that support other forks. Just because I open my guest room to you doesn't mean I have to share my owner suite's bedroom with you too.
I see your point, but I disagree it is an actual issue. Not for 99 % of devs.
Visual Studio Code as a product was never billed as open source - it's a bundled that contains proprietary mechanisms, telemetry, and so forth; the source code from which it's built is MIT licensed. In addition, the marketplace has a Terms of Use you must agree to, which is where the restrictions many are grumping about come from. Open Source advocates of course pointed this out in the beginning, but convenience ended up trumping all for most folks; those who even understood the details generally thought the worriers were just being pedantic.
I'd guess Microsoft (who knew very well what they were doing, they are extremely experienced at software licensing and strategies) would not have started to enforce the restrictions if the rise of LLMs didn't spawn a market for people taking the source code to VS and building their own for-profit products, bypassing a revenue stream that Microsoft wants. Open Source folk have criticized a number of companies who took their products closed-source when they found others profiting off their efforts more than they did (see MongoDB, mentioned in the article); Microsoft hasn't done that, they were up front about the terms, even if we may think of the behavior as not being in the spirit of the open source movement.
Choosing not to use VS Code because it doesn't fit the terms of how you want to use software isn't what I'd call a boycott, just making an editor choice, but I suspect the convenience of the extension marketplace will keep it just as popular as it is now.
I am not sure Microsoft extensions matter that much. There is the clangd backend C++ extensions, for example, and I would argue in some ways it is superior to the Microsoft C++ IntelliSense one, especially if you are dealing with code that's not going to ever be built for a Microsoft platform. In this sense, it is Microsoft cutting its nose to spite its face by reducing the reach of their C++ practices.
The most common use of VSC is probably golang, and the golang plugin is made by Google, so it's available for all forks, too. I didn't even know there was a Microsoft python extension, and there are many others of these.
I suspect the main one people may care about is not C++, but rather C#, for which there is only one. C# can be used and developed on non-Microsoft platforms, but the runtime overhead alone often makes it a difficult choice at best, or, for containers, impractical. This tends to mean C# usually only gets developed on Windows, and, actually, old classic Visual Studio provides a much more mature. complete, and practical environment than VSC does for C# anyway. There may also be selective pressure to avoid properly improving the VSC C# plugin for fear of cannibalizing the VS base.
I'm using all my vscode extensions in Windsurf 🤷 true you can't use the vscode marketplace, but the extensions you already have locally, you can use in any other vscode clone.
the moment my dude mentioned vim i stopped reading lol