
Facebook and Microsoft Partner on Remote Development - jimarcey
https://developers.facebook.com/blog/post/2019/11/19/facebook-microsoft-partnering-remote-development/
======
usecodium
Just an FYI for people - The Remote Development extensions are not open
source. I'd hope if Facebook were joining efforts, they'd do so on a more open
project.

1: [https://code.visualstudio.com/docs/remote/faq#_why-arent-
the...](https://code.visualstudio.com/docs/remote/faq#_why-arent-the-remote-
development-extensions-or-their-components-open-source)

2: [https://github.com/microsoft/vscode/wiki/Differences-
between...](https://github.com/microsoft/vscode/wiki/Differences-between-the-
repository-and-Visual-Studio-Code)

3:
[https://github.com/VSCodium/vscodium/issues/240](https://github.com/VSCodium/vscodium/issues/240)
(aka, on-the-wire DRM to make sure the remote components only talk to a
licensed VS Code build from Microsoft)

MS edited the licensing terms many moons ago, to prepare for VSO (Visual
Studio Online = VS Code in browser using these remote extensions/apis that no
one else can use)-
[https://github.com/microsoft/vscode/issues/48279](https://github.com/microsoft/vscode/issues/48279)

Finally, this is the thread where you will see regular users being negatively
impacted by the DRM (a closed source, non-statically linked proprietary binary
downloaded at runtime) that implements this proprietary-ness:
[https://github.com/microsoft/vscode-remote-
release/issues/10...](https://github.com/microsoft/vscode-remote-
release/issues/103) (of course, also with enough details to potentially patch
around this issue if you were so inclined). Further, MS acknowledged that
statically linking would help in May, and yet it appears to still be an issue.

I just hope they don't come after Eclipse Theia...

~~~
breakingcups
Fuck. I really bought into MS's open VSCode spiel.

~~~
Sammi
It's the Open Core business model that is becoming the standard Open Source
business model these days. Wikipedia even has a nice little list of companies
that use the same business model: [https://en.wikipedia.org/wiki/Open-
core_model](https://en.wikipedia.org/wiki/Open-core_model)

It's not EEE. The open core makes it so that the last step in EEE doesn't
work. With an open core, anyone can fork.

------
mraison
Very happy about this move. Nuclide’s remote development capabilities were way
above anything else I’ve tried (Sublime, IntelliJ Ultimate, VSCode, remote SSH
mounts, etc).

It’s the only solution I’ve found that really allows you to browse the remote
filesystem as smoothly as you would with your local drive (including when
you’re also changing the remote files outside the IDE), degrade functionality
as needed when the connection isn’t great (using caching appropriately), and
immediately recover when it comes back. The only cost to pay was a bit of
setup server-side (installing watchman and opening a port, if I remember
correctly). I really hope they can bring the VSCode experience to the same
level!

~~~
shaklee3
What is missing from vscode for remote development? MS released their remote
development extensions earlier this year, and everything from browsing to
searching feels native.

~~~
mkohlmyr
Do you happen to know if it works for vagrant VM's? Because having a file
system mismatch (symlinked dependencies in vm, IDE doesn't recognise them) is
a bit of a pain point for me right now, it would be really fantastic to find a
solution within VSC.

~~~
shaklee3
Not sure, but it works by storing files on the remote server under ~/.vscode,
and this is where all the normal code files are stored. When you connect to a
remote system it loads these files over ssh.

------
_bxg1
I was an Atom holdout for a while - it felt disingenuous the way Microsoft
kind of swept in and usurped their idea.

But man, eventually I caved. VSCode is a marvel. It performs better than most
native IDEs I've used, despite being Electron-based. It's the good parts of
Visual Studio without any of the legacy baggage. Its package ecosystem is just
as vibrant as Atom's, with solid support for nearly every language under the
sun, but at the same time its built-in features and attention to detail in the
user experience are Apple-level (really, Apple-of-ten-years-ago-level). I
still can't believe I get to use it for free.

~~~
fooey
I would say Microsoft's dev tools have always been best in the business, but
only in their ecosystem and only for their ecosystem. A big part of the reason
I still go out of my way to use MS SQL is how good SQL Studio is.

The revolution with VSCode is the openness, not the quality.

~~~
mrec
Out of interest, have you ever used Jetbrains products like IntelliJ IDEA and
friends? Even back when I was writing C#, years ago, Visual Studio was way
less productive without their ReSharper plugin.

~~~
WorldMaker
I'm sure it's a "too each their own" feeling.

Personally, I've never seen Visual Studio so unproductive as with ReSharper
installed. The number of colleagues over the years I've had to work to
convince them to remove or disable ReSharper to get any work done on projects
has been too many. ("I hate Visual Studio because it is too slow." "Do you
have ReSharper installed? What happens when you disable it?" "Wow, Visual
Studio is really fast now." Surprise.) I've had employers install it by
default, I didn't like using it, and I made sure that my employer wasn't
paying for a license directly for me when I uninstalled it.

If Android Studio is any indication, I don't see what the fuss is about
IntelliJ either. But some of that is certainly just lack of familiarity
because I only open up Android Studio when I have to.

~~~
mrec
It may just be that my experience was a good while back and VS has improved
since then. At the time the built-in static analysis really wasn't up to
scratch.

------
songzme
I teach underprivileged adults how to code. Most of them use old computers so
I had them ssh into my server when they code so they don't have to install
anything. When they learn about web development, whatever they built would be
immediately available online under their subdomains that they could show off
immediately to their friends and try on their phones.

The only drawback is that they had to learn and use vim to do their code
editing. I tried to make their lives easier by setting every user with a
default vim config, but the insert vs normal mode is a big hurdle for most
students.

I'm glad visual studio code supports remote development, I'm hoping that means
now my students can use it to ssh access my server and code there. Excited to
try this out with new students.

~~~
mbar84
Perhaps you can let them edit their files locally and instead of vim, teach
them how to scp/rsync the files onto your server. Hopefully their computers
are at least fast enough to run VS-Code.

~~~
mesaframe
My mid end computer isn't fast enough to run VS code.

~~~
kolla
A raspberry pi can run VS Code so I'm a bit curious what you call a mid end
computer.

------
taurath
I’m disappointed this wasn’t really about remote workers but about remote
development as in code doesn’t live on the machine. That said, remote
development tends to be awful, and more tools could be helpful if it’s not
specific to a FBs particular implementation of remote dev shards. Learning
that at Facebook you don’t develop things locally and likely are on a box with
all sorts of things tracking your usage and access to everything lends even
further credence to the big brother thing. I understand that for a codebase
and app that’s too big to run on one client machine it makes sense, but what
also makes sense is having piecemeal development environments where you just
pull the components that you need.

~~~
flyingswift
Disclaimer: Work at Facebook

Not really sure what you are implying with the 'Big Brother' comment. The
remote development servers are only used for writing/debugging code and not
for other daily tasks. Even if they are tracking what tools/functions I am
using on the server, what does that matter?

Personally, I have found remote development awesome because it enables
engineers to start contributing to a huge product in the very first hour. No
need to wait for the repository to clone, the dependencies to install, and the
code to build before you can become productive.

~~~
mcny
> Personally, I have found remote development awesome because it enables
> engineers to start contributing to a huge product in the very first hour. No
> need to wait for the repository to clone, the dependencies to install, and
> the code to build before you can become productive.

I am nobody but I've had this nagging feeling ever since I started working on
websites for big corporations about why can't I work on my code on my local
machine with no network connectivity? Why do I need to talk to three different
databases and two different services on five different servers? Why can't I
just fake all those things during my development?

If anything, my not so humble opinion is that remote development further
enables bad habits. Of course, remote development is a tool and is not to
blame but I recently learned the term "hermetic" build [Google SRE]

>The build process is self-contained and must not rely on services that are
external to the build environment.

Personally, I think we should work towards making it possible to run (or at
least stub) the whole stack on a single physical machine - be it local or
remote. What do you think? I think this is a trivial problem engineering-wise
but I am not very good at selling ideas.

[Google SRE] [https://landing.google.com/sre/sre-book/chapters/release-
eng...](https://landing.google.com/sre/sre-book/chapters/release-engineering/)

~~~
shaklee3
Outside of web development, sometimes you need special hardware or workspaces
configured to do development. Usually this can be done in a container, but
that comes with its own annoyances. Having a central development server for
large compiled code bases is really useful.

~~~
8ytecoder
Not true. Worked on a real distributed payment system. Every service came with
a mock clone or a single server mode to standup all services in the same box.
Every developer had a powerful personal desktop (or two). I loved it. Everyone
I knew there loved it.

~~~
shaklee3
See comment below. Just because it wasn't true for you, doesn't mean it's not
true. I'm not talking about mocking services to run it; I'm talking about the
development environment and sharing with a team of 20 or so on a code base
that takes 45 minutes to compile without parallelizing the build. You also
cannot mock GPU functions. There's simply no cuda emulator.

------
jameslk
The trend seems to be the IDE and development environment will move to the
cloud for larger companies. This is what Facebook and Google are already
doing. It makes ramp up easier, environments more consistent and tooling more
predictable. Also you can spin up multiple development branches of the same
codebase without having to switch branches or stash changes (a big deal when
you have one giant monorepo). And probably harder to leak any IP.

~~~
DJHenk
I might be becoming an old fart, but I really don't see the benefits. I use
vim, so technically I've been able to do remote development for years, but
I've never felt the need to. Git makes sure that I have easy access to the
right code version, Docker and docker-compose make sure I have the right
environment. I only run one version of the codebase at a certain point in
time. After all, I'm mentally focused on one problem at the time, right?

Yes, running docker-compose for the first time takes a bit longer. But seeing
it unfold and having all the parts present on my local system helps me
understand this new system better. And really, how often does this happen?

------
naoru
I've just set up remote development VM on my personal server and it's super
seamless. Love this stuff, crazy fast. It's scary that I, a person who
expressed my dislike with Microsoft in the past, got hooked on VSCode +
Typescript.

But.

There is a possibility that in a corporate environment this tool could be more
of a hurdle. Imagine that you don't have control over your VM. No root, no
sudo, everything is monitored and scrutinized.

Sounds scary.

I'd rather have a bare metal machine with something like Proxmox just for my
team's needs.

------
masterwok
Why is everyone in this thread so into the concept of remote development,
especially when it comes to the likes of Microsoft and Facebook leading the
charge? Both companies harvest massive amounts of data about their users and
have a proven track record of privacy violations.

What happens if this becomes the norm and IDEs are only in the cloud? Do these
corporations decide who gets to code on their platforms and gain the ability
to peep into the technical secrets of every competitor?

I will never support this.

------
lovetocode
I did remote development through Putty sessions using vim/tmux for several
years. Would have been nice to have something like this.

------
galkk
Everything is better than "cloud desktops" and everything that includes remote
desktop connection for UI, with bad font rendering etc. I don't use vim, I use
IDEs and like when they have native and fast rendering

~~~
jpalomaki
vscode is based on Electron. So even if you run it locally, it runs on
"browser". So Remote Desktop is not needed.

Also there's some other features for remote development. You can for example
develop inside Docker while running the UI on your desktop [1]. Or you can
connect via ssh [2]. A bit like IDE split between client and server
components. All the intelligence runs remotely, just UI runs locally.

[1]
[https://code.visualstudio.com/docs/remote/containers](https://code.visualstudio.com/docs/remote/containers)
[2]
[https://code.visualstudio.com/docs/remote/ssh](https://code.visualstudio.com/docs/remote/ssh)

~~~
rubber_duck
Electron is not the browser - it's node.js + HTML DOM - I get what you are
trying to say but being electron based doesn't really buy you anything in the
scenarios you listed, native UI IDEs can and do use SSH filesystem and
language servers in a same way VS code does (for example both those features
exist in visual studio proper, and work even more reliably imo)

~~~
carty76ers
Node.js runs on V8, so if you add the DOM and HTML... you have, essentially a
browser.

~~~
rubber_duck
That doesn't really buy you anything distributed over a native UI + IO
framework.

You could use the DOM based text editor (I think the VS code one is called
Monaco ?) to build a cloud IDE (I've seen a few instances of this) but VS code
has nothing specifically suitable for this over standard IDEs.

------
jonathankoren
I hadn’t realized Nuclide was dead. It had a great experience browsing remote
files systems (albeit quite a heavyweight setup, but the big problem with it
is that it tried to do too much. It override almost every preference and
plugin. It was crazy.

You just had to drink the kool aid and give up any thought of of using any of
your own preferences, but it worked.

Guess I’m uninstalling it now.

------
xxpor
Remote development via TRAMP is the number 1 reason I'm stuck with Emacs. More
support via other editors is always appreciated.

~~~
dan-robertson
The sad thing about tramp is that it requires code to be written agains it.
When it was added to emacs, developers had not previously had to think that
some buffers might be on remote machines and so their code would not magically
work agains it. New code ought to be written with tramp in mind using
functions that work remotely but this isn’t always done.

With a complex development environment (say compiler, separate
autocompletion/jump to definition program, version control, maybe a test
runner or other external programs) made out of emacs modes, it only needs one
thing to not be made with tramp in mind or with bugs for the whole thing to
fall apart in practice.

What I have is ssh access to a powerful development box and a relatively non-
powerful desktop (possibly using multiple of these in one day). Everything
runs on the dev box and I use emacs over ssh with x forwarding. This works
fine (the network latency is low and I’m not super sensitive to it anyway)
with some hacks to ssh back to the desktop to play sounds or open links, and a
lot better than tramp or sshfs). But I am a bit worried about the future:
emacs is becoming more graphically complex in various ways leading to more
data needing to be transferred as the X protocol is less suited to it; and X
(and in particular X forwarding) is dying for various reasons. Screen sizes
are also getting bigger. A trivial update at 1080p takes a few hundred kB, a
trivial update at 4K takes close to 1Mb, viewing an image takes a lot more.

The emacs future I’m hoping for isn’t so much a better tramp than a fatter
emacsclient. That is, instead of using ssh to run emacsclient on a remote box,
which causes the server to connect back through ssh to my X server to open a
frame, I would run emacsclient locally which would talk (over ssh I guess) to
the remote emacs and speak a more efficient protocol to it, and use modern
apis to push the pixels onto the screen.

~~~
Scarbutt
Emacs works great in a terminal, all the issues you mentioned disappear ;)
(you didn't mention why you really need GUI Emacs) - I use emacs 95% of the
time inside remote tmux sessions, you also have true color support is that
your thing, what issues do you have?

Also, ITerm lets you open http links.

~~~
dan-robertson
Emacs in a terminal misses out on various text properties, on things like
client frames (or just multiple frames in general), on images, and on
font/size variety. I suppose you may feel like you don’t want to ever touch
the mouse for some reason but I think it’s often useful for scrolling,
selecting, copying, and pasting. There are also a bunch of keys which can’t be
differentiated by a terminal. Finally the gui wastes less space on buffer
dividers and the fringe

------
gravypod
I can't wait for this tooling to advance. It would be amazing to have one IDE
that came pre-configured to work with "every" language and work on code bases
of any size. With the addition of language servers there has never been a
better time to build such tooling.

------
alberth
Has anyone found good documentation on now to get Visual Studio Online (Self
Hosted) setup?

~~~
maskreplica
I used this one recently (using code-server). iPad focused but it's all the
same: [https://medium.com/@ow/its-finally-possible-to-code-web-
apps...](https://medium.com/@ow/its-finally-possible-to-code-web-apps-on-an-
ipad-pro-90ad9c1fb59a)

------
m0zg
BTW folks who haven't tried VS Code SSH remote yet, it's _very_ impressive.
For all intents and purposes you get "local" dev experience on a remote box,
connected over SSH. Python code complete and cross-referencing is much smarter
than what you'd usually get in Vim, and if you want Vim keybindings, you can
have that too. I still use Vim for a lot of things, but when I need to work on
a large codebase and need better code navigation I find myself reaching for VS
Code more and more. Kudos to the team, very impressive product, especially the
remote stuff. I've never before seen anything as seamless as this.

~~~
p1esk
What are the benefits of having local dev experience on a remote box vs coding
locally and sending the code to the remote machine to run it there (e.g.
Pycharm remote deployment)?

~~~
m0zg
Some companies, like e.g. Google or Facebook do not allow company code to be
stored on a laptop, even if it's company laptop. And even if they did have
code there it would not be practical, because everything above the kernel is
compiled from source and it would take forever without build artifact cache.
That, BTW, affects you even if you work with Python, because Python has to
pull in a bunch of custom C++ libs to call the various services, and guess
what, those are also built from source. Add to that the fact that your laptop
is usually a Mac, and you're developing for Linux, and not just any Linux, but
a Google/FB flavor thereof, with custom hacks, custom toolchains, etc. The
code you work with is mapped to your workstation using a custom filesystem, so
you don't store it there either. It's all transparent to you, of course.

So it's not really practical to do "local" development even if that were
allowed.

But even if you aren't at a FANG, your company workstation often has the
"right" set up and it's much more powerful than a laptop, so if you're dealing
with compiled languages it might just be easier to deal with it remotely, as
long as the experience is seamless.

~~~
p1esk
Ok, but what if you want to run the same code on multiple remote machines
(e.g. launch several deep learning simulations)?

~~~
m0zg
At Google you run it on Borg. At companies which have non-trivial on-prem
compute you'll probably find k8s being used for cluster management nowadays,
same idea. Without cluster management you'll have to copy it to the remote
machine (and set up deps there)

~~~
p1esk
Ok, so it seems like Pycharm is still the only tool which can do that

~~~
Shish2k
... you're using pycharm as a cluster management tool? I'm not sure if I'm
impressed or horrified :P

~~~
p1esk
Not a cluster, just three independent GPU servers. Each one has a remote
interpreter configured in Pycharm.

------
filleokus
I have such high hopes for remote development, I want this in all my
editors/environment.

Semi-OT but: How are spinup times for different VM/host options? Would it be
feasible to have a beefy dedicated machine with something on it that spins up
a VM/container when I SSH to it, with all my stuff on it?

Would it be feasible to build something like that with any of the major cloud
hosting providers? One always-on server accepting the SSH connection and
forwarding it to a fresh VM or something?

It seems wasteful to resources allocated 24/7 when they will probably only be
used 8/5.

~~~
whalesalad
Remember that the VM is running on a hypervisor that is on 24x7 regardless of
whether there is a virtual machine there.

The beauty of a VM is that it can get migrated around, so those hypervisor
hosts can get turned off when load is not there. This is something that is
likely happening already.

------
bitL
There is already VSCode server:

[https://github.com/cdr/code-server](https://github.com/cdr/code-server)

What was better in Nuclide that is not in this one?

~~~
dx034
I love code server and have been using it for a while. Hope they don't get
crushed by Microsoft's offer. Though I guess that was always a risk.

------
m0zg
So after reading the article, by "partner" they just mean they replaced their
internal thing with VS Code? Wow, what a monumental achievement!

~~~
Shish2k
> by "partner" they just mean they replaced their internal thing with VS Code?
> Wow

Incorrect - they built their own remote-editing solution (similar to vscode's
built-in edit-over-ssh, but with a load more features), and have been working
with Microsoft to get those features upstream.

------
pjmlp
VSCode is the only Electron based app that I freely install.

Just hope that with the jabs from React Native for Windows team does to
Electron based apps, that eventually VSCode gets rewritten in React Native
instead.

------
sauravs
Article mentions "remote development" is trend now a days. Is it really so ?.
ABAP has been on remote development from day one and its quite an old
language.

------
kristiandupont
This is good I guess but it's interesting to realize that news about vscode
scare me.

It's in such a good place right now. With the exception of multi-monitor
support (the only real issue with Electron, in my opinion, but a big one),
everything about it is wonderful to the point where I feel that it can almost
only get worse from here.

So far the team has been incredible, continuously improving without making it
feel bloated and slow so hopefully my fears will continue to be put to shame
for years. But yeah.

------
data_ders
my ML team is currently developing remote environments along these lines. I
think I'll cry the day we have build pipelines that can auto-upgrade our conda
environments overnight.

------
nnq
ok, so Atom is dead

------
lugg
Read whole thread so far, haven't seen anyone mention their network
conditions. Can people indicate to me if this is just as nice over Pacific
ocean sized hops or is this just working nice when you're talking down the
road / in the building?

------
mychael
> We’re making Visual Studio Code the default development environment at
> Facebook

IDE choice is a highly personal thing. This sounds awful.

~~~
MapleWalnut
It's the _default_, as they say in the article:

> There is no mandated development environment. Some developers use vim. Some
> use Emacs. And even more engineers use our internal, unified development
> environment called Nuclide.

~~~
bitwize
"Default" readily morphs into "only supported". Into "if you use something
else and complain to IT when it breaks, IT addresses the issue by replying
'try using an editor from this century'."

~~~
Shish2k
To my knowledge the "default" editor has changed ~3 times in the past 5 years
(fbide, atom, vscode) - and yet I've been using vim this whole time with no
problems, and never had anybody suggest that I stop ¯\\_(ツ)_/¯

