Blocktree: Be free.
Mission
To create software which asserts user sovereignty over their devices.
Priorities
Crypo: Create a cryptographic library for managing credentials securely using a TPM, and providing
confidentiality and integrity protections.
FS: Create a POSIX compatible file system interface for interacting with blocks.
Msg: Build a message passing interface which can efficiently deliver messages to processes on the same
machine and transparently forward them over the network.
Raft: Integrate the Raft consensus algorithm to allow multiple servers to serve the same data.
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:
- Create a block event log (journal) to synchronize local file system operations.
- Document the file system interface and specify its concurrency semantics.
- Build a storage daemon which handles all RW messages to a server.
- Implement a FUSE server to allow the kernel to mount a BT.
Priority 2 Objectives:
- Specify the routing semantics of messages.
- Build a network daemon which is responsible for routing all messages off of a machine.
- Implement local message passing using an efficient IPC mechanism, preferably one which is zero
copy and lock free.
Priority 3 Objectives:
- Specify the semantics of data location and the messages exchanged in the Raft implementation.
- Use the Raft crate to synchronize the block event log over multiple servers. Use the message
passing interface for all communication.
Priority 4 Objectives:
- Specify the package format and the file system interface used to control the scheduling of
processes.
- 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.
- Implement a daemon to efficiently host many Wasm processes.