Creator of the original https://github.com/coder/code-server and co-founder of https://coder.com here. Microsoft’s code-server uses their official extension marketplace, allowing LiveShare, Pylance, and other proprietary extensions in their browser VS Code experience. Their license prevents users from “hosting it as a service” meaning you can’t productize their code-server like you can ours.
We’re disappointed that Microsoft chose to release under the `code-server` command-line name. Our community has produced countless blog posts, videos, StackOverflow questions, etc. that will become difficult for our users to find. This naming decision suggests that Microsoft aims to replace our code-server instead of coexisting.
We will continue developing our code-server until Microsoft’s has parity. As for Coder, we’re focusing more on the platform side (https://github.com/coder/coder) and less on making IDEs work remotely.
I know this will get downvoted into oblivion and I'm not defending Microsoft, but....
I'm symapthic to your plight but you named your product based on 2 common nouns. It'd be like someone making a restaurant called "hamburger" and the complaining that others are confusing people because they sell "hamburger".
If you're starting a new project/product and don't not want to end up here you should probably pick a more unique name. Examples. Python, not 'scripting-lang', "Firefox" not "browser" or "web-browser", "gIMP" not "Image-editor", "mongodb" not "database" etc...
And I know someone is going to nitpick that "Python" is just a noun but in context it's got nothing to do with languages, computing, etc. so it works as not directly describing the product in ways that others are likely to use when the come out with a similar product.
Their cli commands generic, but their product name has always been distinct. It has always been Visual Studio Code and now Visual Studio Code Server. VS Code, VS code server for short.
Your branding, "coder" and "code-server", is just super generic and popular terms. That's what makes it hard to search for, not the cli command names.
Perhaps since public release, but I was informed by a PM who was part of the original product development that this was a concession to marketing, and it did not always have the name “visual studio” attached.
Which is exactly OPs point. If they’d brought it forth with just the name “code” it would have been just as dumb as these guys complaining about code-server. Which is exactly why it ended up vscode, which is destiny enough that it possible both to market, distinguish and protect as a brand.
Worth mentioning that gitpod's openvscode-server is a third option. I prefer it to code-server since gitpod's has proper parity with a desktop vscode install, while coder's implementation fails to work with several plugins when loading them in manually
Thanks for everything you've done to develop code-server! I'm disappointed Microsoft didn't attempt to name theirs differently, although I supposed it _is_ a fairly obvious choice.
Personally, while I use and enjoy both GitHub and VSCode, I'm wary of buying too much into their ecosystem. So I'll continue to use things like GitPod and Coder's code-server so I can support the wider ecosystem and third-party OSS implementers in this space.
It does look like providing a similar service. IIRC there are a few more similar attempts, but now they're all "sharlocked".
vscode.dev tunneling is nice though. Coder's version once had the similar feature but they dropped it at a point. Also I'd be slightly more comfortable to let MS tunnel my connection vs. a small startup.
Somewhat related, I actually had a great use for Replit recently. Some technically inexperienced people (mostly running Windows) would benefit from access to a python command line tool, but the only commonality we had was a forum thread where we met. So i cloned the GitHub repo from the author of the tool and gave a very short set of instructions and a link to the Replit project. Nobody had any questions about installing because none of it ran on their computer. It was just a simple python script but worked perfectly in the online IDE. I didn't have to help anyone with anything, it just worked.
I'm using this for about 1 year now. It's super useful.
First, I can connect to my work PC (12 core) from my Laptop at home. Giving me the same speed of a fast PC.
Not just that, I can of course do the same from the train, etc. saving heaps of battery.
We also use it in our company via GitPod for developers with weak machines, or if it's hard to source powerful computer parts in the country they live in.
This is likely the biggest change in dev experience for me in the last ~3 years or so.
This is super helpful for companies that have tight security constraints. At work, I am forced to work in an air-gapped environment to prevent unwanted stuff from coming into our network and also to prevent stuff to leave our network.
Setting up the remote Extension is a pain in the A$$, because it is not possible to install the server by hand. It is side loaded by the extension. So I have to download the extension manually and scp it to ~/.vscode-server/bin/${commit_id}.
I'm not sure this is going to work for you though, it seems to make you go through a tunnel service that MS is running on vscode.dev. Look at the flow they describe and it has you getting an auth code after github login and using that code on vscode.dev to access the server instance.
If you haven't seen it already coder has a nice VS code server instance that runs like a traditional self-hosted server app and could likely be run in an airgapped environment: https://github.com/coder/code-server
This is the only thing I wish emacs would do for me, I love the idea of having a collection of dev vms on my big homeserver that I could connect to from whatever.
While tramp exists and is cool, it doesnt make for an overly great developer experience -- lsp isnt super pleasant over tramp and it sometimes causes crashes for me.
There's also remote-oss [1], which is fairly low-level (you have to install it on), but doesn't require you to pass your traffic through the GitHub proxy that Microsoft's service requires (I believe) and is also truly open source (which means, for example, that it can also be used with Codium [2], not just the Microsoft's VS Code distribution).
Have been using Coder’s code-sever for a while, and using a home PC as gateway to HPC. Home PC is behind Tailscale and Caddy for SSH. Wonder how Microsoft’s implementations work, seems that only I just don’t need a caddy right now since it is replaced by vscode.dev but still need something for making a persistent connection.
Kinda cool to see it in action, but I'm struggling to see a use-case.. From experience developing remotely has always been a bit hit/miss. This seems like just another way to hit/miss.
The remote development extension is a life saver for me. In my use case is I have a remote headless cluster node with a hardware accelerator. My work laptop is Windows based and the server is Linux based (locate two thousand miles away). The language server needs to be able to resolve symbols in the libraries and the library headers installed on the Linux system. If I just copied the source to my Windows environment, it would fail to provide syntax highlighting and flag too many false errors. I would not be able to run integrated unit tests, etc. Remote development allows me to develop on my laptop as if everything was local without needing to create elaborate build scripts or hacks with minimal latency.
Doesn't need to be an iPad, just any dumb desktop-PC without any personalized setup is now good enough. 20 Years ago, Sun coined the concept of a net-pc, basically a dump terminal-like PC, without any relevant local setup. Things like this are pushing things a bit more into that direction.
IIRC another benefit, is also that you can move performance-requirements from the local machine to the remote machine, which can be beneficial depending on your situation. Not every company/freelancer has the money for beefy workstations.
I would like to develop from my phone while I’m watching my kid. Can’t really use a laptop around him yet. Phones are fine though. Would suck inputting but I still want it.
If you have a beefy PC for working at home and a thin and light laptop for working from the office, you can leave your whole dev environment on your PC and then access it on the laptop when you work from the office. You can do this over RDP, but that is heavier and has a lot of lag.
I'd like to use this so I can use my Chromebook to connect to my desktop while away from home to do hobby development. Running VSCode as a Linux app is not an option since the CHrome OS screen reader does not support Linux apps.
There are plenty of workplaces that require a more secure development environment. Centralizing the dev environment without having to go full PC over IP would be a very cost friendly way to manage this.
Depends on your build workloads. We are pushing heavily into remote development. Bursting 2k cores, 10 gbps local network speed to cache has its advantages in the right environment.
I never thought much about this, but now that I did I think it will be my biggest life improvement since VS Code was launched. It will allow me to work on my local, multi-monitor desktop computer with the server on the actual dev server instead of remoting into that with the negatives of working on a remote (difficult multi-monitor management, losing some local computer notifications, jumping back and forth from one desktop to another etc).
Edit: although they also say you may not “share, publish, rent or lease the software” the software which contradicts to MIT. IANAL but I think the intent is that that applies to binaries published by Microsoft, but not binaries you compile yourself from the codebase?
Yes, the linked license is for the Microsoft published binaries (there's a similar page for vscode itself). As the fine print carefully says, the source code is MIT licensed.
The server component was already open sourced (this is the -same- server/remote component that was previously powering all of the remote development extensions). It's here in the main vscode repo (https://github.com/microsoft/vscode/tree/main/src/vs/server).
There's vscode.dev (running vscode in the browser). That's apparently just a specific web compilation of the main vscode repo. There are alternate web compilations sitting around (for example https://github.com/Felx-B/vscode-web).
Open VS Code Server takes this barebones implementation and fleshes it out enough to be minimally usable: https://github.com/gitpod-io/openvscode-server (i.e. run it from a CLI command, do basic token auth, etc.)
Coder's code-server (what you link) is similar to open vs code server but predates it and has a bit nicer server implementation, like it can be configured to run behind a reverse proxy or under different web paths more easily. I really like the linuxserver.io container that packages it up and runs it with ease: https://hub.docker.com/r/linuxserver/code-server
For anyone that stumbles upon this later, I strongly recommend gitpod's openvscode-server container over coder's code-server. Linuxserver.io has docker containers for both.
openvscode-server has had 1:1 parity with a full desktop install of vscode, while coder's variant always had issues with several official plugins.
In coder's implementation several menu options will trigger caught exceptions for basic shit like opening a jupyter notebook, typescript language server frequently crashing, environment variables not being set properly in the correct order of priority, etc.
openvscode-server "just works" on the other hand.
Note that with both implementations the easiest way to get access to the microsoft plugins store is to compile it from source and modify preferences.json. Open source maintainers technically cant distribute it this way out of the box due to Microsoft's licensing requirements. Alternatively, you can always just download the extensions in your browser and drag and drop them into your vscode server window and install them that way.
When using linuxserver.io's container for openvscode-server, traefik worked fine as a reverse proxy to put it behind an https domain I own
Install vim and use it over SSH is the easiest and most direct approach. Since the editor runs in text mode it's perfectly happy to work over SSH. Use tailscale and you can get secure, global access from anywhere like they seem to do with vscode.dev creating a tunnel (tailscale even just added explicit SSH support: https://tailscale.com/blog/tailscale-ssh/).
This is basically how I operate most of the time. I ssh from my laptop to a bastion jump node and then ssh to my instance in EC2 where I do all my work in tmux and vim.
It's cheap, reliable, easy and it works like it did 20 years ago so it's completely network issue resilient as I can just attach to tmux again if something borks.
I've worked with some former Pivotal folks, and this is the main workflow they use, especially for pairing. Start a tmux session on a remote host and have two folks SSH in and connect to the same tmux session and they will see the exact same thing, and both have full keyboard control.
Alternatively the vscode-neovim plugin actually embeds a headless neovim inside vs code: https://github.com/vscode-neovim/vscode-neovim It's perhaps a bit more complete and featureful vs. the other plugin (like it can run all the same plugins and lua config as neovim) but IMHO it's kind of confusing and weird to have two editors running at once, configured independently.
We’re disappointed that Microsoft chose to release under the `code-server` command-line name. Our community has produced countless blog posts, videos, StackOverflow questions, etc. that will become difficult for our users to find. This naming decision suggests that Microsoft aims to replace our code-server instead of coexisting.
We will continue developing our code-server until Microsoft’s has parity. As for Coder, we’re focusing more on the platform side (https://github.com/coder/coder) and less on making IDEs work remotely.