4.5 KiB
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:
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 -- Added note on whether Datomic could serve as a backend for Geolog, including licensing implications.