Improve the Loader-Key system
Task Description
The current loader-key architecture is very arcane and unclean. It is very hard for new users to understand how new keys are constructed or derived. The envisioned system has to provide a clean guided structure for the users so that it is clear what objects are accepted, and that error messages are cleanly typed.
Solution Approach
There are three basic key structures that should have equivalents in the API
(1) unique keys: Example: Raw-keys, which are a byte-array, that already contains the content. Unique keys are not derivable and have no relation to other keys.
(2) flat keys: A key that is a set of several name-value pairs. Compound keys in a database would be an example for such keys. A key can be derived by changing one or more elements of the key-set and keeping the rest unchanged.
(3) hierarchical keys: A key that identifies an element in a tree. Filesystems are examples for such keys. Keys can be derived by navigating the tree from the current tree to a new position using a 'relative' path/key.