Initial commit of manual

This commit is contained in:
Tony Garnock-Jones 2022-02-10 13:36:29 +01:00
commit 025fa5e373
9 changed files with 151 additions and 0 deletions

1
.gitignore vendored Normal file
View File

@ -0,0 +1 @@
book/

6
book.toml Normal file
View File

@ -0,0 +1,6 @@
[book]
authors = ["Tony Garnock-Jones"]
language = "en"
multilingual = false
src = "src"
title = "The Synit Manual"

11
src/SUMMARY.md Normal file
View File

@ -0,0 +1,11 @@
# Summary
[Overview](./introduction.md)
- [Architecture](./architecture.md)
- [Installation](./install.md)
- [Preserves](./preserves.md)
- [Protocol](./protocol.md)
[Glossary](./glossary.md)

62
src/architecture.md Normal file
View File

@ -0,0 +1,62 @@
# Architecture
> What is an architecture? It's the rules of the platform which are
> true on any embodiment of it, not just the one you work on today.
> These rules are aimed at programs (what are valid programs) and the
> design (its invariants) both. — [Olivier
> Giroux](https://twitter.com/__simt__/status/1489790925266059264),
> Feb. 2022
The **[Syndicated Actor Model
(SAM)](./glossary.md#syndicated-actor-model)** is the core
architecture of Synit. The SAM builds upon [E-style
actors](./glossary.md#e), replacing message-exchange with
eventually-consistent *state replication* as the fundamental building
block for interaction. Both E and the SAM are instances of the [Object
Capability (ocap) model](./glossary.md#object-capability-model), a
[compositional](./glossary.md#compositional) approach to system
security.
The "feel" of the system is somewhere between Smalltalk-style
object-orientation, publish-subscribe programming, E- or Erlang-style
actor interaction, Prolog-style logic programming, and Esterel-style
reactive dataflow.
1. **Programs are Actors.** Synit *programs*
("[actors](./glossary.md#actor)" in the SAM) interoperate by
*[dataspace](./glossary.md#dataspace)*-mediated exchange of
*[messages](./glossary.md#message)* and replication of
*[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.
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
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.
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.
5. **Strongly typed.** Preserves [Schemas](./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
runtime.

21
src/glossary.md Normal file
View File

@ -0,0 +1,21 @@
# Glossary
## Syndicated Actor Model
Often abbreviated **SAM**.
## Object Capability Model
## Facet
## Assertion
## Dataspace
## System Layer
## Actor
## Message
## Conversational State
## Capability
## Preserves
## E
## Compositional
## Schema
## Macaroon

1
src/install.md Normal file
View File

@ -0,0 +1 @@
# Installation

39
src/introduction.md Normal file
View File

@ -0,0 +1,39 @@
# The Synit Manual
## Welcome!
Synit is an experiment in applying the [Syndicated Actor
Model](./glossary.md#syndicated-actor-model) to the [System
Layer](./glossary.md#system-layer) of an operating system for personal
computers, including laptops, desktops, and mobile phones.
Synit builds upon the Linux kernel, but replaces many pieces of
familiar Linux software, including `systemd`, `NetworkManager`,
`D-Bus`, and so on. It makes use of many concepts that will be
familiar to Linux users, but also incorporates many ideas drawn from
programming languages and operating systems not closely connected with
Linux's Unix heritage.
It is currently **experimental** software.
- Project homepage: <https://synit.org/>
- Source code: <https://git.syndicate-lang.org/>
## Quickstart
If you have a mobile phone or computer capable of running
[PostmarketOS](https://postmarketos.org/), then you can
[install](./install.md) the software to try it out. You can also run
Synit inside a virtual machine.
See the [installation instructions](./install.md) for a list of
supported devices.
## Acknowledgements
Much initial work on Synit was made possible by a generous grant from
the [NLnet Foundation](https://nlnet.nl/) as part of the [NGI
Zero](https://nlnet.nl/NGI0/) [PET](https://nlnet.nl/PET/) programme.
Please see "[Structuring the System Layer with Dataspaces
(2021)](https://syndicate-lang.org/projects/2021/system-layer/)" for
details of the funded project.

9
src/preserves.md Normal file
View File

@ -0,0 +1,9 @@
# Preserves
an S-expression-like language that is a syntactic superset of
JSON. Like JSON, Preserves is not specifically tied to any
particular programming language. Unlike JSON, Preserves has a
robust semantics, designed specifically to be a solid foundation
for networked communication.
## Schemas

1
src/protocol.md Normal file
View File

@ -0,0 +1 @@
# Protocol