Design notes¶
qtviz is designed in the open. The full specification, architecture records,
decision log, and research notes live in the repo's
design/ directory —
see its README
for a guided tour.
Good starting points:
spec.md— the concrete specification: theElementmodel, the data layer, backends, events.2.0-mark-ir-and-surface.md— the current (2.0) architecture: the Mark IR, the uniform channel vocabulary, and the record of what shipped.development-plan.md— design invariants, the build sequence, and the verification strategy (tiered tests- a backend/adapter conformance suite).
discussion-items.md— the decision log ([D#]): every non-obvious choice, its options, and the rationale. Bracketed[Dnn]tags in code, commits, and tests resolve here or in the arc document that introduced them.
The historical working notes — milestone plans, roadmaps, parity audits — are
preserved unedited in
design/archive/.
Core ideas¶
- Pure, value-hashed
Elements. An Element says what to plot, not how; it carries no Qt and no backend state, so it is trivially testable and composable. - Registered backends and data adapters. The core never imports a backend or a container library — each is registered, so adding an engine or a data container is purely additive.
- Lazy-first data layer. One
DataRefcontract covers eager and out-of-core containers; expensive resolution runs off the GUI thread. - Offline by construction. No network at render time; the webengine backend bundles its JavaScript from the installed packages.