The best parts of Visual Studio Code are proprietary2020-08-03
I've been very surprised and delighted over a number of years now by Microsoft's strong efforts in open source. I understand the skeptics, I was on Slashdot when they tried to sue Linux out of existence and I think only time will tell. I figure MS contributing is better than them hunting Linux distributions for sport. So I was mostly onboard for Microsofts efforts and I've especially found Visual Studio Code useful.
To settle a few things. When I tweeted on this subject I only got the response that I should use vim. Thanks. Great. I can and do on use vim. That misses a number of points. Visual Studio Code is an immensely popular editor and likely the most common recommendations to new developers. The primary reason I've used Visual Studio Code is that it has an incredibly compelling solution for remote pairing in the form of LiveShare. I've used that for a while with great success mentoring, coaching and generally working with other developers of varying experience and editor preferences. Most programmers can handle a "normal" editor like VS Code while something like Emacs or Vim depends a lot more on what they've learned.
I also ended up enjoying the Remote series of extensions for developing effectively inside remote servers or local containers.
These things are proprietary
At some point I read a piece of license that said that LiveShare could only be used with the Visual Studio family of products. "Huh, that sounds weird, VS Code is open source right?"
Sure enough. VS Code is fully MIT. The binary distribution has a separate license to allow telemetry and protect Microsoft trademarks and stuff. Nothing particularly weird, I can't really get worked up about telemetry, I know some can. But the extensions.. These extensions are in my book core differentiators that makes VS Code compelling. For me it is definitely part of what pushes it beyond the much leaner Sublime (paid, closed source) I was using before.
These extensions have a license limiting them and their online service parts to only be used with the Visual Studio family of products. This is the license for LiveShare and this is the license for Remote.
For me LiveShare is the most important thing. Google Docs style collaborative code editing, terminal sharing, port sharing and a bunch more features. I know Atom had an extension like this, I haven't checked the licensing there or tried it recently.
Remote is a very strong extension as well for anyone working on a server over SSH or in a container. It helps by installing extensions on the destination to allow language servers and such. I've seen it do terrible things to servers sometimes but it is very useful and generally works well.
It makes me uneasy to accept VS Code as an "open" project in any wider meaning of the word when compelling features are legally locked to only work inside the family of Visual Studio products. It makes me less certain that this isn't the Extend in Embrace, Extend, Extinguish. It also frustrates me that this prevents someone from building a compatible plugin for VIM or any other editor. This would be much more powerful if it could be in all the IntelliJs as well.
The entire marketplace is proprietary
Some additional salt in this particular wound is that the use of the Marketplace of VS Code extensions is also proprietarily licensed. So all these open source developers are shoving their extensions into a competitive advantage for one of the world's largest tech firms. And they disallow other uses of the marketplace. Even if the letter of open source is followed there is none of the openness, collaborative or community essence that I think exemplifies open source and free software projects.
What does this mean in practice? I guess it protects from the competition. Such as the VS Codium project which provides VS Code binaries without the proprietary parts. But also, as a consequence of this, without the Marketplace of extensions. There is an open source alternative called Open VSX, but since it isn't the canonical one it is missing a bunch of extensions and the big Liveshare and Remote ones are still not allowed.
This also blocks the code-server editor that allows running VS Code in the browser from using it which otherwise would have been perfect for me to do development on an iPad Pro. I can still use that but a lot of packages are not in Open VSX.
What about lock-in?
Visual Studio Code is marketed with LiveShare and Remote as powerful extensions. VS Code is also marketed as open source. It is easy to use the editor, install the extensions and be under the impression that you are using an open source software suite where Microsoft simply hosts the peering service for identifying and connecting you and your collaborator.
But the peering service is not the only closed part. The extensions are not open source projects as far as I can find and they are licensed during distribution in a way that disallows using them with anything but Visual Studio products.
This leaves me with a sour taste in my mouth. I wasn't sold on having an Electron-based editor to begin with but VS Code was substantially leaner than Atom so I've been mostly accepting it.
If you have good suggestions for strong collaborative development tools that are open source, please let me know at email@example.com or on Twitter @lawik. If you want to follow my writing the RSS feed is right below. If you want more of my writing I have a tracking-free newsletter that I'd love for you to sign up for, also below.