Split go.mod — core should have zero heavy dependencies #67

Closed
opened 2026-02-22 13:38:52 +00:00 by ash · 0 comments
Owner

Problem

go.mod includes sonic, msgpack, cbor, jsoniter, pgx, nats, sqlite all in core. A user who wants just MemoryStore for testing pulls in NATS, Postgres, sonic, msgpack.

Fix

Split into sub-modules:

  • eskit (core) — Event, Decider, Reactor, Projection, MemoryStore, Codec interface. Zero external deps.
  • eskit/sqlitestore — SQLite store (depends on modernc.org/sqlite)
  • eskit/pgstore — Postgres store (depends on pgx)
  • eskit/natsstore — NATS store (depends on nats.go)
  • eskit/codec — CBOR, jsoniter, msgpack, sonic codecs (each optional)
  • eskit/otelkit — already separate

Acceptance

  • Core go.mod has minimal deps (go-cmp for testing only)
  • Each store is independently importable
  • Users only pull what they use
  • No breaking import path changes (use Go workspace or multi-module repo)
## Problem go.mod includes sonic, msgpack, cbor, jsoniter, pgx, nats, sqlite all in core. A user who wants just MemoryStore for testing pulls in NATS, Postgres, sonic, msgpack. ## Fix Split into sub-modules: - `eskit` (core) — Event, Decider, Reactor, Projection, MemoryStore, Codec interface. Zero external deps. - `eskit/sqlitestore` — SQLite store (depends on modernc.org/sqlite) - `eskit/pgstore` — Postgres store (depends on pgx) - `eskit/natsstore` — NATS store (depends on nats.go) - `eskit/codec` — CBOR, jsoniter, msgpack, sonic codecs (each optional) - `eskit/otelkit` — already separate ✅ ## Acceptance - [ ] Core go.mod has minimal deps (go-cmp for testing only) - [ ] Each store is independently importable - [ ] Users only pull what they use - [ ] No breaking import path changes (use Go workspace or multi-module repo)
ash 2026-02-22 13:38:52 +00:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
ash/eskit#67
No description provided.