Cloud Services / Development / Tools

This Week in Programming: Visual Studio Code Arrives on the Web

23 Oct 2021 6:00am, by
Visual Studio Code logo

Microsoft continued its march toward developer dominance this week with the launch of Visual Studio Code for the Web, a lightweight version of the company’s highly popular (mostly) open source code editor that runs fully in the browser.

Now, before you go getting too excited, VS Code for the Web isn’t really a fully-functional version of VS Code running in the browser, as it has no backend to back it up, which means its primary purpose is for client-side HTML, JavaScript, and CSS applications.

“Since VS Code for the Web is running completely within the browser, some experiences will naturally be more constrained, when compared to what you can do in the desktop app. For example, the terminal and debugger are not available, which makes sense since you can’t compile, run, and debug a Rust or Go application within the browser sandbox (although emerging technologies like Pyodide and web containers may someday change this),” Microsoft explains, adding that code editing, navigation, and browsing are “a bit more nuanced”.

That is, VS Code for the Web is able to provide syntax colorization, text-based completions and other such features for popular languages such as C/C++, C#, Java, PHP, Rust, and Go, while TypeScript, JavaScript, and Python are “all powered by language services that run natively in the browser” and therefore provide a “better” experience, while those aforementioned Web languages, such as JSON, HTML, CSS, and LESS, will provide the best experience. Extensions, meanwhile — which are among the top reasons for using VS Code — generally work for user interface customizations (and can be synced with your other environments), but, again, not so much for those back-end features.

Caveats aside, VS Code for the Web does, indeed, offer a lightweight, available-anywhere code editor for things like your tablet, your Chromebook, and heck, even your XBOX.

Now, all that said, we have to ask — where are all the other major cloud providers in this transition of the development environment to the web? While we’ve heard nothing but remote this and remote that for the last year and a half due to COVID, it almost seems like Microsoft is the only one paying any real attention. Every move the company makes seems to be working to get their hooks sunk deeper into that ever-present “developer experience” you hear so much about.

While companies like Amazon and Google seem to be sitting idly by in this arena, Microsoft is not the only company focused on providing remote developer experiences. The Eclipse Foundation, for example, last year offered what it said was “a true open source alternative to Visual Studio Code” with Eclipse Theia and Eclipse Foundation executive director Mike Milinkovich said he expects this to be just the beginning.

“We have been saying for years that the future of developer tools is the browser. Developers already use their browsers for the vast majority of their day-to-day tasks, with code editing being amongst the last to move,” Milinkovich wrote in an email. “Microsoft’s recent vscode.dev announcement is a recognition of this trend. I expect that every serious cloud vendor will be following suit over the next few quarters.”

GitPod, meanwhile, has been hard at work in this very same arena, with its own launch just last month of the open source OpenVSCode Server, which also lets developers run upstream Visual Studio Code in the browser. Gitpod co-founder Johannes Landgraf points to GitHub1s as the original inspiration for these projects, and points to their lack of compute as a defining characteristic.

“Inspired by GitHub1s, github.dev/vscode.dev put the web workbench of VS Code in the browser without access to compute,” Landgraf wrote. “While this is yet another validation that we reached a tipping point of how and where we develop software, platforms such as Gitpod and Codespaces are so much more. Think orchestration and provisioning of compute, operating system, language servers and all other tools you require for professional software development in the cloud.”

While Landgraf obviously has a point, VS Code for the Web is like that $5 rotisserie chicken on Fridays — dang it smells good, it gets you in the door, and the next thing you know, you’ve spent $100 on other things…like GitHub Codespaces, which is, after all, pretty much the same exact thing, except it provides all those back-end services and, more importantly for Microsoft, is not free to use. And more important still, once you’ve got all those developers fully hooked on VS Code, Codespaces, GitHub, and the rest of it, Azure isn’t too far down the line now, is it?

This Week in Programming

  • GoLang Taps the Brakes on Generics in Go 1.18: While the addition of generics to Go was finally approved earlier this year, Gophers may have to wait just a little bit longer for them to make their way fully into the languages core libraries. Rob Pike, one of Go’s original designers, submitted a proposal earlier this month suggesting that they don’t change the libraries in 1.18, and instead move the changes into the golang/x/exp repository for the time being. The exp repository is where the language houses “experimental and deprecated” packages that are not included in the binary downloads of the Go installation, which means they are still available to those who go a little out of their way to get them, but not included by default. Pike argues that generics is “by far the biggest change to the language since its creation” and that “how to use these ideas in the standard library requires great thought and planning.” Rather than putting the changes directly into the core library now, Pike says that putting them into the exp repository will make it so that they “can be tested in production, but can be changed, adapted, and grown for a cycle or two, letting the whole community try them out” and then, “once they have soaked a bit, and updated through experience, we move them into the main repo as we have done with other externally-grown packages, but with the confidence that they work well in practice and are deserving of our compatibility promise.” A quick look at the comments on the proposal seems to signal that this will be the way forward for the official addition of generics, but nothing appears to be set in stone quite yet.