diff --git a/src/architecture.md b/src/architecture.md index f685c82..a41467a 100644 --- a/src/architecture.md +++ b/src/architecture.md @@ -26,33 +26,29 @@ reactive dataflow. *[conversational state](./glossary.md#conversational-state)* expressed as *[assertions](./glossary.md#assertion)*. - 2. **Ocaps for security and privacy.** The ocap model provides the - fundamental building blocks for secure composition of programs in - the system. Synit extends the core ocap model with - [Macaroon](./glossary.md#macaroon)-inspired *attenuation* of - capabilities, for both limiting visibility of state and - constraining access to behaviour. + 2. **Ocaps for security and privacy.** The ocap model provides the fundamental building blocks + for secure composition of programs in the system. Synit extends the core ocap model with + [Macaroon](./glossary.md#macaroon)-inspired *[attenuation](./glossary.md#attenuation)* of + capabilities, for both limiting visibility of state and constraining access to behaviour. - 3. **Reactivity and homeostasis.** Programs publish relevant aspects - of their internal state to peers (usually by placing - [assertions](./glossary.md#assertion) in a dataspace). Peers - subscribe to those assertions, reacting to changes in state to + 3. **Reactivity and homeostasis.** Programs publish relevant aspects of their internal state + to peers (usually by placing [assertions](./glossary.md#assertion) in a dataspace). Peers + [subscribe](./glossary.md#observe) to those assertions, reacting to changes in state to preserve overall system equilibrium. - 3. **Layered architecture.** Programs may or may not be structured - internally using SAM principles: the system as a whole is where - the architectural principles are applied. However, it often makes - good sense to use SAM principles *within* a given Synit program as - well as *between* programs. + 3. **Heterogeneous; "open".** Different programming languages and styles interoperate freely. + Programs may or may not be structured internally using SAM principles: the system as a + whole is where the architectural principles are applied. However, it often makes good sense + to use SAM principles *within* a given Synit program as well as *between* programs. 4. **Language-neutral.** Where possible, programs interoperate via a simple [protocol](./protocol.md) across transports like TCP/IP, WebSockets, and Unix sockets and pipes. Otherwise, they interoperate using traditional Unix techniques. The concrete syntax for the messages and assertions exchanged among programs is - the [Preserves](./preserves.md) data language. + the [Preserves](./guide/preserves.md) data language. - 5. **Strongly typed.** Preserves [Schemas](./preserves.md#schemas) + 5. **Strongly typed.** Preserves [Schemas](./guide/preserves.md#schemas) describe the data exchanged among programs. Schemas compile to type definitions in various programming languages, helping give an ergonomic development experience as well as ensuring safety at diff --git a/src/glossary.md b/src/glossary.md index 8298f29..88eb238 100644 --- a/src/glossary.md +++ b/src/glossary.md @@ -2,6 +2,7 @@ ## Actor ## Assertion +## Attenuation ## Bus Scripting Language ## Capability ## Compositional @@ -12,6 +13,7 @@ ## Macaroon ## Message ## Object Capability Model +## Observe ## Preserves ## S6 ## Schema