Assistant: codex Assistant-Model: gpt-6-astra Assistant-Session: 01a0cffe-206f-7323-89d3-b20ca4cf4bf9
8.8 KiB
Frontend Patterns Research Program
1. Objective
Develop a coherent Alexander-style pattern language for frontend architecture and design that is useful to both human practitioners and software agents.
The work should move from source collection toward:
- common vocabulary,
- recurring forces,
- candidate patterns,
- pattern relations,
- generative sequences,
- architecture decompositions,
- technology mappings,
- machine-readable retrieval and reasoning.
2. Research thesis
Frontend architecture is not fundamentally organized around frameworks.
It is organized around recurring decisions concerning:
- authority,
- addressability,
- projection,
- interaction,
- mutation,
- synchronization,
- reconciliation,
- composition,
- execution,
- quality boundaries.
Named architectures and frameworks are configurations or implementations of these decisions.
3. First research case
Use Ryan Carniato's "The Grand Unifying Architecture of Frontend" as the first extraction exercise.
Research tasks:
- reconstruct its Navigation → Content → Affordance model,
- identify implicit assumptions,
- extract candidate patterns,
- identify the forces each pattern resolves,
- identify where server-authority assumptions cease to hold,
- compare against local-first architectures,
- compare against hypermedia architectures,
- compare against SPA and server-component architectures,
- map findings into the responsibility model,
- retain useful concepts without treating the article as the canonical ontology.
4. Research streams
Stream A — Historical GUI architecture
Study:
- MVC,
- MVP,
- Presentation Model,
- Presentation / Domain Separation,
- Flux / Redux,
- Elm architecture,
- event-driven UI.
Goal:
Identify durable state, dependency and interaction patterns that predate current web frameworks.
Stream B — Web navigation and hypermedia
Study:
- document web,
- REST/hypermedia,
- progressive enhancement,
- HTML forms,
- HTMX-style server interaction,
- browser navigation semantics.
Goal:
Understand addressability, navigation, mutation and server projection.
Stream C — Rendering and execution
Study:
- CSR,
- SSR,
- SSG,
- hydration,
- partial hydration,
- islands,
- server components,
- resumability,
- streaming,
- edge execution.
Goal:
Separate projection patterns from execution placement and delivery mechanisms.
Stream D — State authority and synchronization
Study:
- client/server state,
- remote caches,
- optimistic UI,
- local-first,
- CRDTs,
- event sourcing,
- offline-first,
- subscriptions,
- push/pull synchronization.
Goal:
Establish a coherent authority/synchronization/reconciliation language.
Stream E — Composition and organizational architecture
Study:
- component composition,
- feature slicing,
- microfrontends,
- design systems,
- frontend platform architecture,
- backend-for-frontend patterns,
- monorepos and deployment independence.
Goal:
Separate software composition from ownership and deployment boundaries.
Stream F — Quality patterns
Study:
- accessibility,
- progressive enhancement,
- performance,
- fault containment,
- security,
- privacy,
- observability,
- recovery.
Goal:
Represent cross-cutting frontend qualities as architectural patterns and forces rather than afterthoughts.
5. Research method
For each source or architecture:
Step 1 — Extract claims
Record what the source says without prematurely normalizing terminology.
Step 2 — Identify forces
Ask what competing constraints make the proposed solution useful.
Step 3 — Extract candidate patterns
Look for recurring configurations rather than named technologies.
Step 4 — Normalize vocabulary
Map source-specific language into the current canon where possible.
Step 5 — Find counterexamples
Test whether the pattern still holds under:
- offline operation,
- local authority,
- real-time collaboration,
- very low interaction density,
- high interaction density,
- independent deployment,
- unreliable networks,
- strong accessibility requirements.
Step 6 — Establish relations
Record:
- requires,
- enables,
- refines,
- alternatives,
- conflicts,
- resulting contexts.
Step 7 — Test generativity
Ask whether the pattern helps produce a next architectural decision.
Step 8 — Promote cautiously
Move a concept into patterns/ only when it is sufficiently stable and reusable.
6. Initial source families
Create a source catalog spanning:
- Christopher Alexander and pattern-language literature,
- Martin Fowler GUI architecture,
- REST and hypermedia literature,
- Redux / Elm / Flux,
- Feature-Sliced Design,
- microfrontends,
- local-first,
- web.dev rendering literature,
- Patterns.dev,
- framework architectural documentation,
- accessibility and progressive-enhancement literature,
- distributed-systems synchronization concepts.
7. Initial pattern extraction targets
Priority candidate patterns:
Authority
- Server Authority
- Local Authority
- Replicated Authority
- Derived State
- Single Writer
Address & navigation
- URL as Application State
- Resource Address
- Hierarchical Route
- Progressive Navigation
Projection
- Static Projection
- Server Projection
- Client Projection
- Streaming Projection
- Islands of Interactivity
Interaction
- Local Interaction State
- Immediate Feedback
- Pending State
- Optimistic Overlay
Synchronization
- Invalidate and Reproject
- Pull Synchronization
- Push Synchronization
- Persistent Subscription
- Conflict-Free Merge
- Explicit Conflict
Composition
- Presentation / Domain Separation
- Vertical Feature Slice
- Independent Feature Boundary
- Backend for Frontend
Quality
- Progressive Enhancement
- Failure Boundary
- Accessible by Construction
- Performance Budget
- Observable Interaction
8. Validation architectures
The emerging language should be tested against at least these application types:
- mostly-static publication,
- e-commerce storefront,
- administrative CRUD application,
- high-interaction SaaS workspace,
- real-time dashboard,
- collaborative editor,
- offline field application,
- local-first personal tool,
- large microfrontend estate,
- mobile-web/PWA application.
A useful language should explain all ten without forcing them into one preferred architecture.
9. Agentic use cases
The infospace should eventually support prompts such as:
Given this application description, identify the dominant forces and propose applicable patterns.
Explain why the current architecture exhibits this failure mode.
Which patterns are incompatible with our offline requirement?
Decompose this framework architecture into technology-independent patterns.
What pattern should be considered next after choosing server authority and streaming projection?
Compare two architectures in terms of forces, not framework features.
This requires graph-friendly metadata and stable identifiers.
10. Initial milestones
M0 — Scaffold
- repository structure,
- intent,
- responsibility model,
- force vocabulary,
- relation vocabulary,
- pattern schema,
- research method.
M1 — Seed corpus
- source catalog,
- Carniato case analysis,
- historical GUI architecture review,
- local-first review,
- rendering architecture review.
M2 — First canonical language
- 20–30 candidate patterns,
- reviewed force vocabulary,
- relation graph,
- first architecture decompositions.
M3 — Generative sequences
- general web application,
- content site,
- transactional application,
- collaborative application,
- local-first application.
M4 — Agentic reference surface
- normalized metadata,
- stable identifiers,
- pattern graph export,
- query examples,
- retrieval/evaluation fixtures.
M5 — Empirical refinement
- test language against real repositories,
- collect pattern co-occurrence,
- identify missing forces,
- identify misleading or redundant patterns,
- revise maturity levels.
11. Open research questions
- Is the current responsibility model minimal?
- Should mutation be separate from intent?
- Is reconciliation a responsibility or a synchronization subfamily?
- Is addressability a frontend responsibility or a system-level concern?
- Should rendering and projection remain distinct terms?
- How should temporal behavior be represented?
- How should pattern strength or evidence be measured?
- Can pattern selection be meaningfully represented as constraint solving?
- How should anti-patterns be modeled?
- Can architecture health be described as unresolved or contradictory forces?
12. Definition of useful progress
The project is not advanced by adding pattern names alone.
Useful progress means improving one or more of:
- conceptual precision,
- pattern reuse,
- relation quality,
- generative power,
- evidence quality,
- applicability across architectures,
- retrieval quality for humans and agents.