In Simorg’s worldview, a <<<Shell>>> is a wrapper around one or more Vibrations.
Imagine you are listening to music in your room. The room itself is a Shell, because it separates what happens inside from what happens outside (sound insulation).
Now consider the speaker playing the music. It has a physical body that acts as a Shell, encapsulating its internal components. It is designed to send audio vibrations outward—so it is a Shell that outputs Vibrations.
Finally, you—sitting in the room and listening—are also a Shell. Your body can receive audio Vibrations from the environment.
Using this perspective, we can model the universe as a nested structure of Shells. Some act as Isolators; some have Inputs and Outputs. There is also an implication when a Shell wraps an Entity: for example, a speaker on a shop shelf is not yet “yours,” but when it is in your room, that Shell (your room) contributes to the meaning of ownership in that moment. Shells add an extra layer of meaning to the Entities they contain.
In many <<<CPLs>>>, the concept of isolation is known as “scope.” Simorg replaces the concept of <<<Function>>> with <<<Shell>>>.
Vibrations always occur within a Shell; if the Shell permits, they can continue beyond it. Because Vibrations are always data-driven, it is effectively the Data itself that “absorbs” Shells as it flows. This is easiest to visualize with an animation: imagine clicking a “vibrate” button and watching each Shell receive and pass on the Vibration.
[TODO]: Add the vibration animation.
Simorg’s Shells follow the same approach in code. They wrap Vibration (Data) under the hood, add new meanings to it, and as a Vibration moves through the system it passes through Shells both vertically (like a WrapperShell or scope) and horizontally (like a DataflowShell).
The concept of Shell is not limited to the Code we write. The Simorg Platform itself is a Shell, within which users can create <<<Spaces>>> to further segment their universe. Finally, the <<<Machines>>> (Desktop, Server, Mobile, IoT) that run the Simorg Engine are also Shells.
Simorg uses the following Blueprint Shell types:
- Application Shell
- Component Shell
- IoT Shell
- Plugin Shell
- Simorg Package
- Simorg Bundle
Simorg language is also built on top of other helper shells, some known to us and some only used internally in the engine,
- Identifier Shell
- Value Literal Shell
- Gate Shell
- Calculational Shell
- Dataflow Shell
- Wrapper Shell
- Special Shell
- Reference Shell *
- Machine Shell *