Files
aether/vision.md
Hugo Nijhuis 51916621ea
All checks were successful
CI / build (push) Successful in 16s
Update vision to align with manifesto inheritance model
Restructure vision.md to properly extend the organization manifesto:
- Add personas that extend org personas (Flowmade Developers, Go Teams)
- Add jobs table tracing product jobs to org jobs
- Add product principles extending org principles
- Connect event sourcing to manifesto's "comprehensive activity records" belief
- Add resource consciousness alignment (ARM64, modest hardware)
- Expand non-goals with explicit manifesto references
- Add architecture section showing pattern alignment

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-10 15:14:37 +01:00

4.2 KiB

Vision

This product vision builds on the organization manifesto.

Who This Product Serves

Flowmade Developers

The team building Flowmade's platform. They need reliable, auditable infrastructure for distributed systems without reinventing clustering and event sourcing.

Extends: Agencies & Consultancies (from manifesto) - we are our own first customer.

Go Teams Building Event-Sourced Systems

Teams implementing event sourcing and CQRS patterns who want clear primitives that compose well, not a heavyweight framework.

Extends: Organizations (from manifesto) - they need maintainable, evolvable infrastructure.

What They're Trying to Achieve

These trace back to organization-level jobs:

Product Job Enables Org Job
"Build distributed systems without reinventing clustering" "Delivering solutions faster with maintained quality"
"Store events as source of truth with full history" "Adapting solutions as needs evolve" (replay, rebuild, audit)
"Scale horizontally without complexity" "Reducing developer dependency" (infrastructure handles it)
"Isolate concerns with namespaces" "Software aligned with actual workflows" (logical boundaries)

The Problem

Building distributed, event-sourced systems in Go requires assembling many pieces: event storage, pub/sub, clustering, leader election. Existing solutions are either:

  • Too heavy - Full frameworks with opinions about your domain
  • Too light - Just pub/sub, you build everything else
  • Not NATS-native - Bolted-on integrations that don't leverage JetStream properly

The Solution

Aether provides clear primitives that compose well:

  • Event sourcing primitives - Event, EventStore interface, snapshots
  • Event stores - In-memory (testing) and JetStream (production)
  • Event bus - Local and NATS-backed pub/sub with namespace isolation
  • Cluster management - Node discovery, leader election, shard distribution
  • Namespace isolation - Logical boundaries for multi-scope deployments

Built for JetStream from the ground up, not bolted on.

Product Principles

These extend the organization's guiding principles:

Primitives Over Frameworks

Provide composable building blocks, not an opinionated framework. Let users build what they need.

Extends: "Design amplification for individual capability"

NATS-Native

Built for JetStream from the start. Leverage NATS capabilities fully rather than abstracting them away.

Extends: "Sensible defaults with available alternatives"

Resource Conscious

Efficient on modest hardware. NATS is lightweight; Aether should be too. ARM64 friendly.

Extends: "Software performs adequately on standard-capability hardware" and "ARM64 optimization"

Events as Complete History

Events are the source of truth. State is derived. This directly implements the manifesto belief that "systems should maintain comprehensive activity records, not merely current snapshots."

Extends: "Systematize information rather than merely documenting it"

Non-Goals

These extend the organization's non-goals:

  • Opinionated multi-tenancy. Product layer concern - Aether provides namespace primitives, not tenant management.
  • Domain-specific abstractions. Use the primitives to build your domain model.
  • GraphQL/REST API generation. Build on top of Aether, not inside it.
  • UI components. See iris for UI concerns.
  • Replacing human judgment. Aether automates infrastructure, not decisions.

Architecture

This project follows organization architecture patterns.

Alignment

  • Event Sourcing: Core to this library - events as source of truth
  • Auditability: Full event history, immutable records, replayable state
  • Loose Coupling: Event bus for communication, namespaces for isolation
  • Domain Language: Event types reflect business concepts

Intentional Divergences

Area Standard Pattern What We Do Instead Why
Domain modeling DDD aggregates Generic Actor abstraction Library provides primitives, not domain opinions