Marten Just Crossed 20 Million Downloads

Several years ago when I was interviewing at Calavista, my future colleagues asked me what I was most proud of in my career. At the time I was mostly known for my writing years earlier at CodeBetter and StructureMap, but even then my obvious answer was Marten. Wolverine was even then my true passion project, but Marten is undeniably the biggest technical success I’ve ever had and the single biggest source of JasperFx Software business today.

Sometime this past weekend, Marten quietly rolled past 20 million downloads on NuGet. Almost exactly eleven years after the first commit in October of 2015, the “PostgreSQL as a document database” experiment that started as a tactical way to get off of RavenDB in a hurry has become the most widely used and, I’ll very happily argue, the most capable Event Sourcing solution in the .NET ecosystem.

Don’t write off Marten because it’s a FOSS tool in the .NET ecosystem — the perennial Harvey Dangerfield of technical platforms. Marten, especially when paired up with Wolverine, has a feature set that I believe is very competitive and in many cases superior to the commercial event sourcing tools in the JVM.

I wrote about Marten’s 10th birthday last year and a five year retrospective on adoption this spring, so I’ll keep this short. Twenty million is a nice round number though, and it’s worth a moment to say thank you and take stock.

The numbers

Straight from GitHub and NuGet this morning:

NuGet downloads20,077,707
GitHub stars3,460
Contributors257
Pull requests merged2,275
Issues closed2,594 of 2,605 ever opened
Tagged releases321
Latest releaseV9.41.0, shipped today

Two of those matter more to me than the download count. 257 contributors is a real community (that’s a random Wednesday for a popular npm project, but huge for .NET), not a one-person project with a mailing list. And eleven open issues on a project this old and this large is the result of a lot of people caring about a lot of details for a very long time. Thank you to everyone who has filed an issue, sent a pull request, answered a question in Discord, or written up their experience for others.

For context on “most widely used”: the next closest event store package on NuGet, the official client for what used to be called EventStoreDB, sits at a bit over 8 million downloads. SqlStreamStore, EventFlow, and Eventuous are each in the low single-digit millions or below. Marten isn’t just in front. It’s in front by a wide margin, and the gap is widening.

Marten as a document database

Plenty of those downloads aren’t for Event Sourcing at all. Marten’s original pitch was simple: PostgreSQL is a fantastic database, JSONB is a fantastic storage format, and .NET developers deserve a document database experience without giving up transactions, a real query engine, or the operational know-how they already have. That pitch still holds.

Today that means a serious LINQ provider with compiled and batched queries, full text search, PostGIS, pgvector for AI features, optimistic concurrency, partial updates, document hierarchies, and multi-tenancy from a shared table all the way to database per tenant. Add schema management that just works, and you go from an empty database to a running application with one command, on a database every cloud already knows how to host.

Marten as an event store

You’ll see plenty of people online try to say that you can’t really use a relational database as the foundation for an event store, but our PostgreSQL foundation means that Marten can support a much stronger set of projection capabilities and genuine options for strong consistency that the “dedicated event store databases” cannot.

Marten is the most complete Event Sourcing toolkit on .NET, and it isn’t particularly close. Most event store products give you an append-only log and a subscription API, then wish you luck with everything else. Marten’s position has always been that the event store is only useful if the projections, read models, consistency model, and operational story are all in the box. Highlights that I think are unique, or at least unusually strong, in the .NET world:

Marten’s model has also become the template for the rest of the stack. Polecat brings the same projections and aggregates to SQL Server 2025, and Fisher does the same for embedded scenarios. Learn Marten and you’ve learned all three.

Where JasperFx fits

Marten is and will stay MIT licensed open source. What’s changed is that there’s now a real company behind it. JasperFx Software exists to make the Critter Stack sustainable for the long haul, and I explained the model in The “Open Core” Model for Sustainable OSS Development in .NET. If your team depends on Marten in production:

Thank you

Twenty million downloads, 257 contributors, eleven years. Marten got here because a lot of people decided PostgreSQL plus .NET was a good idea and kept showing up to make it better. If you’ve never tried it, the quick start will have you appending events and building a projection in about ten minutes. If you have, thank you. Here’s to the next 20 million.

Questions, war stories, or feature requests? Find us in the Critter Stack Discord or get in touch with JasperFx.

Leave a comment