20211013 Development R12 M3 Review - orbitalfoundation/wiki GitHub Wiki

Review

What will a "year one" summary look like?

  1. Conceptual high level overview that covers major points, discusses the problem/opportunity, describes typical user persona and typical use cases. I have 3 use cases: Personal Computer Vision, Farmbot, Creative or Live Programming. Part of the value of a small code base 'blue sky' design is in the thinking. So want to capture that thinking well when we wrap up this demo. I do have a figma sketch which will become the 'pitch' or story about this project.

  2. Technical parts. A detailed sketch of the idea of components, inter component messaging, security model, threads and hypervisor. In general I do want to emphasize that Orbital is technically focused on concepts like ease of programming, security, modular component packaging and distribution, easy to deploy on new devices, and in particular bespoke computer vision for future leaning apps in AR/VR. There's also some emphasis on durability, with few dependencies and build on Rust. It may be worth noting that I don't support HTML at all anymore.

  3. Governance. Simply discussing how the project will be governed moving forward. It may become a DAO.

Code Parts

We are finalizing a first runnable demo. See the 'Mercury' github repo at https://github.com/orbitalweb/mercury. (This version as now been named to distinguish it as a release / prototype of its own).

These are the important concepts and components of the implementation:

Kernel Concepts

  1. Microkernel implements a 'computational soup' of independent service threads.

Messaging Concepts

  1. Namespace is DNS based with all services mounted at a url (even local services)
  2. Rust Crossbeam Channels are using for messaging between services

Service Concepts

  1. All functionality is implemented as services running together in one kernel
  2. All services are threads
  3. Built-in services are services that are compiled into the product
  4. Dynamic services are WASM modules and can be late-loaded on demand
  5. Service Factories can instance copies of a service on demand

Built-in Services

  1. Brokerage Service -> implements a pubsub messaging architecture for other services
  2. View Service -> provides rendering and display support to synthesize user display
  3. Javascript Service -> can run javascript scripting module on demand
  4. WASM Service -> can run a WASM blob on demand
  5. Camera Service -> captures frames of video
  6. Tensorflow Service -> processes frames of video
  7. [TBD] Computer Vision segmentation service provides storage for landscape features
  8. [TBD] Service Package Manager - fetch services over the wire and manage them

Inter Service Messaging Security Policy in more detail

[TBD]

View Service in more detail

  1. Uses a DSL to describe typical visual components (text, images, buttons)
  2. Callers send a message to the view service describing the artifact they want to paint
  3. View service can send back messages and events (such as button selected)
  4. All display content is organized as a directed acyclic graph in the view service memory

Application Level Concepts

  1. One Application is a collection of services, security policies and wires between services
  2. Applications may be defined in a 'manifest'; but can also be composed by hand
  3. [TBD] Hypervisor - will move individual services to best device as needed
  4. [TBD] Semantic Messaging - high level messages can be resolved by best observer
  5. [TBD] Network topology - single applications can be distributed over the net

Flow Grammar

  1. A declarative json based grammar is used to define application manifests
  2. The same grammar is used to describe display elements and layout
  3. The technical approach is to "throw commands" down to Rust from Javascript
  4. Rust based services can also "throw back" events (such as 'user pressed a button')

Demo apps (some are TBD)

  1. Login App
  2. Desktop App [TBD]
  3. Package Manager [TBD]
  4. Button
  5. Clock
  6. App fetched over the wire [TBD]
  7. Computer Vision App [TBD]
  8. App demonstrating security [TBD]
  9. WASM App [TBD]
  10. Multiplayer 3D World Example [TBD]
  11. Audio toy [TBD]
  12. Distributed network topology example [TBD]