7 ms·
Facebook and Microsoft Partner on Remote Development
- taurath 7y agoI’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.
- loco5niner 7y agoAgreed. I read it the same way (Yay! Remote work!) and was similarly disappointed.
- nachocode 7y agoI thought the same. After working remotely for 3 years I was happy to learn that FB and Microsoft were starting a remote program. I was wrong...
- flyingswift 7y agoDisclaimer: 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 7y ago> 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-engineering/ https://landing.google.com/sre/sre-book/chapters/release-eng...
- arkh 7y ago> Why can't I just fake all those things during my development? Wiremock but it takes some work. I wish public API providers also provided Mock servers for developers.
- IggleSniggle 7y agoAbsolutely agree! If it's any consolation, there are teams that make this possible in a "big corporation" context.
- shaklee3 7y agoOutside 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.
- jsnell 7y ago> all sorts of things tracking your usage and access to everything lends even further credence to the big brother thing. As a user, shouldn't you be happy if the usage / access to everything by Facebook developers is carefully monitored? That should significantly reduce the risk that some insider improperly accesses any of your data.
- coldtea 7y ago>As a user, shouldn't you be happy if the usage / access to everything by Facebook developers is carefully monitored? Only in the sense that I would be happy that the serial killer that captured me uses sterilised blades. That would considerably reduce the risk of infection.
- galkk 7y agoEverything 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 7y agovscode 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 7y agoElectron 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 7y agoNode.js runs on V8, so if you add the DOM and HTML... you have, essentially a browser.
- rubber_duck 7y agoThat 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.
- mychael 7y ago> We’re making Visual Studio Code the default development environment at Facebook IDE choice is a highly personal thing. This sounds awful.
- jimarcey 7y agoDefault is definitely different than mandated. Facebook provides engineers a ton of freedom for their development environment. There are many at FB where we would have to pry vim or emacs out of their hands, and, even then, we would not be successful. :-)
- MapleWalnut 7y agoIt'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 7y ago"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'."
- imtringued 7y agoWhen everyone uses a different editor then no one gets support.
- Shish2k 7y agoTo 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 ¯\_(ツ)_/¯
- mynameisvlad 7y agoHaving a recommended/default IDE is not the same thing as forcing everyone to use it.
- xxpor 7y agoRemote development via TRAMP is the number 1 reason I'm stuck with Emacs. More support via other editors is always appreciated.
- deleted 7y ago[deleted]
- kbumsik 7y agoTry VS Code Remote Development extension now. It is already working as great as native and you will not miss TRAMP anymore. https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.vscode-remote-extensionpack https://marketplace.visualstudio.com/items?itemName=ms-vscod...
- dan-robertson 7y agoThe 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.
- mraison 7y agoVery 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!
- woadwarrior01 7y agoIndeed, I remember trying to switch to IntelliJ locally (with SSHfs on the server), a couple of times and always going back to Nuclide because of the lag with sshfs, whilst working there. Nuclide had a lot of problems, but good support for remote dev wasn’t one of them.
- shaklee3 7y agoWhat is missing from vscode for remote development? MS released their remote development extensions earlier this year, and everything from browsing to searching feels native.
- chrisweekly 7y agoYeah, same rxn. I tried vsc's remote dev stuff to try pair-programming w a friend in another state, and was surprised and delighted at how well it worked. It was effortless and frictionless.
- wolco 7y agoReally? I'll give it a try. When vscode was first released this was the one feature missing.
- shaklee3 7y agoI tried it on the first day it was released and haven't looked back. It's made me significantly more productive than with the old ssh plug-ins.
- data_ders 7y agomy 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.
- jameslk 7y agoThe 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.
- kbd 7y ago> 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). Could you elaborate on this? I’m not familiar with these cloud IDEs.
- paxys 7y agoCrossing international borders with company data and source code is also a huge risk nowadays, so much that several companies I know have banned it entirely. It's safer to keep everything on-site and have employees access whatever they need remotely.
- Corrado 7y agoAWS purchased Cloud9[0] a couple of years ago and is integrating it into many of their cloud offerings. It is now the default editor for Lambda functions, and while I don't use it extensively it seems to work OK. [0] https://aws.amazon.com/cloud9/ https://aws.amazon.com/cloud9/
- DJHenk 7y agoI 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?
- _bxg1 7y agoI 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.
- simlevesque 7y ago> usurped their idea. Monaco was a thing way before Atom was. It was publicly released after Atom but it was already in some of Microsoft's websites.
- abrowne 7y agoMonaco here being the code editor VSCode uses, not the Apple font or microstate.
- _bxg1 7y agoThat's interesting to know; perhaps it was just the right time for independent discovery. Still, a web-based code editor on its own has independent utility from an IDE. I'm not sure they would've taken the plunge into a full-on Electron IDE without Atom first showing that there was demand for one.
- SahAssar 7y agoI don't think Atom was first with that idea, for example Brackets was in development before Atoms first release.
- WorldMaker 7y agoMonaco was already embedded in the IE 10+ Dev Tools before Atom, and Browser Dev Tools are IDEs in almost every respect other than being bundled independently from a Browser, and even that has changed in some recent respects (you can run Chromium's Dev Tools as an independent app). (In an interesting full circle, the Elements for Edge plugin to VS Code makes VS Code a full DOM browser for Chromium-based Edge.)
- naoru 7y agoI'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.
- usecodium 7y agoJust 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-remote-development-extensions-or-their-components-open-source https://code.visualstudio.com/docs/remote/faq#_why-arent-the... 2: https://github.com/microsoft/vscode/wiki/Differences-between-the-repository-and-Visual-Studio-Code https://github.com/microsoft/vscode/wiki/Differences-between... 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/103 https://github.com/microsoft/vscode-remote-release/issues/10... (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 7y agoFuck. I really bought into MS's open VSCode spiel.
- Sammi 7y agoIt'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.
- jonathankoren 7y agoI 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.
- filleokus 7y agoI 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 7y agoRemember 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.
- lovetocode 7y agoI did remote development through Putty sessions using vim/tmux for several years. Would have been nice to have something like this.
- lugg 7y agoRead 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?
- m0zg 7y agoSo after reading the article, by "partner" they just mean they replaced their internal thing with VS Code? Wow, what a monumental achievement!
- Shish2k 7y ago> 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.
- alberth 7y agoHas anyone found good documentation on now to get Visual Studio Online (Self Hosted) setup?
- maskreplica 7y agoI 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-on-an-ipad-pro-90ad9c1fb59a https://medium.com/@ow/its-finally-possible-to-code-web-apps...
- gravypod 7y agoI 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.
- m0zg 7y agoBTW 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 7y agoWhat 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 7y agoSome 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 7y agoOk, but what if you want to run the same code on multiple remote machines (e.g. launch several deep learning simulations)?
- songzme 7y agoI 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.
- sbmthakur 7y agoGlad to hear you are doing that. If I may ask, does the program/course has any online presence?
- songzme 7y agoI'm trying to document everything we teach here: c0d3.com/book
- lightgreen 7y agoI don’t believe people who can’t learn vim can actually code something meaningful, but why not use any other editor like nano?
- madhadron 7y agoDo you think that figuring out vim is a good use for people who are probably time limited anyway and are trying to build useful skills? Using a vi clone is a lifestyle choice, not an employable skill. Frankly, so is nano or anything else that asks them to abandon the skills they may have developed for navigating their computing environment.
- lightgreen 7y ago
- bitL 7y agoThere 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 7y agoI 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.
- kristiandupont 7y agoThis 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.
- sauravs 7y agoArticle 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.
- pjmlp 7y agoVSCode 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.
- nnq 7y agook, so Atom is dead
- masterwok 7y agoWhy 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.