Skip to content

Framework Primitives

When To Use It

VMx is one language-neutral framework surface expressed through four idiomatic flavors. These pages are the practical map of that surface: which primitive to reach for, what it owns, how it participates in lifecycle and messaging, and where the flagship Notes Workspace examples use it.

Use this overview when you are choosing a starting area rather than looking up a single API. It is the top-level index for the primitive families introduced in Task 6.

Shape And Ownership

The primitives catalog is organized by responsibility:

At this level, the ownership question is "which family owns this concern?" VM families own hierarchy and child relationships; command and capability families own behavior surfaces; the remaining sections cover coordination and utility layers.

Lifecycle And Messaging

Lifecycle and messaging rules are described on the family pages, but they follow one common pattern here: choose the primitive family first, then confirm how it constructs, destructs, publishes property changes, and participates in hub or dispatcher wiring.

The overview pages deliberately stay at that routing level so they do not invent surface APIs that belong on the concrete primitive pages.

Cross-Language Surface

The conceptual shape is identical across C#, Python, TypeScript, and Swift. The surface idiom changes:

Concept C# Python TypeScript Swift
Casing PascalCase snake_case camelCase camelCase
Modeled leaf ComponentVM<M> ComponentVMOf[M] ComponentVMOf<M> ComponentVMOf<M>
Null hub singleton NullMessageHub.Instance NULL_MESSAGE_HUB NullMessageHub.INSTANCE NullMessageHub.INSTANCE

The goal of these pages is not to restate the spec chapter by chapter. The goal is to help you pick the right primitive quickly and then follow through with the correct lifecycle, services, and related helpers.

Example

A typical reading path is:

  1. start at ViewModel Families to choose the VM shape
  2. jump to Command Families if the next question is how to expose executable behavior
  3. finish with a utility page such as Services, Messages & Dispatching when the remaining work is host coordination

Common Pitfalls

  • Treating the overview as an API reference instead of a routing page.
  • Starting with commands or helpers before choosing the owning VM shape.
  • Assuming a surface-name difference across languages implies a conceptual difference.

If the VM is:

From there, continue into: