Syzygy has five layers, from bottom to top as follows. 1, an OS-portability layer. 2, a network communications layer. 3, communication protocols for things like graphics and audio. 4, a distributed operating system that forms things like sound players and remote scene graph renderers ("media objects"). 5, application frameworks for various styles of cluster programming.
Windows, Unix, etc., differently implement threads, locks, sockets, and serial I/O. This layer hides these differences. This necessarily omits some idiosyncratic features, but that doesn't hurt Syzygy as a whole. Details are in the Portability Layer chapter.
This layer provides tools for constructing communications protocols that are easy to change, automatically convert data formats, and robustly connect/disconnect/reconnect in an unreliable network environment. A protocol is defined by a dictionary of message templates, which defines the semantics of the sendable messages. Data transfer objects then manage connections and data transfer. Eventually, this layer will contain an abstract interface to the underlying communications medium, allowing the same code to work over TCP, UDP, or shared memory communications pipes.
Protocols for manipulating media information implement synchronization; distributing and rendering a scene graph; manipulating and playing a sound database; and communicating with input devices.
Network-based synchronization primitives provide "active stereo" swap lock across displays.
The distributed database itself is simple, while the graphics and sound implementations built on it are elaborate.
A master database accepts network connections from remote slave databases. At connection, the master database dumps itself in the slave database, creating two synchronized copies. Subsequent changes to the master database are automatically mirrored to the slave, creating consistency without programmer effort.
The general input device framework lets distinct physical devices aggregate into larger virtual ones. The data streams flowing through these devices can be filtered arbitrarily.
One program, szgserver, manages basic services of a distributed operating system. One instance of this program runs per Syzygy installation. All Syzygy programs connect to it. To avoid bottlenecks, it only sets up connections between elements in the distributed system. Another program, szgd ("Syzygy Daemon"), runs on each computer to provide remote execution services.
The distributed operating system manages processes. Applications can be started or killed on any computer, by typing commands at any other computer. Applications send messages to one another through a standard interface for interprocess communication. A parameter database, managed by szgserver, acts as a config file maintable over the network. This replaces the text configuration files that might otherwise be scattered across many computers.
The distributed operating system supports multiple users.
Details are in the Cluster Mode chapter.
These objects include SoundRender, for the distributed sound database, and szgrender, for the distributed graphics database. They turn information from the network into sensory events.