Troubleshooting the shutdown of Tinkercad got me thinking about high-performance computing and distributed architectures again (specifically in researching alternatives to the Gen6 kernel at the heart of Tinkercad’s objection to going open-source). While reading the Tinkercad developer docs to gain an understanding of the interface or API of the Gen6 kernel (with the intention of sourcing or implementing a replacement for these server components of Tinkercad) it occurred to me that with the introduction of Webworkers and WebRTC , as well as the commonplace nature of moderately powerful GPU’s in many computers, perhaps a truly distributed processing architecture could take the place of the Gen6 kernel in an open version of Tinkercad?
But why stop there?
Using something like the Javascript/JSON job control structures used by Tinkercad, why not allow any processing job so defined be submitted to a browser-based processing grid? Designed correctly, a compute-bound application could emit its work as chunks of code+data as Javascript functions and JSON to this grid and tap into extra clock cycles of underutilized systems (perhaps simply interleaving requests within the single application’s domain, or across a more global subset).
This seems like it could be a nice complement to the Unhosted-style decoupled identity and data concepts, adding high- performance processing capabilities to Unhosted applications.
Participation in such a distributed architecture needn’t be limited to general-purpose machines either. Specialized processing nodes based on GPU or custom FPGA devices could be pooled in this fashion, or even spare cycles on specialized devices such as network hardware or consumer electronics; but starting at the browser seems like the lowest point-of-entry.