QuantyKube

ADR-003 No third-party crates, the engine comes from QuantyDB

All pages

ADR-003, from docs/DECISIONS.md in the QuantyKube repository.

Status In force

QuantyKube follows QuantyCore's ADR-001: nothing outside the standard library except crates from the QuantyRoot organization.

The storage engine is QuantyDB's, used as a crate and not copied. etcd's data model is a key value store with a single, monotonically increasing revision; you read at a revision, watch from a revision and compact old revisions away. QuantyDB is that shape already: copy on write trees, numbered commits, reads as of a commit, and a collector for old states. A copy would be faster to start and would drift from the original the first week nobody compares them.

Which QuantyDB crate is the right entry point is decided when the store is built, in its own record, because it depends on what the mapping from etcd revisions to commits needs.

The protocol stack (protobuf, HPACK, HTTP/2, gRPC) comes from QuantyCore, whose ADR-004 says why it lives there.

The cost: two repositories to change for one protocol fix, and a release of QuantyKube on crates.io has to wait for QuantyCore and QuantyDB releases it can depend on.