Pick a path
Every page has one job. The how pages tell you what to call; the why pages argue the decisions behind it. They link to each other and never repeat each other, so you can read one without the other.
Adopting it — why it exists → getting started → the kit, with reference open when you need the exact contract of a call. Getting started is one program grown five times; it does not ask you to read anything else first.
Evaluating it — why it exists for the problem, design decisions for every choice and what it cost, concepts for the prior art it borrows from, operations for what running it costs. If you know git, the git model is the fastest way to see the whole shape.
Extending it — read the three Understand pages in order: the git model for the vocabulary, architecture for the map onto Clean Architecture names, then design decisions for which of those choices are load- bearing before you change one. Contributing is the invariants, the file-by-file reading order for the source, and how to write a backend; reference is the contract your backend must meet.
Optional side paths, safe to skip until you need them: sealing RFC 6902 patches if a client sends you JSON Patch, and operations when you are ready to run it for real.
Pick a backend
Adapters are optional sibling modules; the core never imports one. Implement the
3-method Log yourself and prove it with conformance.RunLogConformance.
| Backend | Module | Consistency | Log conformance | Serializable append |
|---|---|---|---|---|
changelogmemory.New() |
adapters/memory |
in-memory · dev/test only, lost on restart | ✓ | — can fork |
changelogsql.Open(…) |
adapters/sql |
transactional MySQL · FOR UPDATE + unique constraints |
✓ | ✓ fork-free |
changelogclickhouse.Open(…) |
adapters/clickhouse |
eventual · ReplacingMergeTree + FINAL |
✓ | — no synchronous locks |
Choose adapters/sql when concurrent writers must form one linear chain per
document; adapters/clickhouse for cheap columnar retention and analytics where
producers serialize per document. The full comparison, and the operational
detail behind it, is in
operations.