My OSS Plans for 2023

My OSS Plans for 2023

In recent years I’ve kicked off my side project work with an overly optimistic and hopelessly unrealistic list of ambitions for my OSS projects. You can find the?2022?and?2021?versions still hanging around, only somewhat fulfilled. I’m going to put down my markers for what I hope to accomplish in 2023 — and because I’m the kind of person who obsesses more about the list of things to do rather than looking back at accomplishments, I’ll take some time to review what was done in many of these projects in 2022. Onward.

No alt text provided for this image

Marten?is going gang busters, and 2022 was a very encouraging year for the Marten core team & I. The sizable?V5.0 release dropped in March?with some significant usability improvements, multi-tenancy with a database per tenant(s) support, and other goodness specifically to deal with apparent flaws in the gigantic V4.0 release from late 2021.

For 2023, the V6 release will come soon, mostly with changes to underlying dependencies.

Beyond that, I think that V7 will be a massively ambitious release in terms of important new features — hopefully in time for?Event Sourcing Live 2023. If I had a magic wand that would magically give us all enough bandwidth to pull it off, my big hopes for Marten V7 are:

  • The capability to massively scale the Event Store functionality in Marten to much, much larger systems
  • Improved throughput and capacity with asynchronous projections
  • A formal, in the box subscription model
  • The ability to shard document database entities
  • Dive into the Linq support again, but this time use Postgresql V15 specific functionality to make the generated queries more efficient — especially for any possible query that goes through child collections. I haven’t done the slightest bit of detailed analysis on that one yet though
  • The ability to rebuild projections with zero downtime and/or faster projection rebuilds

Marten will also be impacted by the work being done with…

No alt text provided for this image

After a couple years of having almost given up on it, I restarted work pretty heavily on what had been called?Jasper. While building a sample application for a conference talk,?Oskar?& I realized there was some serious opportunity for combining Marten and the then-Jasper for very low ceremony CQRS architectures. Now, what’s the best way to revitalize an OSS project that was otherwise languishing and basically a failure in terms of adoption? You guessed it, rename the project with an obvious theme related to an already successful OSS project and get some new, spiffier graphics and better website! And basically all new internals, new features, quite a few performance improvements, better instrumentation capabilities, more robust error handling, and a unique runtime model that I very sincerely believe will lead to better developer productivity and better application performance than existing tools in the .NET space.

Hence,?Wolverine?is the new, improved message bus and local mediator (I like to call that a “command bus” so as to not suffer the obvious comparisons to MediatR which I feel shortchanges Wolverine’s much greater ambitions). Right now I’m very happy with the early feedback from?Wolverine’s JetBrains webinar?(careful, the API changed a bit since then) and?its DotNetRocks episode.

Right now the goal is to make it to 1.0 by the end of January — with the proviso that Marten V6 has to go first. The remaining work is mostly to finish the documentation website and a handful of tactical feature items mostly to prove out some of the core abstractions before minting 1.0.

Luckily for me, a small group of us at work have started a proof of concept for rebuilding/converting/migrating a very large system currently using NHibernate, Sql Server, and NServiceBus to Wolverine + Marten. That’s going to be an absolutely invaluable learning experience that will undoubtedly shape the short term work in both tools.

Beyond 1.0, I’m hoping to effectively use Wolverine to level up on a lot of technologies by adding:

  • Some other transport options (Kafka? Kinesis? EventBridge?)
  • Additional persistence options with Cosmos Db and Dynamo Db being the likely candidates so far
  • A SignalR transport
  • First class serverless support using Wolverine’s runtime model, with some way of optimizing the cold start
  • An option to use Wolverine’s runtime model for ASP.Net Core API endpoints. I think there’s some opportunity to allow for a low ceremony, high performance alternative for HTTP API creation while still being completely within the ASP.Net Core ecosystem

I hope that Wolverine is successful by itself, but the real goal of Wolverine is to allow folks to combine it with Marten to form the….

“Critter Stack”

The hope with Marten + Wolverine is to create a very effective platform for server-side .NET development in general. More specifically, the goal of the “critter stack” combination is to become the acknowledged industry leader for building systems with a CQRS plus Event Sourcing architectural model. And I mean across all development platforms and programming languages.

