Investigate a WASM or client-based approach to remote development environments
Purpose
Investigate whether a purely browser-based solution can exist for Remote Development. Web Assembly (WASM) is maturing and may provide an opportunity to solve the remote development needs for at least some of our customers, particularly those working on JavaScript applications.
Scope
The completion of this issue should be an assessment of WASM as a front-end option for remote development. Answering the questions:
- Can we meet our customers' expectations with a purely browser-based solution?
- What functionality can be achieved using WASM today?
- What functionality can we imagine being available in the next 12-24 months?
- What features are never going to be possible with a browser-based solution?
Details
One of the big hurdles to rolling out a remote development offering is the amount of infrastructure required to provision and manage containers. What if we ran everything locally in the browser?
Others are paving the way in this area. Stackblitz and Replit are two worth investigating. In particular, digging into Stackblitz's open source projects and this blog post about an open source implementation of Replit's browser-based runtime could help us understand if there is anything we can do in this space. See also runwasm
Outcome
There are aspects of a WASM runtime that are extremely compelling. Stackblitz, among others, have been pushing the boundaries here and the future is very exciting. There are, however, significant limitations when compared to a server-based runtime environment. Specifically:
- Browser runtimes are limited in the languages they can support
- Complex, multi-project environments could be a very difficult challenge
- It's only supported on Chrome and bleeding-edge browsers, though adoption is picking up speed
There are many benefits to weigh against those limitations, but for our customers and their complex environments, it will remain a long-term play and not something we look to implement in the near future.