# COSMIC UNIVERSE `cosmic-space` is part of [THE COSMIC INITIATIVE](http://thecosmicinitiative.io) a WebAssembly orchestration framework. Concepts within The Cosmic Initiative framework exist in one of two dimensions: Universal or Hyperversal. ## WORK IN PROGRESS *this framework is a work in progress and not ready for production. It is ready for community feedback and discussion.* ## TERMS To avoid name collision with other domain many concepts in The Cosmic Initiative are given names from Astro Physics concepts: * Cosmos - Everything that the framework is connected to * Particle - A Resource that can send and receive Waves and provides some sort of functionality. Particles have a Kind (Mechtron,Database,File,User,etc...) * Point - an address usually identifying a Particle * Wave - A message A wave shell contains routing: **to** & **from** and a variety of other fields to describe handling and security. wave core is either **directed** or **reflected** (request or response) and closely follows http request/response format. * Mechtron - A WebAssembly component that implements the `mechtron` & `cosmic-space` framework and is therefore enabled to discover and communicate with the other Particles in the Cosmos... A Mechtron is also the mechanism for extending the functionality of ANY other by intercepting, interpreting and communicating to the particles underlying resource in a way that it can understand. * Control - An endpoint Particle for allowing external connections to the Cosmos. The external Control implements the `cosmic-space` package (or a auto generated serde model for other languages) to communicate with the Cosmos * Cosmic Fabric - This is the space between the particles where Waves travel * Universal Dimension - a simplified view/api of the Cosmos that does not concern it self with security or infrastructure issues * Hyperversal Dimension - The infrastructure layer which enforces security and orchestration (provisioning, sharding, load balancing, etc). ## UNIVERSAL DIMENSION This package--the Cosmic Universe--provides an API and utilities for interacting with the Cosmic Fabric and other Particles within the Universal Dimension. The Universal dimension allows Particles to interact with the Cosmic Fabric and other Particles with almost no need to deal with Orchestration or Security. Concerns like security, provisioning, sharding, load balancing and any other concepts that can be deemed common infrastructure concerns are managed in the background by the Hyperversal Dimension. The purpose of this separation of concerns between the Universe and the Hyperverse is to push as much system complexity into a central location where all interaction is processed so that there is less complexity (and variation) with the various Particles. Particles with less complexity means that they are easier to implement and there are fewer things that can go wrong as there is less duplication of logic in each Particle. Conversely [`cosmic-hyperspace`](../cosmic-hyperspace) Is the package for managing security and orchestration. ### SECURITY EXAMPLE For example let's examine authorization between Particles. We have a source Particle which sends a Wave to a target Particle and the target Particle requires that directed Waves be authorized. the source Particle simply sends the Wave without credentials or tokens or anything... It behaves as if there IS no security. Behind the scenes as the Wave traverses the Cosmic Fabric it enters the Hyperversal dimension and the source's authorization is checked and the Wave is either passed to the target or rejected and returned to the source as an error. Note that the target Particle which is also part of the Universal dimension makes no effort to authorize the directed Wave--it simply assumes that any Wave it receives must be authorized or else it would not have been delivered. Of course, the two dimensional isolation of concerns will collide in the case when the source Particle component does NOT have permission to Wave the target Particle. For this reason the Universe is not completely unaware of the Hyperverse, but at least there is a vast simplification on the code on both ends.