And let me just more humbly say that there’s a ways to go to get there, but I’m feeling optimistic right now and want to set out sights pretty high. I especially feel good about having unintentionally made a huge career bet on Postgresql.

Lamar?recently got its 10.0 release to add first class .NET 7.0 support (while also dropping anything < .NET 6) and a couple performance improvements and bug fixes. There hasn’t been any new functionality added in the last year except for finally getting first class support for?IAsyncDisposable. It’s unlikely that there will be much development in the new year for Lamar, but we use it at work, I still think it has advantages over the built in DI container from .NET, and it’s vital for Wolverine. Lamar is here to stay.

Alba

Alba?7.0 (and a couple minor releases afterward) added first class .NET 7 support, much better support for testing Minimal API routes that accept and/or return JSON, and other tactical fixes (mostly by?Hawxy).

See?Alba for Effective ASP.Net Core Integration?Testing?for more information on how Alba improved this year.

I don’t have any specific plans for Alba this year, but I use Alba to test pieces of Marten and Wolverine and we use it at work. If I manage to get my way, we’ll be converting as many slow, unreliable Selenium based tests to fast running Alba tests against HTTP endpoints in 2023 at work. Alba is here to stay.

Not that this is germane to this post, but the very lightly traveled road behind that sign has a straightaway section where you can see for a couple miles at a time. I may or may not have tried to find out exactly how fast my first car could really go on that stretch of road at one point.

Oakton

Oakton?had a significant new feature set around the idea of “stateful resources” added in 2022, specifically meant for supporting both Marten and Wolverine. We also cleaned up the documentation website. The latest version 6.0 brought Oakton up to .NET 7 while also using shared dependencies with the greater JasperFx family (Marten, Wolverine, Lamar, etc.). I don’t exactly remember when, but it also got better “help” presentation by leveraging Spectre.Console more.

I don’t have any specific plans for Oakton, but it’s the primary command line parser and command line utility library for both Marten, Wolverine, and Lamar, so it’s going to be actively maintained.

要查看或添加评论,请登录

Jeremy Miller的更多文章

  • Nobody Codes a Bad System On Purpose

    Nobody Codes a Bad System On Purpose

    I have been writing up a little one pager for a JasperFx Software client for their new CTO on why and how their…

  • New Critter Stack Features

    New Critter Stack Features

    JasperFx Software offers custom consulting engagements or ongoing support contracts for any part of the Critter Stack…

  • We Don’t Need No Stinkin’ Repositories and Other Observations on DotNetRocks

    We Don’t Need No Stinkin’ Repositories and Other Observations on DotNetRocks

    I had a conversation with the DotNetRocks fellows a little while back that posted today, ostensibly about the “Vertical…

    5 条评论
  • Critter Stack Roadmap Update

    Critter Stack Roadmap Update

    The Critter Stack Core decided last week that it was time to get going on the next round of releases for what will be…

  • Retry on Errors in Wolverine

    Retry on Errors in Wolverine

    Coaching my daughter’s 1st/2nd grade basketball team is a trip. I don’t know that the girls are necessarily learning…

    1 条评论
  • Wolverine for MediatR Users

    Wolverine for MediatR Users

    I happened to see this post from Milan Jovanovi? today about a little backlash to the MediatR library. For my part, I…

  • Kicking off a new YouTube Channel on the Critter Stack

    Kicking off a new YouTube Channel on the Critter Stack

    Jeffry Gonzalez and I have kicked off what we plan to be a steady stream of content on the "Critter Stack" (Marten…

    2 条评论
  • Wringing More Scalability out of Event Sourcing with the Critter Stack

    Wringing More Scalability out of Event Sourcing with the Critter Stack

    JasperFx Software works with our customers to help wring the absolute best results out of our customer’s usage of the…

  • Why the Critter Stack is Good

    Why the Critter Stack is Good

    JasperFx Software already has a strong track record in our short life of helping our customers be more successful using…

    4 条评论
  • What would be helpful to know about building "Modular Monoliths?"

    What would be helpful to know about building "Modular Monoliths?"

    Suddenly every body and their little brother has been asking questions about this, that, or the other messaging pattern…

    2 条评论

社区洞察

其他会员也浏览了