20221001 Orbital 2022 M2 What Is Orbital - orbitalfoundation/wiki GitHub Wiki
What Is Orbital?
Orbital is an 'application sandbox' that lets users create & share 'persistent internet applications'.
Design goals include:
-
providing a industrial strength, portable, safe compute environment for heterogenous apps written by different parties
-
a 'scenario definition language' to describe applications in terms of their intended requirements at a high level, dependencies, security permissions needed, lifetime and cpu expectations
-
to be able to act as a glue service for third party libraries such as machine learning algorithms, cloud computing resources, visualization and rendering tools
-
to be able to run on embedded hardware and also in the cloud as a persistent durable resource; and to somewhat deprecate the idea of computation being pinned to a given device
-
riffing on ideas around agent based models for large scale simulations and metaverse style projects with persistent actors (see https://en.wikipedia.org/wiki/Agent-based_model )... in effect getting away from the model of consumers explicitly loading and unloading apps and instead treating apps more like persistent agents
Why Make Orbital?
We see a future of user created persistent apps that work together. Today these issues are blockers:
-
platform specific -> applications (other than web apps) seem overly tied to implementation and hardware - for example an app and its dependencies can be described using npm modules, or rust crates, or a c makefile, and then associated code in a grammar such as javascript, rust or even c... but most of what an app does is simply talk to a big pile of libraries, which are largely standardized - and the actual glue logic or scripting is often less critical; but the idea of the app cannot be hoisted out of the specific toolchain...
-
poor scenario definitions -> applications don't seem to have very formal ways of describing permissions, this makes it very hard to run an app over the wire... rust/wasm are making great strides here of course
-
needless complexity -> it's difficult for novices to use the current grammars required to define rich apps - it should be possible to define an app leveraging third party libs and a bit of scripting glue - and this should be about as difficult as defining a static website in html
-
lack of persistence -> what's also missing is a way for the average consumer to describe an application or even just a single-purpose agent at a high level and publish that service to a persistent and durable network environment where that service can keep running and interacting with other agents. Most models of computation today for consumers have a concept of "downloading" and "installing" and then "running while being observed" and then "exiting". There just doesn't seem to be a way for consumers to think about software agents that can easily run durably in the background until stopped.