What does it mean for a programming language to follow first malleable.systems principle:
Software must be as easy to change as it is to use it
My medium is code, and its infrastructure is the 1) language, 2) its implementation, 3) tooling, 4) its ecosystem, 5) the community, 6) the literature, the code’s noosphere.
Picking up just the first three is nowadays difficult for newbies, and hard to keep up for seniors.
Make the language easy to use, the implementation easy to understand, and the tooling built on existing know-how that is the goal of Möbius, and of its current iteration bb: a single CLI gathering what otherwise requires git, pip/uv, gunicorn, and the rest.
To be wholly accessible, accurate, and economical bb must cross the chasm of any gap in 4) its ecosystem 5) the community, and 6) the literature.
If one, two, three are good, the four, five, six follow with much less effort; because there is no separate ecosystem to bootstrap, only a content-addressed store any one can append to. This is why bb already supports multilingualism. That is one logic, multiple natural languages, and soon multiple syntax (read: unicode art).
That is where I landed from the previous thread history as a first class citizen.
Keeping track a project history should not require a PhD in git. Sharing my clicker game should be as easy as composing a meme as mashup of existing combiners that i found with the help of the very same tool. Zip it, mail its manual defining a vm of 43 primitives with the guarantee that it will be reproducible in unforeseen situations.
It must be possible to situate without schism.
I understood for many the activation of the visual cortex is a must. I am not ready to go blind: I love dancing, and even more seeing people dancing, and I can’t believe that may be possible for me to enjoy the description of ballet in words the way I enjoy the dance of the wind on the water, or the way I enjoy prose. That is a way to say words are my medium, and code its ultimo i/o. Code is my medium, that’s where I am nowadays.
The near question is: bb --help usage looks like the following:
$ ./bb
bb — Mobius seed evaluator and store manager
Usage:
bb add [--derived-from=<ref>] [--relation=<type>] <file|->
Parse, normalize, store, and bind
bb add --check <combiner> <check> Register check for combiner
bb caller <ref> Show reverse dependency DAG
bb check <ref> Run all checks for ref and its dependencies
bb commit [name... | --all] Promote staged combiners to committed
bb diff <ref> <ref> Compare two combiners (pretty-printed diff)
bb edit <ref> [lang] Edit combiner in $EDITOR, re-add on save
bb eval <expression> Evaluate a single expression
bb log [ref] Show timeline
bb print <ref> Output Chez Scheme library with all dependencies
bb anchor <ref> Request or upgrade OpenTimestamps proof
bb refactor <ref> <ref> <ref> [<ref>] Replace old with new in root tree
bb mapping list <ref> List all mappings for a combiner
bb mapping delete <ref> Delete a mapping (ref must include mapping hash)
bb mapping set <ref> <key> <value> Set a mapping entry (0=name, 1+=params)
bb remote add <name> <path> Add a remote store endpoint
bb remote list List configured remote store endpoints
bb remote remove <name> Remove a remote store endpoint
bb remote push <name> Push committed combiners to remote
bb remote pull <name> Pull committed combiners from remote
bb remote sync Pull and push all configured remotes
bb remote publish <name> <ref> Mark ref (and closure) public to <name>
bb remote stop <name> <ref> Stop publishing ref to <name>
bb repl Interactive Seed session
bb resolve <ref> Resolve ref to full spec
bb review <ref> Mark combiner as reviewed
bb run <ref> [args...] Evaluate a registered combiner
bb search <query> Search combiner names and content
bb show <ref> Display combiner doc and definition
bb status Show working state
bb store info Show store statistics
bb store init Create a new mobius-store
bb serve [--port N] [--api-key K] <app-ref> <handler-ref> Serve over HTTP
bb tree <ref> Show dependency DAG
bb validate Verify store integrity
bb worklog <ref> [msg] View or add work log entries
bb --help Show this help
bb --version Show version
Version: 0.1.0
Is this surface comprehensible without a week of immersion?