telemere/wiki/2-Architecture.md
Peter Taoussanis 7cccf672f5 [mod] Rename "middleware" -> "transform" (xfn)
Users caught by this change should receive a clear compile-time error.

Apologies for the nuissance!! This change is part of a final review
of names before the release of v1 final.

Motivations:

  - "xfn" is a lot shorter than "middleware", making it more
    convenient to use at signal calls, compare:

    (log! {:middleware my-fn} "msg")
    (log! {:xfn my-fn} "msg"}

  - "middleware" was originally chosen to match Timbre's terminology,
    but actually carries some misleading connotations that in hindsight
    are probably better avoided while we still have the chance to change
    this.
2025-03-10 13:02:57 +01:00

1.1 KiB

Telemere's key function is to help:

  1. Capture information in your running Clojure/Script programs, and
  2. Facilitate processing of that information to support insight.

Its basic tools:

  1. Signal creators to conditionally create signal maps at points in your code.
  2. Signal handlers to conditionally handle those signal maps (analyse, write to console/file/queue/db, etc.).

So you call a signal creator to (conditionally) create a signal (map) which is then dispatched to registered signal handlers for (conditional) handling.

This flow is visualized below:

Telemere signal flowchart
  • A/sync queue semantics are specified via handler dispatch options.
  • The shared call transform cache is super useful when doing signal transformations that are expensive and/or involve side effects (like syncing with another service/db to get a unique tx id, etc.).