125 lines
4.4 KiB
Markdown
125 lines
4.4 KiB
Markdown
## Datomic as a Backend for Geolog
|
|
|
|
### Short Answer
|
|
|
|
Datomic could plausibly serve as the persistence layer for Geolog, but not as the full logic/runtime backend.
|
|
|
|
It matches Geolog's desire for:
|
|
|
|
* Persistent, append-only storage with history
|
|
* Interactive mutation over evolving instances
|
|
* Datalog-style querying over stored facts
|
|
|
|
It does **not** by itself provide the core Geolog semantics described elsewhere in these notes:
|
|
|
|
* Existential witness generation during the chase
|
|
* Disjunctive branching into multiple candidate models
|
|
* Equality saturation / term merging
|
|
* Typed theories, dependent theories, and nested instances as first-class language concepts
|
|
|
|
So the right mental model is:
|
|
|
|
* Datomic stores Geolog state
|
|
* Geolog implements its own chase/type/equality engine above Datomic
|
|
|
|
---
|
|
|
|
### Why It Fits Part of the Problem
|
|
|
|
The notes describe Geolog as infrastructure with persistent, append-only storage and an interactive REPL, not just as a one-shot solver. Datomic's
|
|
immutable fact model lines up well with that storage story.
|
|
|
|
Good candidates to store in Datomic:
|
|
|
|
* theory definitions
|
|
* schemas for sorts, functions, and relations
|
|
* user-authored instance data
|
|
* derived facts and provenance
|
|
* transaction history
|
|
* saved snapshots / named worlds
|
|
|
|
This is especially attractive if Geolog wants:
|
|
|
|
* time travel / "as of" inspection
|
|
* auditability of derivations
|
|
* incremental recomputation from prior states
|
|
* a durable log of REPL activity
|
|
|
|
---
|
|
|
|
### Where Datomic Stops Being Enough
|
|
|
|
The Geolog notes are clear that the system goes beyond plain Datalog.
|
|
|
|
Geolog needs chase behavior that can:
|
|
|
|
* invent fresh witnesses for existential conclusions
|
|
* branch when a rule concludes a disjunction
|
|
* merge terms when equations force equality
|
|
|
|
Those are central to the chase-based model described in the notes, and they are not features Datomic gives you as a database. Datomic gives you a
|
|
temporal fact store plus Datalog query tools; it does not give you a geometric-logic engine.
|
|
|
|
That means a Datomic-based Geolog would still need its own:
|
|
|
|
* rule compiler / evaluator
|
|
* model-branch management
|
|
* equality class machinery
|
|
* fixpoint / chase scheduler
|
|
* termination controls and bounds
|
|
|
|
Inference: Datomic is a reasonable substrate for storing models and derivation history, but it is not a substitute for the core Geolog runtime.
|
|
|
|
---
|
|
|
|
### Licensing and Stack Implications
|
|
|
|
As of March 26, 2026, Datomic's official docs say that all editions are free and that the binaries are licensed under Apache 2.0, while Datomic's own
|
|
FAQ says it is not open source because the source is not published.
|
|
|
|
Official sources:
|
|
|
|
* [Datomic Overview](https://docs.datomic.com/datomic-overview.html)
|
|
* [Datomic Pro Releases](https://docs.datomic.com/releases-pro.html)
|
|
* [Datomic is Free](https://blog.datomic.com/2023/04/datomic-is-free.html)
|
|
* [Datomic Local is Released](https://blog.datomic.com/2023/08/datomic-local-is-released.html)
|
|
|
|
Practically, that means:
|
|
|
|
* You can use Datomic inside a stack whose other components are open source.
|
|
* You can redistribute Datomic binaries where the Apache-licensed binary terms allow it.
|
|
* Datomic does not force the rest of the stack to become closed-source.
|
|
* But you are still depending on a source-unavailable vendor component.
|
|
|
|
That source-unavailable dependency has real engineering consequences:
|
|
|
|
* you cannot inspect or modify Datomic internals
|
|
* you cannot self-maintain a fork if Nubank stops investing in it
|
|
* debugging deep engine behavior depends on vendor docs and black-box observation
|
|
* fully reproducible "build everything from source" workflows become weaker
|
|
* some contributors will reject the stack on principle because it is not fully open
|
|
|
|
So the licensing issue is not "can it legally coexist with open parts of the stack?" The answer there is mostly **yes**. The more important question
|
|
is strategic:
|
|
|
|
* does Geolog want a fully open, self-hostable, inspectable foundation
|
|
* or is it acceptable to place the storage layer on a free but closed-source binary
|
|
|
|
If Geolog wants the strongest possible open-source story, Datomic is a poor fit. If Geolog mainly wants a strong immutable fact store and accepts
|
|
vendor dependence, Datomic remains viable.
|
|
|
|
---
|
|
|
|
### Bottom Line
|
|
|
|
For Geolog as described in these notes:
|
|
|
|
* Yes for storage, history, and query support
|
|
* No for the core reasoning engine
|
|
* Legally workable in a mixed stack
|
|
* Strategically questionable if full openness is a project goal
|
|
|
|
## Changelog
|
|
|
|
* **Mar 26, 2026** -- First version created.
|