Try it for anything non-trivial and it starts to get unworkable quickly. I was trying this on my iPad pro, hoping that it would be a good remote IDE, and it doesn't quite work with the Apple keyboard. I had such high hopes! But when arrow keys don't work, that makes life a bit difficult on an iPad!
(FWIW, RStudio server has similar issues, but they switched editor components recently to try and get this working better).
Many years ago (around 2011/2?), I remember there was some company that was taking care of emulating native Windows applications in browser, i.e. Notepad++ editor or Serious Sam game but I can't remind the name nor link to archive.is nor any other source...
I've been looking for something just like thing for a while. Apache Che didn't do much for me. Just didn't work the way I thought it should. How's the Firefox support for this?
VNC over the internet is not pretty. Plus X Windows has to be installed on what might otherwise be a headless server. Windows is lightyears ahead of Linux on remote desktop, so it would probably be fine on that.
More often than not, working seriously through vnc/remote desktop is miserable and a last resort. Some people don't seem to mind though. I'm curious if their productivity suffers? It works fine for checking on things, but it's a window-in-a-window, copy/paste never consistently works (no matter the server/client software), I haven't seen good solutions for audio, scaling/resolution, and bandwidth/latency vary greatly. It's made me get much better with ssh/terminal/vim and pushed me further away from an IDE. I can see a webapp being a decent compromise. I think most people are fine with Gdocs over Word/Excel.
I tried it last year and Teradici seemed to work really well when you were in the same region (time zone-ish size area) or using an internal LAN with a decent connection. For low latency or low bandwidth situations VNC worked way better. VNC also had a lot more options for tuning. Another issue I had was that they had me set up a vpn for Teradici, while for vnc I'm just ssh tunneling the port.
Theia is a lot more than that. Theia is an Eclipse project that is aiming for VS Code extension compatibility (and already has results to show for it).
Theia remains the furthest along of any that I've seen. I'd love to know if someone thinks another "VSCode in browser, running on a remote server" is along further; there seems to be a new one every other month!
"The frontend runs in modern browsers or as a Desktop app using Electron with either local or remote (cloud) backends." from https://www.theia-ide.org/
Wow. This is going to be a major game changer for remote development work, and it's a perfect counterpoint to the "Electron is stupid just write it in C" that we hear a lot. Because of the flexibility provided by separating the Node-based logic and processing layer from the web-based presentation layer, VS Code lent itself well to this kind of innovation. Of course, browser-based IDEs aren't new. But they've always been a beast of their own; this will work seamlessly with the tight VS Code integrations numerous languages and frameworks have.
I splurged on an expensive desktop, while I'm using an old laptop with an i3 processor and 4GB RAM my brother gave me.
RStudio server let me work from the same R sessions, wherever I was, while giving me (high end) desktop performance for running simulations like MCMC, wherever I was -- from R.
I did similarly with Jupyter for Julia, but I always preferred Atom/VS Code. So my work flow, away from home, was using things like remote-ftp and ssh. But I can't seamlessly continue a session I had at home from my laptop. Needless to say, I am excited about this.
Effectively. These days you can use a Python kennel in notebooks and get syntax highlighting, but not much else. Python and SQL are supported but second class use cases.
Yes, I was quite happy with reticulate, when I tried it.
I like the workflow of working on code in a script, with hotkeys to run code blocks in the REPL and jump to the next block.
If I am actively working on code, I'm unlikely to want to run the entire file, but that is the default in Python for VS Code, for example.
So in terms of quickly getting comfortable and focusing on the work, reticulate with RStudio worked well for me. I also like it more than Jupyter, unless you're making reports where mixing code with markdown and LaTeX is great -- although RStudio supports this too.
But I've also used a lot more R than Python, and am already comfortable with RStudio. For someone who hasn't used RStudio before, there's probably better options to jump into Python for data analysis.
I brought up RStudio Server in the first place because I find it to be convenient, and even use it at home in place of RStudio Desktop, so that I can resume the same session I left at home remotely on my laptop.
Code-Server looks like the equivalent of RStudio Server. While I still haven't tried code-server (still planning on it -- just haven't yet because I'm not used to downloading and running binaries I find online), it has those same benefits, and much broader language support. I am happy to see it.
Can you elaborate on the remote development use cases you have in mind? I struggle to see what makes this better than developing locally and pushing/pulling code via git or some other VCS.
My work involves a lot of smaller scripts that need to run on very large datasets. Git was impractical for the frequency of my pushes so I resorted to the old scp or ssh and paste to my workstation. With this I can streamline my whole process.
There are many cases where there is a desire not to have a company’s code base floating around on people’s laptops. For these folks remote development is a good option. It mitigates the risk of losing intellectual property.
My understanding is that much, if not all development at Google works like this. I don’t know their specific policy but a friend works on a similar project internally.
Google devs access the repo locally most of the time through a FUSE file mount. So the code is never written to local disk, but still accessible locally as far as you can tell.
(The other ways of writing code aren't publicly mentioned yet in any talks or papers that I know of, so I'll leave that one alone)
From the 2016 ACM paper.
> Most developers access Piper through a system called Clients in the Cloud, or CitC, which consists of a cloud-based storage backend and a Linux-only FUSE file system. Developers see their workspaces as directories in the file system, including their changes overlaid on top of the full Piper repository
Scientific computing, specially when you'd like to do visualizations of data that is big/can't leave the server. It's also possible in Jupyter notebooks using port forwarding, but I don't see it for development involving data, as much as for data exploration or presentations.
HIPAA - I want to be able to build data pipelines against patient data without the data itself leaving the server. Having my dev loop live on the same server as sample data is better than working against fake or synthetic data locally
1) I may not need to see the data itself during most (or all) of my dev loop, but just see any errors that are thrown.
2) Taken as risk mitigation, data temporarily cached in your browser is less risk than data permanently stored on your laptop, esp. when the threat you are mitigating is lost / stolen laptop.
Until recently I was stuck on a very locked down Windows machine (no vm, no docker, no admin rights..) while we target Linux on the cloud. The only way I could be productive is through remote development. We got macs and I still just develop remotely because the data in all in there.
I've used something like this in the past when working with tools that are difficult to host locally.
Why setup your codebase and all the dependencies to run locally on a laptop when you can just spin up an instance on a server that matches your production environment and remote into it to work?
I currently use a Windows 10 dev laptop because I use it for other non-development tasks (ex. Creative Cloud) that require Windows. So I'd already need to run in a VM. And then there's the issue of making SSL certs and setting the hosts file to capture our domains, and installing all the build tools. I've got a 1.5 Mbps connection with horrible latency, my server has gigabit fiber somewhere in NoVa. With this, I can throw up a remote IDE with high quality plugins on our dev server, which is just a low-spec clone of prod. I can do a docker system prune and rebuild everything from scratch in seconds instead of hours because the npm packages download instantly. And it helps to stop "non working code -- push to test" commits in our GitHub.
Another would be developing ARM code using native ARM toolchains on a SoC board.
> Because of the flexibility provided by separating the Node-based logic and processing layer from the web-based presentation layer, VS Code lent itself well to this kind of innovation.
Game Changer? Innovation? This sort of thing has been possible with x-windows for decades.
X forwarding is totally unusable over crowded, throttled, public WiFi or even good internet speeds with hardly any latency at all. The web is designed for those environments.
Imagine needing the complexity of docker, browsers, vs code
when a much simpler (and compared to this which is running in http? - secure) tool already exists :), ie
No. The X protocol is objectively shit. It's so shit, modern toolkits don't even fully use it anymore. Instead they do all rendering locally and pipe the composited pixmaps over to the X server via DRI. Over a network, guess what? No DRI. Meaning uncompressed pixmaps get sent over that network link every time a redraw happens.
Wayland, Pipewire, and H.265 will be a much better general solution to remote desktop access. In the meantime, VSCode via browser is a MUCH better approach than trying to forward it over X over any but the fastest network links.
That's just a different kind of complexity to transmit interactions and UI rendering. It's built for much more general usage which is why it fails at a fine-grained low-latency coding experience on anything other than a LAN.
Yeah that doesn't really cut it for remoting over the internet into a VM in the cloud. As far as securing this it's as simple as tossing a few lines into your reverse proxy config.
No one remembers the "No Machine" NX protocol (X protocol with compression, without unnecessary roundtrips and some other optimizations)? I think I've tried it in the early 2000's, looks like they are still alive[0]
With version 4 of their protocol they went closed source, but before that it was released as GPL (don't remember if it was the case of their client/server, IIRC they were proprietary) anyway I think V3 is used in the X2Go[1] client/server. There was also a Goggle client in Python years ago...
I use x2go actively for all my servers. It is very fast, even over slow connections (much better performance then VNC and RDP used to have) -- thanks to great compression techniques (so do not expect 256 colours when connecting over GSM network). It is a lovely piece of (OSS!) software.
I found out today that X2Go version 4.1 is available on Debian Stretch via "backports"; I don't need it at the moment but if I'm bored in the future, I could play with it without much friction...
X2Go shouldn't work, unless you intend to run it on a VM or maybe the WSL as it's a modified Xorg X11 server, but probably it's not what you are asking.
NoMachine, according to their download page, should support Windos/Mac/Linux on the server front, but I don't have a direct experience.
Ten years ago, UltraVNC or RDP were the fastest remote desktop options for Windows. I also can recommend TeamViewer, despite it has a slightly different focus.
NoMachine runs on a Windows server. It accesses the remote desktop. But if what you want is a Terminal Server like NoMachine's Terminal Server for Linux, I think you'll be disappointed. That's not possible from a legal perspective.
I used it until a few month ago: it worked better (lower latency and no need to specify the resolution) than VNC but clion doesn't work well with NX, so I switched to VNC.
NoMachine essentially made themselves irrelevant by not upgrading their client software often enough, IMHO. I was using all sorts of VNC hackery to make it fast and loved NX, but it was weird and niche (never worked quite right on the Mac) and still slow when compared to RDP and Citrix, so the rise of Ansible and other sorts of automation blew it out of the water for server management.
For end-users, Citrix was just way better, even if more expensive, and there was no compelling reason to switch...
"browser-based IDEs aren't new. But they've always been a beast of their own; this will work seamlessly with the tight VS Code integrations numerous languages and frameworks have."
Yes, I evaluated AWS Cloud9 and walked away, because it was obvious that it could never compete with the ecosystems of the major editors. New tools and frameworks will keep coming, and proprietary cloud developer environments won't keep pace.
This project or Theia[1] look much more viable, if they can maintain enough compatibility with VS Code.
Theia relies only on stable and documented APIs for compatibility which are not move fast and don't get removed, not on patching and exposing of VS Code internals.
It does look like you have to download a 10Mb js file, but once that is downloaded and cached, it uses a websocket to communicate with the server on the backend and only necessary text will be sent to the browser. I don't think the bandwidth requirements should be too much more than a terminal editor over ssh.
Facebook does a lot of work like this for its internal development uses (also, when it used to open source Nuclide).
I think this is a good first step, but there's a lot more problems that are harder to solve than what this offers (and are what I'd consider the main problems that need to be solved...)
One example is language services. Integrating something like C++ autocomplete is difficult, and not something they seem to have done (looking at their page). The right way to do it is to run the C++ autocomplete on the server, and have some way of providing those suggestions over the connection to your local editor.
> The right way to do it is to run the C++ autocomplete on the server, and have some way of providing those suggestions over the connection to your local editor.
No need for integration. Its really up to a C++ plugin as this is just straight up VS Code.
StackBlitz is Monaco in the browser. No extensions or terminal. Works great for certain kinds of front-end dev, but more complicated build tooling aren't available and only JS/TS are supported.
I've been always looking for something like this. I used Cloud9 [1] for a moment but I gave up using this after Amazon acquired it. It's shame to look how a tech gaint destroyed a great product.
I use cloud9 and am pretty happy with it. It lets you connect to any instance anywhere (I use ubuntu) and it works as expected. How do you feel like they destroyed it?
This will be very cool when someone packages it up to be a full IDE experience. Things like automatic language completion for multiple languages, project based view, etc. This is amazing and might make things like a chromebook much more viable for me and many other developers.
I would still get the same Chromebook today too if you can find one. That specific model happens to be a perfect storm of massive value / great specs at a low price.
This does exactly that. You can install whatever VS Code extensions, language servers and runtimes you want on your remote machine, and the local (web) IDE will use all of them as normal.
To me Che is an Enterprise IDE, which integrates with the deployment platform. The majority of people just want an IDE in the browser, like c9 or vscode.
Does this / something else allow me to do something like this but with the actual VS Code app? I.e, like Live Share but in a more persistent way? I don't really need the extra flexibility of the browser, I would just want to offload computation to a non-battery powered device.
Can this be made an iOS app / PWA with proper keybindings for iPad with keyboard? Wondering as I can’t use my JupyterLab on the iPad as it does not transmit ‘Shift + Enter’ to run the code.
I have to say it because no one else has yet. Vim, Emac, Nano, Pico, etc. has been doing this with good ol' fashioned SSH decades before this. It fascinates me to see editors constantly reinvented over and over. Is text really that complicated?
If you can't see the difference between a text editor over ssh and a full IDE in a browser tab you need to seek medical attention; you may be having a serious stroke.
This might be a ridiculous question but I'm looking for a way to do windows C++/C# development from a mac. Is there any chance this might allow such a workflow? Unfortunately, I need to access some pretty low level dll's that are not cross platform compatible at all.
I use a mac for all other development except for this project. I have nothing against windows, just looking to simplify my development workflow across all projects.
I work on a Mac all day, and besides VS Code/VS Mac I also use RDP extensively to my Surface. Set it to 16bit, use wired Ethernet, and it is as fast as native Windows rendering, even in Retina/HiDPI.
I had the worst interview with these people (codercom) that I've ever had in my career as a developer.
It essentially consisted of them sitting me down with an old crappy laptop that kept logging out every few seconds and asked me to write an encrypted reverse proxy from scratch while simultaneously asking unrelated technical questions with a time limit.
I guess to test how people code with distractions and stress? But, yeah I definitely don't want to work anywhere that looks at their potential developers that way.
Bad because it select people who can handle stress and distraction and doesn't complain? If that what they looking for then I see no problem with it. They are free to select whatever criteria they see fit.
The way they interview in my work place these days also hard and imo ridiculous but yet they still find someone who meet all the criteria.
I am excited to try this and hope it proves easy to setup and reliable to use.
X11 forwarding is just terrible, completely useless over WAN.
sshfs is also a bad solution for coding as it doesn't do inotify properly, so if a file changes on the remote end it doesn't properly notify your local mount of the changes. Even worse, doing tons of small i/o operations (which is exactly what git does) is terribly slow with sshfs over WAN.
Right now I do most of my work in vscode locally and use the "Run on Save" plugin to automatically rsync my code changes to the remote server(s). It's the best solution I have found after trying many things.
vim is great for remote work too. very great in it's own right. But even despite the electron-based UI, the local, "native" experience and plugin ecosystem of VSCode is unmatched IMO.
I just run a full remote mate based Ubuntu desktop that I connect to via chrome remote desktop or x2go. I made a quick script that I run inside a vps instance or container to build it:
Interesting in its own right, but the actual heavy lifting here was done by the vscode team; in how they envisioned and implemented the clean separation of UI and backend (such as language server protocol).
There are other previous attempts at running vscode in the browser - such as Ives Van Hoorne's very popular https://codesanbox.io. Curious if code is being shared between these projects.
I tried both Theia and Coder-com, but at the moment it seems Codercom comes closest to the actual VSCode feel. Theia has modified stuff to be better suited to use from a browser, but actually this took away from the customization options. I prefer to have minimal interface... and with codercom I can get close, except it still has a menubar to show.
I'm going to try baking all my dependencies for my language plugins and editor tools. Could be interesting with the built in terminal.
FROM codercom/code-server
RUN apt-get update
RUN apt-get -y install curl gnupg
RUN curl -sL https://deb.nodesource.com/setup_11.x | bash -
RUN apt-get -y install nodejs
Exactly what I was looking for to code at my public library, which provides macs but no permissions to install software.
I haven't run into any issues so far, except for the obvious permissions issues which were easy to fix. Extensions all install. I'm sure I'll have more to say about it as I use it more heavily.
When we started the Theia project (theia-ide.org), we considered doing a large patch on VS Code as well. But we decided to go down a more sustainable approach by reusing the important building blocks from VS code (editor and vscode extension protocol) with stable APIs, because rebasing a large patch on a fast paced project is a PITA.
Theia is about to complete the VS Code extension support. At that point it will be the better option as it is architected to run in remote scenarios from the ground up.
My biggest problem with Theia is that the menu structure and appearance/feel is very different from the actual VSCode editor I am used to on the desktop. This was not the problem with Codercom. It reduces friction to move from the desktop to the cloud. If this could be solved, I would certainly prefer theia more. At the moment, I just can't customize it enough to get to my liking: https://news.ycombinator.com/item?id=19396894
The other day I setup a version of this using Theia-IDE[0], which uses Monaco as the editor I believe. The project is open source (Apache-2.0) and has a strong community.
It would be a nice project to get a Docker service running where users could sign-up and get an instance with persistent storage for their projects.
Are you aware of Gitpod (https://www.gitpod.io/)? It's one-click online IDE for GitHub based on Theia. You can have as many workspaces as you want which are continuously replicated and never deleted, bring your own custom Docker image and it's free for open source development.
reply