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)
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 rebuildingReadModelRepository[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
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 Compliance
- Crypto-shredding via key revocation
WithDecryptionErrorHandler()for graceful degradation
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 diagnose-- Health checks and diagnosticsmink schema-- Event schema generation
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)
- 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
- Circuit breaker pattern
- Graceful degradation
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 |
| Audit logging | Medium | High |
| 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!