Skip to content

Roadmap

SametGoktepe edited this page Jun 17, 2026 · 1 revision

What's shipped, what's planned, what's explicitly out of scope. Every roadmap item is either implemented or has a triage tier; items below the cut are demand-gated.

This page is a snapshot — for the live planning detail (per-domain breakdown, design notes), the source is docs/kafka-gap-analysis/ in the repo (gitignored internal planning, but the structure is public).


Shipped

The current capability matrix:

Surface Status
Postgres / MySQL stores with SKIP LOCKED claim
Polling, notify-waker, streaming, binlog relays
Idempotent + transactional Kafka producer
kafkajs + @confluentinc/kafka-javascript drivers
mTLS, SASL/PLAIN, SCRAM, OAUTHBEARER
AWS MSK IAM helper (@eventferry/kafka-iam)
Producer tuning passthrough (lingerMs, batchSize, …)
OpenTelemetry tracing hook + W3C propagation
Lifecycle hooks (onConnect, onPublish, onError, …)
Error classification (PublishErrorKind taxonomy)
Explicit per-message partition override
DLQ enrichment + routing
Backpressure + quota multiplier
Schema Registry serializer (Avro / Protobuf / JSON)
Subject naming strategies (Topic / Record / TopicRecord)
Schema Registry basic + bearer auth
Avro key serialization
autoRegister: false for production registries
Admin operations (publisher.admin(), ensureTopics)
validateTopicsOnConnect startup check
publisher.healthCheck() reachability probe
decode + extractTraceContext consumer helpers
defineOutbox(registry) typed events both sides
Power-user escape hatches (rawProducerConfig, customPartitioner, …)
Compression level (compressionLevel)
librdkafka stats hook (onStats)
Producer-fenced restart + onProducerFenced hook
Concurrent fence-recovery dedup
TLS CA pinning + SNI documentation

Planned

Targeted for upcoming releases. Each item is a single-PR-sized addition unless flagged otherwise.

Reliability

  • onMessageRetried hook — fires per per-record retry attempt. Currently only onFailed(record, err, willRetry) fires once at failure; observability stacks want a per-retry counter.
  • Configurable per-topic retry policyretry: { perTopic: { "orders.created": { maxAttempts: 10 } } }. Today retry is global.

Schema / contracts

  • Compatibility mode probe — at connect(), verify each configured topic's compatibility mode against the registry and warn if NONE. Catches "no schema enforcement" misconfigurations early.
  • Reference schema support — pass-through to upstream for Protobuf nested types; documented examples.

Observability

  • OpenTelemetry messaging metrics — separate from spans, the new OTel messaging.client.published.messages counter. Wait until OTel SDK stabilizes the API.
  • Prometheus metrics helper — small optional package (@eventferry/kafka-metrics) that registers the standard signals as prom-client gauges + counters.

Admin

  • describeAcls probe at startup — optional. Verify the configured principal can Write on each known topic. Catches silent SASL auth that fails per-record.

Cross-cluster / DR

  • DR-aware bootstrap — pass a secondary cluster's brokers + auth, automatic failover when primary is unreachable. Niche; demand-gated.

Out of scope (explicit)

These will not ship from eventferry. They're either out of the publisher-focused scope, or well-served by existing tools.

Surface Why out
Kafka Streams runtime Different problem domain entirely.
Kafka Connect runtime Different operational model. Connect is the right tool for many-to-many CDC; eventferry is for app-emitted domain events.
ksqlDB integration Stream processing is downstream of publishing.
Consumer group management eventferry is publisher-only by design.
JMX metrics exporter Node ecosystem uses Prometheus / OTel; we ship hooks, you wire your stack.
Built-in scheduler for purgeDone Use cron / a sidecar / k8s CronJob. We don't want a scheduler in the publisher's process.

Demand-gated (open an issue with your use case)

We'll build these when someone needs them and is willing to pilot:

  • SASL/GSSAPI (Kerberos) — enterprise on-prem only. librdkafka supports it natively, so the work is exposing the right config on the confluent driver. Has not been a blocker yet.
  • Apicurio Registry adapter — separate package @eventferry/schema-registry-apicurio that conforms to the same Serializer interface. Real demand from Red Hat shops.
  • AWS Glue Schema Registry — different wire format, separate package @eventferry/schema-registry-aws. Ship only with demand signal.
  • MirrorMaker / DR-aware failover — multi-cluster bootstrap + topic-rename handling. Real but niche.
  • MongoDB / DynamoDB / Cassandra stores — outbox pattern works on any transactional store. The store interface is intentionally minimal so adapters are small; we'd ship MongoDB first if asked.
  • NATS / RabbitMQ / Pulsar publishers — same shape as KafkaPublisher. We'd ship NATS first based on community signal.
  • DELEGATION_TOKEN auth — niche, big-platform-only.

How to influence the roadmap

  • Open an issue with your use case and what you've already tried. Concrete user stories move items up the queue.
  • Submit a PR with a design doc for non-trivial additions. We treat docs-first design as the norm — see docs/superpowers/specs/ in the repo for the format.
  • Sponsor specific work if you need an item shipped on a timeline. Open an issue tagged sponsor with your shape.

Versioning policy

Bump Trigger
Patch Bug fix, docs, internal refactor. No public API change.
Minor Additive public API. New option with a backward-compatible default.
Major Renamed / removed public API, changed default, dropped Node major. Rare.

A major bump in any single package does NOT force majors elsewhere — independent SemVer. See Migrations and Upgrades for the schema-diff policy across versions.


What's next

Clone this wiki locally