We need a better abstraction of digital workspaces.

When you run a software application on any modern device, you get some kind of window with the content of what it’s doing, and some number of processes in the background which perform the work.

Virtualization tools like VirtualBox allow you to run programs in a completely enclosed environment which look and feel just like any others. Some virtualization tools like Xen also allow software to run redundantly on multiple machines at the same time with milisecond failover if something goes wrong with one of the machines.

When I think about the role of mobile devices in the near future, there will be a lot more virtual-reality. Specifically, one major place that will be impacted by this is the way we work. Hardware is expensive. Redundant hardware is especially expensive in the context of opportunity cost.

Imagine if you will, a person a few years from now who needs a workspace with multiple 4k screens and lots of compute power to do various tasks, but wants to avoid paying for all of that. One obvious option is renting the compute power. There are numerous services which allow users to rent time on high powered machines in the cloud. I have several of these for various projects.

So imagine using something cheap like Google Daydream or an even cheaper alternative. Combine that with something like React VR, and you can already create an immersive virtual reality experience on any modern mobile device. So why not include virtual workstations in that environment which interact just like a real machine, because they are connected to a real machine somewhere in the cloud. Maybe some tasks are simpler, so they can be performed on the device itself. Maybe there is a single way to think about both types of tasks.

If we create simple virtual machines which can automatically switch their load to and from the cloud as demand increases or decreases, we will solve more problems than just this.

Imagine the implications for today’s applications. If my laptop, phone, and work machine were all literally using a shared, distributed container system to run my applications, those applications could move seamlessly between my devices. If I need to render something complex on my phone, my laptop can help. If I want to pick up exactly where I left of in a spreadsheet, I’m already there.

There are already technologies which have most of these features. For example, I could just use remote desktop on my phone and laptop to connect to my work machine and use applications there. I often do this. The problem is connectivity. If I have no connection or a slow connection, I have no access to my apps and data.

Likewise, if I use Xen to virtualize a workspace which is colocated in the cloud and at my home and work, I have to do that to the entire operating system, not just the applications I want to use.

Let’s go back to the person working in a virtual workspace within React VR on their cell phone. Maybe the short-term answer is just remote desktop. Maybe connecting their virtual workstation to a real one in the cloud via something like VNC is the answer. Maybe a cool, old-fashioned looking terminal within the virtual environment is a good alternative to something like putty on the desktop. But I think these types of solutions will lead to something more like what I am describing.