
From some notes that Oskar, Babu, and I banged out this past week, so keep your expectations for the quality of prose here! Notes in bold are my updates since this original document was banged out last weekend.
Marten 7.0
Try to release Marten 7.0 no later than early next week. This is admittedly based on JasperFx client deliverables.
- In flight work with async daemon and dynamic tenant databases. I think at this point it’s just finishing off that big PR. Done.
- Blue/green & zero downtime deployment. Ongoing work that just needs more testing at this point. This includes the projection version stuff. Actually all working locally, but my development branch is rebased on the daemon stuff, so I’d like that to go in first. Done.
- Update docs — Work in progress!
- Maybe try Project Aspire one more time? I think this could float to 7.1 as well. Likely to float to 7.1, but let’s see how this next week goes
- Triage bugs and minor issues
“Critter Stack Pro” work that might force breaking changes to Marten APIs. At *least* do some spikes:
- Distributed async projections. This one’s the big one. Proceeding well, did cause a few changes to Marten so far
- Projection Snapshots – I’d really like to see this mostly land in Critter Stack Pro. Probably not happening until 2nd quarter 2024
- First class subscriptions from the event store to Wolverine transports – might be in Wolverine 2.0 proper. Dunno. Not sure yet
- Async projection optimizations – Probably not happening until 2nd quarter 2024
- 2nd level caching for aggregates
- Rebuild single stream projections stream by stream
- Allow for selective identity map usage of reference types.
- Batched data lookups – so you can keep projections from doing chatty data access
- Allow grouping logic to express optimization hints like “no data access required” or “requires aggregate state”. That could be used to optimize projection rebuilds
Wolverine 2.0
- Discovery and activation of new tenant databases at runtime (client deliverable). Done.
- Update to Marten 7
- Project Aspire? Wolverine 2.1? This is a little more involved, so I’m not sure yet when this lands. Probably in Wolverine 2.1.
Marten 7.1
- Open Telemetry Support – Sean Farrow is working on this. I don’t think it’s going to be a breaking change, so could float to 7.1. Very Basic
- Sharding the event store tables – I’d love to do this sooner, and would love to stretch this in. I’m saying that we would tackle the is archived / not archived sharding in a first pass, then come back w/ fancier sharding possibilities later. This would have a potentially huge positive implication for Marten event store scalability.
- The ability to “emit” new events in the async daemon during the course of processing asynchronous projections. I think this is going to take some spikes and analysis, so we gotta commit to this ASAP if it’s going into 7.0. This is falling to Marten 7.1
- Strong-typed identifiers – it’s a ton of work I really don’t want to take on in a rush (Jeremy)
- First class subscriptions. Hot, cold, replay, whatever. I just want a little more time and space. Does this require any breaking changes in the daemon we might want to deal with right now though? Very likely dropping to Marten 7.1
- Custom event type naming strategy – it’s a breaking change to the API I think. I don’t think it’s huge though – little pluggable strategy. Can be additive.
- Optimize inline projections in FetchForWriting()? Idea here is to force aggregates that are calculated Inline (or Async maybe) that are queried in FetchForWriting() be forced to use the identity map for just that document type. That does a lot to optimize the typical “aggregate handler workflow” by avoiding the current double fetching of the document when you are using lightweight sessions. Strong candidate to drop down to 7.1
Marten 7.Later
- Downcasters – I vote to put this into Critter Stack Pro all the way
Marten 8.0???
- More advanced Event Store partitioning
Wolverine 2.1
- Likely a focus on the Wolverine.HTTP backlog
- Options for strict ordering requirements of event or message processing