moss is a set of parsing rules for js objects, most often described in YAML-like syntax. It is a Turing-incomplete language that looks a bit like YAMl but is closer Kubernetes Helm. Moss aims to have serparable layers, each with an opinionated first choice that is ultimately swappable if desired.
Moss "branches" are somewhat like files but with key differences. A traditional file separates its data (the file contents) from its metadata (owner, permissions). In contrast, a Moss branch is identified by its first line, called a "branch locator".
Example: context::name@Organzation Name~Folder/other tag:version
context aka "forest" - defines which layer 0 resolver to use if sourcing from another forest name - just a file name. Organization Name - Represents permissions projectTags - User defined hints, similar to unix directories version - server or a hash
0 binary
1 source
2 linked structured ast
3 declarative api
opinionated default:
- Signet Protocol, which is essentially an IPFS compatible container format
unopinionated alternatives:
- database
- filesystem
- browser storage
opinionated default:
- yaml
unopinionated alternatives:
- JSON / xml / TOML
- any trie-like format
opinionated default:
- js-moss (this package) hydrates yaml to object, async gql resolvers for linking
unopinionated alternatives:
- load layer 1 into language specific ORM
- be able to link other layer 2 objects.
opinionated default:
- has a "kind" referenced in layer2 drives declarative api like k8s
unopinionated alternatives:
- any runtime object
see more and use interactively in your browser @ https://triemake.com/moss/playground