From a8fc42943dc25b32380f3861ad7c07daa2829f0e Mon Sep 17 00:00:00 2001 From: Hassan Abedi Date: Thu, 26 Mar 2026 16:05:41 +0100 Subject: [PATCH] Add a note file for Datomic --- hassan/010-datomic-for-geolog.md | 119 +++++++++++++++++++++++++++++++ 1 file changed, 119 insertions(+) create mode 100644 hassan/010-datomic-for-geolog.md diff --git a/hassan/010-datomic-for-geolog.md b/hassan/010-datomic-for-geolog.md new file mode 100644 index 0000000..e2ad66c --- /dev/null +++ b/hassan/010-datomic-for-geolog.md @@ -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.