An interesting paper1 arrived in my inbox today from the latest ACM Transactions on The Web:

Mobile web platforms are facing new demands for emerging applications, such as machine learning or augmented reality, which require significant computing powers beyond that of current mobile hardware. Computation offloading can accelerate these apps by offloading the computation-intensive parts of an app from a client to a powerful server. Unfortunately, previous studies of offloading in the field of web apps have a limitation for the offloading target code or require complex user annotations, hindering the widespread use of offloading in web apps. This article proposes a novel offloading system for web apps, which can simplify the offloading process by sending and receiving the execution state of a running web app in the form of another web app called the snapshot

It’s an interesting idea; effectively your browser snapshots the application state, sends it over to the server (DOM-and-all), lets the server do the complex computation and then returns the entire state back to the client.

Not sure that the use-case in practice is particularly general purpose - in the general case, we can offload heavy computation to a server-side element quite easily using APIs (or in this day and age, Serverless functions) and let the client side continue running doing things like keeping the user informed as to progress; where it could be interesting though is if the browser actually chose to do such offloading transparently to the application. One could envisage Chrome automatically offloading your webpage’s execution to Google’s servers for a while when it detects your Chromebook is trying to handle something beyond its abilities…

At some point, we may even reinvent the mainframe and remote desktops for, what, the 10th time?

Anyway, interesting stuff!

  1. Hyuk-Jin Jeong, Inchang Jeong, and Soo-Mook Moon. 2020. Dynamic Offloading of Web Application Execution Using Snapshot. ACM Trans. Web 14, 4, Article 15 (July 2020), 24 pages. DOI: ↩︎