Migration & namespace plan¶
The Mongoose ecosystem currently spans three Java package namespaces. This page documents why, and the planned consolidation timeline.
Current state¶
| Namespace | Where | Status |
|---|---|---|
com.telamin.mongoose.* |
mongoose core runtime | Canonical |
com.telamin.mongoose.connector.file.* |
mongoose core (built-in file connector) | Duplicate of plugin |
com.telamin.mongoose.connector.memory.* |
mongoose core (in-memory feed / sink) | Canonical |
com.telamin.mongoose.plugin.* |
most of mongoose-plugins |
Legacy |
com.telamin.mongoose.plugin.connector.aeron.* |
connector-aeron (recently ported) |
Legacy variant |
The split reflects history, not design:
- mongoose-core has historically shipped a built-in file connector to keep the five-minute tutorial single-jar.
- mongoose-plugins originated as
gregv12/fluxtion-server-pluginsand inherited thecom.telamin.mongoose.plugin.*package tree from that lineage. connector-aeronwas ported recently from the same upstream and inherited a slightly different sub-namespace (com.telamin.mongoose.plugin.*).
Why it matters¶
- A new user landing on Maven Central sees three apparent "Fluxtion" packages and doesn't immediately know which to depend on.
- The
mongoose-examplesrepo references the core file connector (com.telamin.mongoose.connector.file.FileEventSource); this catalogue documents the plugin form (com.telamin.mongoose.plugin.connector.file.FileEventSource). Both work; the catalogue is the documented-going-forward shape. - YAML configs in production today reference whichever was current at install time. Renames break those configs.
Consolidation plan¶
Phase 1 — pre-HN (current)¶
Document the situation, don't rename. The connectors all work today. Renaming pre-launch risks breaking the active POC deployments and the mongoose-examples repo. This page (and per-page notes on the catalogue) makes the situation explicit.
Phase 2 — mongoose 1.1.0¶
- Promote the
mongoose-pluginsnamespace tocom.telamin.mongoose.plugin.*alongside the legacy package. Both work, the legacy package emits a@Deprecatednotice with a one-version sunset window. - Rename
connector-aeronfromcom.telamin.mongoose.plugin.connector.aerontocom.telamin.mongoose.plugin.connector.aeron. Same dual-export pattern. - Annotate the core file connector
(
com.telamin.mongoose.connector.file.*)@Deprecatedand direct users toconnector-file. Same source; one published artefact.
Phase 3 — mongoose 2.0.0¶
- Remove the
com.telamin.mongoose.plugin.*andcom.telamin.mongoose.plugin.*packages frommongoose-plugins. - Remove the duplicated file connector from
mongoose-core. Users now have one canonical path:connector-file. - YAML configs need a single-line update; provide a sed recipe in the release notes.
What you can do today¶
If you're starting fresh and want to be on the right side of the future:
- Pick the plugin form of any connector (
com.telamin.mongoose.plugin.connector.file.FileEventSource), not the core form. The plugin is the published-catalogue target. - For
connector-aeron, usecom.telamin.mongoose.plugin.connector.aeron.*— this is the form documented today. - Pin to
mongoose-plugins:0.2.8-SNAPSHOT(or whatever the next release is) alongsidemongoose:1.0.8.
What stays stable¶
com.telamin.mongoose.MongooseServer— the boot entry point. Unchanged across all phases.com.telamin.mongoose.config.*—MongooseServerConfig,EventFeedConfig,EventSinkConfig,ServiceConfig. Unchanged.com.telamin.mongoose.connector.memory.*—InMemoryEventSource,InMemoryMessageSink. Unchanged.com.telamin.fluxtion.runtime.*— the Fluxtion runtime annotations (@ServiceRegistered,ObjectEventHandlerNode). Unchanged.
The unstable surface is purely the plugin-namespace prefix on connector and service implementations. The lifecycle contract, the config model, and the injection API are all already on the canonical namespace.
Open question: dual-export bridge¶
A bridge class (legacy package extends canonical-package, empty body) would let both YAML strings resolve to the same code during phase 2. It's the cheapest migration path. The cost is a doubled class hierarchy that some classpath tools find confusing. Decision deferred to phase-2 planning.