Development Roadmap
Version Overview
v1.0.0 (current) --> v1.1.0 --> v1.2.0 --> ...
│ │ │
▼ ▼ ▼
Stable Data Scale &
Release Governance Performance
v1.0.0 -- What's Included
go-mink v1.0.0 is the first stable release, providing a complete toolkit for building event-sourced applications in Go.
Core Event Store
- Event store with append-only storage and optimistic concurrency
- PostgreSQL adapter (production) and in-memory adapter (testing)
- JSON serialization with event registry
- Stream management with version constants (
AnyVersion,NoStream,StreamExists) - Filtered feed reads:
LoadEventsFromPositionFiltered— read the global feed by indexed axis (event type / stream id / category), for audit & introspection tooling
Aggregates
Aggregateinterface andAggregateBaseimplementation- Event application pattern with
SaveAggregate/LoadAggregate
Command Bus & CQRS
Commandinterface with validation supportCommandBuswith middleware pipeline- Type-safe generic handlers (
NewGenericHandler,NewAggregateHandler) - Built-in middleware: Validation, Recovery, Logging, Metrics, Timeout, Retry, Correlation ID, Causation ID, Tenant, Idempotency
- Idempotency store (PostgreSQL and in-memory)
Projection Engine & Read Models
- Inline, async, and live projections
ProjectionEnginewith worker pool, checkpointing, and rebuilding- Async worker resilience: transient-vs-poison error classification (
AsyncOptions.ErrorClassifier/DefaultErrorClassifier/ErrTransient) so infrastructure blips retry independently of the poison budget, plus Faulted-worker supervision (AsyncOptions.RestartPolicy,ProjectionEngine.Restart) with checkpoint-safe resume and a push-basedWithProjectionStateObserverfault alert ReadModelRepository[T]generic interface with fluent query builder- Event subscriptions:
SubscribeAll,SubscribeStream,SubscribeCategory - Catch-up and polling subscriptions with event filters
Saga / Process Manager
Sagainterface andSagaBaseimplementationSagaManagerfor orchestration with event correlation and idempotency- Compensation handling for rollback workflows
- Operator-initiated safe re-drive of a settled saga (
RetrySaga, plusResumeStalled/RetrySagasByType) — concurrency-safe, idempotent, and auditable viaWithSagaRetryObserver SagaStorewith PostgreSQL and in-memory implementations
Outbox Pattern
OutboxStoreinterface with PostgreSQL and in-memory implementationsEventStoreWithOutboxwrapper with automatic routingOutboxProcessorbackground worker with polling, retry, and dead-letter handling- Built-in publishers: Webhook, Kafka, SNS
- Atomic event+outbox writes (PostgreSQL)
- Prometheus metrics integration
Event Versioning & Upcasting
Upcasterinterface for raw byte-level transformationsUpcasterChainwith thread-safe registry and gap validationUpcastingSerializerdecoratorSchemaRegistrywith compatibility checking- Automatic upcasting on load, schema stamping on save
- Zero overhead when not configured
Field-Level Encryption
- Envelope encryption with AES-256-GCM
- Providers: Local (testing), AWS KMS (production), HashiCorp Vault Transit (production)
- Per-tenant encryption keys via
WithTenantKeyResolver() - Encryption metadata in
Metadata.Custom(no DB schema changes) - Zero overhead when not configured
GDPR & Data Governance
- Crypto-shredding via key revocation (
encryption.Revocable/RecoverableRevocable,WithDecryptionErrorHandler()) DataExporter— right to access / portability (Article 15 / 20)DataEraser— right to erasure (Article 17): subject discovery, sibling-store erasure (audit/saga/snapshot/outbox/idempotency), blast-radius guard, and a verification certificateSubjectResolver+ subject index /BackfillSubjectIndexRetentionManager— configurable retention (shred / redact / anonymize); optionally checkpoint-resumable + per-run bounded so a scheduled sweep's cost tracks the retention window, not total history (WithRetentionCheckpoint/WithRetentionMaxScan)Anonymizer— deterministic one-way pseudonymizationmink gdprCLI — discover / verify / erase-plan / retain- See the GDPR & Data Governance guide
Observability
- Prometheus metrics middleware (
middleware/metrics) - OpenTelemetry tracing middleware (
middleware/tracing) - 17+ Prometheus metrics for commands, event store, projections, outbox
Serializers
- JSON serializer (built-in)
- MessagePack serializer (
serializer/msgpack) - Protocol Buffers serializer (
serializer/protobuf)
CLI Tool
mink init-- Project scaffoldingmink generate-- Code generation (aggregate, event, projection, command)mink migrate-- Schema management (up, down, create, status)mink projection-- Projection management (list, status, pause, resume, rebuild)mink stream-- Stream inspection (list, events, stats, export)mink events-- Global-feed inspection by indexed axis (type / stream / category), table or--jsonmink diagnose-- Health checks and diagnosticsmink schema-- Event schema generationmink gdpr-- Data governance (discover, verify, erase-plan, retain dry-run)
Testing Utilities
- BDD-style fixtures (
testing/bdd) -- Given/When/Then - Event assertions and diffing (
testing/assertions) - Projection test helpers (
testing/projections) - Saga test fixtures (
testing/sagas) - PostgreSQL test containers (
testing/containers)
Future Roadmap
v1.1.0 -- Data Governance
- Data export (GDPR right to access)
- Data erasure (GDPR right to be forgotten) —
DataEraser+ sibling-store erasure - Audit logging middleware
- Data retention policies with configurable rules
- Time-travel queries (load aggregate at timestamp or version)
v1.2.0 -- Scale & Performance
- Multi-tenancy strategies (shared table, schema-per-tenant, database-per-tenant)
- Snapshot store interface and adapters (PostgreSQL, Redis)
- Additional adapters: MongoDB event store, Redis read models
- Performance optimization: connection pooling, batch loading, benchmarking suite
Future
Reliability
- Dead letter queue improvements (partial: async projections support
OnPoisonEventskip/dead-letter and transient-error classification) - Circuit breaker pattern
- [~] Graceful degradation (async projection fault supervision landed:
RestartPolicywith checkpoint-safe restart, manualRestart, andWithProjectionStateObserverfault alerting)
Advanced Projections
- Projection versioning
- Projection dependencies
- Projection analytics
Production Tooling
- Configuration validation
- Migration rollback improvements
- Backup/restore utilities
Community Adapters
- DynamoDB, ScyllaDB, CockroachDB
- ClickHouse (analytics projections)
- Elasticsearch (search projections)
- NATS JetStream
Ecosystem
- gRPC API for remote event store
- GraphQL read model API
- Admin UI dashboard
- Kubernetes operator
- Event sourcing debugger (visual timeline)
Contributing
How to Contribute
- Pick an issue - Check GitHub issues labeled
good first issue - Discuss - Comment on the issue or join Discord
- Fork & Branch - Create feature branch from
develop - Implement - Follow code style guidelines
- Test - Add unit and integration tests
- PR - Submit pull request targeting
develop
Priority Areas for Contributors
| Area | Difficulty | Impact |
|---|---|---|
| Documentation | Easy | High |
| Test coverage | Easy | High |
| MongoDB adapter | Medium | High |
| Redis adapter | Medium | Medium |
| Performance benchmarks | Medium | Medium |
| DynamoDB adapter | Hard | Medium |
| Snapshot support | Hard | High |
Code Style
- Follow standard Go conventions
- Use
gofmtandgolangci-lint - Write table-driven tests
- Document public APIs
- Keep functions focused and small
Success Metrics
Adoption Targets
| Milestone | Target |
|---|---|
| v1.0.0 release | 500 GitHub stars |
| v1.0.0 + 6 months | 10 production users |
| v1.1.0 release | 1,000 GitHub stars |
| v1.2.0 release | 25 production users |
Quality Metrics
- Test coverage > 90%
- Zero critical bugs in release
- Documentation for all public APIs
- Response to issues < 48 hours
Get Involved
- GitHub: go-mink.dev
- Discord: discord.gg/go-mink-go
- Twitter: @go-mink_go
- Blog: blog.go-mink-go.dev
Let's make Event Sourcing accessible to every Go developer!