## Blocktree: Be free. ## Mission To create software which asserts user sovereignty over their devices. ## Priorities 0. Crypo: Create a cryptographic library for managing credentials securely using a TPM, and providing confidentiality and integrity protections. 1. FS: Create a POSIX compatible file system interface for interacting with blocks. 2. Msg: Build a message passing interface which can efficiently deliver messages to processes on the same machine and transparently forward them over the network. 3. Raft: Integrate the Raft consensus algorithm to allow multiple servers to serve the same data. 4. Run: Create a runtime for processes, both native and Wasm. ## Objectives The initial development of priority 0 is complete, but there are several enhancements in the backlog. Priority 1 Objectives: 0. Create a block event log (journal) to synchronize local file system operations. 1. Document the file system interface and specify its concurrency semantics. 2. Build a storage daemon which handles all RW messages to a server. 3. Implement a FUSE server to allow the kernel to mount a BT. Priority 2 Objectives: 0. Specify the routing semantics of messages. 1. Build a network daemon which is responsible for routing all messages off of a machine. 2. Implement local message passing using an efficient IPC mechanism, preferably one which is zero copy and lock free. Priority 3 Objectives: 0. Specify the semantics of data location and the messages exchanged in the Raft implementation. 1. Use the Raft crate to synchronize the block event log over multiple servers. Use the message passing interface for all communication. Priority 4 Objectives: 0. Specify the package format and the file system interface used to control the scheduling of processes. 1. Implement an init daemon to schedule processes according to server configuration. This process will be responsible for starting and sandboxing both native and Wasm processes. It will make placement decisions about which native host will run Wasm processes and the operating system services which are accessible to them. 2. Implement a daemon to efficiently host many Wasm processes.