So my thought is to get a node.js runtime operational directly on top of the Xen Hypervisor and use this as the foundation for JS/OS. With nothing more than this, I should be able to support everything that JS/OS itself needs to do from a server perspective.
To add a user interface layer is a matter of providing enough support to render a web browser, which means support for a display and the various underpinnings necessary to render HTML visually (I imagine handling typefaces, vector and bit mapped graphics, etc.)
This stage, the visual user interface, is where the complexity skyrockets. On one hand there are plenty of existing open-source codebases to build on, but they have an extraordinary amount of dependencies, many of which exist to support functionality that will go unused in JS/OS. On the other hand writing something like this from scratch (as well as maintaining it as HTML specifications change) is a daunting task.
I’m tempted to skip it altogether and move on to the next generation of visual user interfaces: virtual reality . Perhaps surprisingly implementing a VR UI from “scratch” is far less intimidating and actually familiar territory for me. This does mean giving up a potentially large range of applications that JS/OS could be used for during the transition from existing GUI’s to commonplace immersive UI’s, but reservations about that might be more of a cognitive hurdle than a real one (after all, consider how quickly we’ve moved from mouse-based desktop metaphors to tactile interfaces).
So where does this leave JS/OS? From one perspective it is a dead-end, if you believe that I’m right about VR. However there is probably a lot of road between where we are and the end of that road (perhaps a decade or even a generation). I also think there are architectural lessons yet to be learned from JS/OS that will pertain to any distributed system which can be applied to a future VR-based system even if none of the direct implementation is shared.
The question for me then comes back to the right way to provide a UI for JS/OS applications, and I’m leaning toward building something from scratch, but I plan to investigate the existing options more deeply before committing to something that ambitious.