Add a note file for Datomic
This commit is contained in:
parent
5a33e673c9
commit
bd64f88496
119
hassan/010-datomic-for-geolog.md
Normal file
119
hassan/010-datomic-for-geolog.md
Normal file
@ -0,0 +1,119 @@
|
||||
## 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** -- Added note on whether Datomic could serve as a backend for Geolog, including licensing implications.
|
||||
Loading…
x
Reference in New Issue
Block a user