Our basic tenets for an Architecture for Complexity
## 1. Data is the Protocol Datasets are where models go to die. Dual Field Theory: Least Action Path. Micro asymmetry of interaction rules as universal control parameter for macroscopic phase transitions in symmetry breaking.
## 2. The Browser is the OS The browser manages data storage, networking, executing applications, controlling peripherals and window layering. **Browser-First strategy** keeps code, simulations and data management in the local browser. Decentralized modules publish and subscribe datasets. Avoid relying on remote procedure calls. Treat mobile agent scripts as data.
## 3. URLs as API channels (Acequia) A Firebase Reference is a URL—our internal protocol that allows models/apps to bind via publish/subscribe with permissions. These channels are language, OS and Client/Server agnostic. Code modules can run anywhere and participate in the Acequia.
## 4. Architect for Synchronized State not Message Passing Abstract away messages and architect for distributed state. Listen for changes rather than sending commands.
## 5. ~98% / 2% split for StreamData vs. SyncedData Most data does not need to be synchronized—it's a stream. Streams are more compatible for offline and p2p architectures. Natural systems have no centralized synced state. StreamData Pub/Sub via WebRTC video and datachannels. SyncedData via Firebase or synching IndexedDB.
## 7. Store Geodata in Tiles Any data with location is stored in tiles. Tiles partition the world and are a Geographic Indexing System (alternative definition of GIS). Models publish/subscribe via tiles.
## 11. A pixel is not a little square Pixels in tiles and points in point clouds are point samples (points with a surround sampling function), not little squares/cubes. > "This is not a religious issue. This strikes at the root of correct image computing and the ability to correctly integrate the discrete and the continuous." — Alvy Ray Smith (1995)
## 16. Notes from Self Our architecture is informed by the design philosophy of the language Self: - **Directness**: Go directly to an object to manipulate it - **Uniformity**: All objects have basic uniform behavior - **Modelessness**: Liveliness, continuously running—no edit then run mode
## 17. Github is where code goes to die "Authoring is Always on." Active Model code will be edited and served from the Acequia. We should have direct interaction with the code on the page.
## 19. Offline first An offline-first strategy ensures seamless functionality by prioritizing local-first design and peer-to-peer data synchronization. Users interact with the app autonomously, maintaining resilience during connectivity disruptions.
## 21. Nearly Decomposable A collection of channels will rarely be isolated to a single app but loosely coupled to other apps. This is consistent with Herb Simon's observation in "Architecture of Complexity" that complex systems are nearly decomposable.
Related
See also Redfish Group, Acequia, AgentScript