Library structure draft
The main Condensation library consists of three parts:
The Serialization part contains functions to serialize and deserialize objects with a proper header-data structure, an SHA-256 algorithm to calculate object hashes, and an AES 256 CTR algorithm to encrypt and decrypt objects. In addition, this part contains functions to work with records, UTF-8 text, and integers.
The Stores part contains functions to access object stores and account stores. Often, there are several store implementations available to cover various protocols. The supported protocols are platform-dependent. Usually, there are stores to keep objects locally (e.g. on a file system), or to access a store over HTTP. Account stores and object stores are treated separately, i.e. you can access an object store even if no corresponding account store exists.
In the Actors part contains functions to manage data of an identity (ourselves) and send messages to peers (other actors). It handles RSA keys, and signed envelopes. In this part, every account store has its corresponding object store, and vice versa.
The folder structure of an implementation often follows this structure. Additional, implementation-specific code resides in its own folder, or in the root folder.
Data tree structure to be finished
Strictly speaking, the data tree implementation does not belong to the condensation library, but is built on top of it.