Skip to content

Definitions

Trevor F. Smith edited this page Apr 18, 2021 · 5 revisions

Definitions

Like any other system, the Stellar Mesh has lingo to package up complex ideas into short phrases.

Just like the web has "browsers", "pages", and "sites" the Stellar Mesh has a few key terms. After you read this page you'll understand this sentence:

The Stellar Mesh is a network of nodes that host sandboxes that provide capabilities to a variety of engines and runnables which work with local apps via advertisements to provide a sweet way to safely and easily manage XR experiences in a variety of rigs.

Whew! That's a mouthful.

Bundle: A transferable unit of bytecodes, metadata, and data

Runnables are transferred over the network as bundles.

Engines are also transferred over the network as bundles.

Metadata include GUIDs, capability interface signatures, origins, and versions.

Dynamically loaded assets like tile sets for a mapping application can also be distributed as bundles.

Bundles are a variant of a zip file or other standard, compressed, multi-file wadges of bits.

Runnable: A bundle with metadata requesting an engine and a sandbox configuration

A runnable is what people think of as their main "unit of functionality". It fits into a vaguely similar mental slot as a "page" on the web, a "program" on a PC, and an "app" in a store.

"Hey, have you tried the new Wikipedia runnable on the Stellar Mesh? It's fabulous!"

Examples:

  • VR flight simulator runnable
  • Pinball arcade runnable
  • Spatial wikipedia runnable
  • Manufacturing inventory tracking runnable
  • VisiData runnable

Engine: A runnable-independent bundle

An engine is a reusable bundle that is downloaded and cached for use by multiple runnables.

Engines are usually much larger than runnables.

"There's an updated engine for the inventory runnable that improves graphics quality 10x!"

Examples:

  • Map tile engine
  • Game engine
  • Wiki engine
  • CLI / terminal engine
  • Gemini engine

Capability: A handle and usage permissions for a resource

A capability description is made up of two parts: an id and a set of permissions. Bytecode can ask its sandbox for a capability using a description.

Example resources:

  • Input: cameras, keyboards, wands, etc
  • Output: speakers, displays, haptics, etc
  • Payment
  • Storage
  • Network
  • Advertisements (see below, this isn't an ad trying to sell you something)

Sandbox: A protected environment in which an engine and a runnable execute

All of the logic (aka "the program") on the Stellar Mesh takes the form of WebAssembly bytecode and that logic must be run in a way that protects your device from code written by bad or clueless actors.

Enter sandboxes! One aspect of WebAssembly that makes it the obvious choice for the Stellar Mesh is that it was designed from the start to be securely contained. It runs fast but also can access only specific resources. A sandbox can control access to the local file system and to the network in specific ways. They can even give no access to those resources!

Stellar Mesh sandboxes run and contain engines and runnables. They also provide access to capabilities in a way that the user can understand and control.

Origin: A security boundary in which runnables trust each other

The web has a specific and thorough definition of an origin that combines the network scheme, domain name, and port to put a boundary around web pages and resources that can (to a large degree) trust each other.

Because the Stellar Mesh supports protocols that don't use DNS-provided names and the Internet is more complex than when the web was created, Stellar Mesh "origins" are (skipping many important details) a set of nodes that are willing to share more with each other than with random public nodes.

Yes, this is a fuzzy definition but hopefully a solid starting place.

Node: A local program with which people manage their experiences

Many (most?) people think of their browser as "the web" even though that's not technically accurate. If anything, servers are "the web" and browsers (or HTTP code libraries) access it. But, people still open up "the web" (their browser), enter a name or partial URL into their search field, and then follow the first result that looks kind of right. If they're web enthusiasts then perhaps they type in an actual URL and go directly there.

Many (most?) people will think of their node as "the Stellar Mesh" and while it's still not 100% accurate it's more true than for a web browser because the Stellar Mesh is less centralized than the web. While there are well-known nodes with varying abilities on the Stellar Mesh, each node can provide services to other nodes as well as to local programs on the same device as the node.

Nodes communicate with each other over networks and also nodes communicate with device-local apps via advertisements (see below). This is why it's named the "Stellar Mesh" instead of the "Stellar Web".

Advertisements

Many operating systems provide mechanisms for device-local applications to communicate with each other, separate from how they communicate over networks. When you use the "Share" functionality on Android or iOS, that's local applications communicating with each other.

Stellar Mesh nodes can take advantage of those OS-specific communication mechanisms and they also offer a new mechanism: advertisements.

These aren't the "sell you something" advertisements. They're a way for nodes (as well as any active engines and runnables) to make themselves available for use by other device-local programs.

Example

Say that you're using a Stellar Mesh runnable that provides a nice spatial interface to your city's real-time information about its public transit system. It's great! You can fly over the city, see where each bus and train is located, find the flattest and safest routes for cycling, and even take a look at the proposed extension to the light-rail system.

This runnable is great for those application-specific tasks because the authors are very knowledgable about that domain. However, now it's time for you to attach a video annotation to a bus stop with tips on nearby coffee stands. It would be a lot of work for the runnable authors to implement a full-featured video recorder with stickers and filters.

Instead, the runnable advertises for local applications that are willing to handle video recording and can provide a final video in a format that the runnable can accept. The node takes care of the mechanics of advertising as well as switching between the city's runnable and the video recording app.

Local apps do what they do best (with full knowledge of the local hardware's "fingerprint") and runnable authors focus on their domain-specific features.

The Stellar Mesh: The set of all interconnected nodes on the Internet

Just like there are private networks and private web servers (sometimes called "our intranet") there can be private Stellar Meshes. The big one that has a lot of publicly accessible nodes is "The Stellar Mesh".

Rig: A hardware configuration that a person uses to interact with the Stellar Mesh

People come in all shapes, sizes, capabilities, and attitudes. They pick a wild variety of hardware and software with which to access the Stellar Mesh. Their beliefs and needs change from minute to minute.

In other words, people show up with an almost infinite variety of rigs.