
It’s been a little bit since I’ve written any kind of update on the unofficial “Critter Stack” roadmap, with the last update in February. A ton of new, important strategic features have been added to especially Marten since then, with plenty of expansion of Wolverine to boot. Before jumping into what’s to come, let me indulge in a bit of retrospective about what new features or improvements have been delivered in 2024 so far before getting into the road map in the next section.
2024 just so far!
- Marten 7.0 was released!
- New, more robust LINQ provider that has been substantially more performant with sub collection queries
- Better resiliency baked in for everyday transient errors like network hiccups and database timeouts
- The “async daemon” model does some rudimentary load balancing for improved scalability
- A new “partial document” capability that used native PostgreSQL features and didn’t require JavaScript in the database
- More parsimonious usage of database connections for better scalability and improved integration with GraphQL via Hot Chocolate
- Some ability to do zero down time deployments event with asynchronous projections
- Blue/green deployment capabilities for “write” model projections (that’s a big deal)
- Ability to add new tenanted databases at runtime for both Marten and Wolverine with zero downtime
- There’s only one user so far, but
CritterStackPro.Projectionsis the first paid add on model for Marten & Wolverine that allows for better load distribution of asynchronous projections and event subscriptions within a clustered application - Wolverine got a new PostgreSQL backed messaging transport
- Wolverine also got an important new feature for strict ordered messaging and a nascent capability for virtual actors
- Marten got first class event subscriptions, with a corresponding set of capabilities for Marten to Wolverine event subscriptions
- Open Telemetry tracing and metrics generation was (finally) added to Marten (Wolverine already had that)
- Marten can use PostgreSQL read replicas as a way to improve system scalability
- Wolverine + Marten got some important improvements for using Modular Monolith architectures
- Marten has first class support for strong typed identifiers now — which was a long requested feature that got put off because of how much effort I feared that would require (rightly as it turned out, but it’s all done now)
- This is still going through some teething pains (knock on wood, that might be finally wrapped up today), but the new “quick append” option and other recent event store related optimizations look to be a huge performance and scalability gain for Marten
- Just in the past couple weeks, Marten got a set of performance and related features utilizing PostgreSQL native table partitioning that I’m personally very excited about — and that also helped close a backlog issue first discussed in 2017!
At this point I feel like we’ve crossed off the mass majority of the features I thought we needed to add to Marten this year to be able to stand Marten up against basically any other event store infrastructure tooling on the whole damn planet. What that also means is that I think that Marten development probably slows down to nothing but bug fixes and community contributions as folks run into things. There are still some features in the backlog that I might personally work on, but that will be in the course of some ongoing and potential JasperFx client work.
That being said, let’s talk about the rest of the year!
The Roadmap for the Back Half of 2024
Obviously, this roadmap is just a snapshot in time and client needs, community requests, and who knows what changes from Microsoft or other related tools could easily change priorities from any of this. All that being said, this is the Critter Stack core team & I’s current vision of the next big steps.
- Wolverine 3.0 is an ongoing effort. I’m hopeful it can be out in the next couple weeks
- RavenDb integration with Wolverine. This is some client sponsored work that I’m hoping will set Wolverine up for easier integration with other database engines in the near future
- “Critter Watch” — an ongoing effort to build out a management and monitoring console application for any combination of Marten, Wolverine, and future critters. This will be a paid product. We’ve already had a huge amount of feedback from Marten & Wolverine users, and I’m personally eager to get this moving in the 3rd quarter
- Marten 8.0 and Wolverine 4.0 — the goal here is mostly a rearrangement of dependencies underneath both Marten & Wolverine to eliminate duplication and spin out a lot of the functionality around projections and the async daemon. This will also be a significant effort to spin off some new helper libraries for the “Critter Stack” to enable the next bullet point
- “Ermine” — a port of Marten’s event store capabilities and a subset of its document database capabilities to SQL Server. My thought is that this will share a ton of guts with Marten. I’m voting that Ermine will have direct integration with Wolverine from the very beginning as well for subscriptions and middleware similar to the existing Wolverine.Marten integration
- If Ermine goes halfway well, I’d love to attempt a CosmosDb and maybe a DynamoDb backed event store in 2025
As usual, that list is a guess and unlikely to ever play out exactly that way. All the same though, there’s my hopes and dreams for the next 6 months or so.
Did I miss something you were hoping for? Does any of that concern you? Let me and the rest of the Critter Stack community know either here or anywhere in our Discord room!
Wow, this is all very exciting!