It is always good to have environmental awareness, primarily when you work with a technology stack. Package management providers are a good indicator of what’s currently happening in any ecosystem. For .NET developers, the pulse of our community beats with NuGet.
In this post, I take a look at the NuGet Top 100 packages and try to guess what’s happening in the .NET world. Get ready for some outrageous observations. Hold on to your butts, and feel free to tell me I’m wrong.
Before We Get Started
The statistics page on NuGet shows the most downloaded packages in the .NET ecosystem. Inflated download numbers can occur from continuous integration build systems, bots, or repeated manual installs.
The download metric doesn’t imply people like these packages or are consciously adding them to their projects. There is a bucket of assumptions I’m making, and you are more than welcome to read the Top 100 list your way. These observations are from February 7th, 2020, and going back six weeks.
Autofac Is The Most Downloaded Dependency Injection Library
ASP.NET Core bakes dependency injection in, so it is surprising to see AutoFac rank so high at #27. The top-ranking is likely due to many projects still not migrating to .NET Core. Or hopefully, folks love AutoFac so much and are choosing to stay on the ride.
FluentValidation Validates Its Greatness
In my opinion, FluentValidation is the best validation library in .NET. Folks seem to agree, downloading it over 2,317,372 times and ranking it at #32. It’s hard to gauge how it competes against DataAnnotations since it comes with the .NET framework.
Diverse Data Ecosystem
It gives me hope for the diversity of thought in our community when I see libraries that talk to Redis, Elasticsearch, RabbitMQ, PostgreSQL, SQLite, and MongoDB in the top 100. It shows that folks are using more than just SQL Server to build applications.
The Old Framework Blues
The mere presence of Modernizr, JQuery, WebActivatorex, and Bootstrap may suggest more full framework apps exist in our ecosystem.
While these technologies were valuable several years ago, their influence in modern web development is waining. The ranking of these packages may indicate folks are either stuck with older applications or starting new applications with older Visual Studio templates.
Test, Test. Is This Thing On?
The presence of XUnit, NUnit, and test helper libraries shows people are trying to test their code. You also see helper libraries like FluentAssertions in the Top 100. Not only are folks testing, but they are thinking about the readability of those tests. Get your test on folks!
I Moq Your Integration Tests!
Moq holding the #4 spot shows folks would rather have “fast” tests than slow, but more accurate, integration tests. In my opinion, we are in a world where the possibility of .NET integration testing is more easily attainable. I think more folks should try to steer in the direction of integration tests and away from mocking.
We Make Mistakes
The presence of Polly, an exception-handling library, and logging frameworks like Serilog, show developers likely have more unfortunate bugs hiding in their codebases then they would like. It’s ok. We’re all human, and we make mistakes.
The Web Is Winning
The presence of web technologies shows that people are integrating with APIs more than ever. A few libraries include NewtonSoft.Json, Google’s Protobuf, RestSharp, and OWIN. GRPC breaks into the top 100 in the last spot, which shows folks are learning new protocols for sharing data. It’s likely a drive to learn, or it is David Fowler is doing way more demos.
I Would Like To Welcome Our Bot Overlords
The optimist in me hopes that technologies like HtmlAgilityPack and Selenium indicate developers are doing more UI tests. The pessimist in me knows developers love writing web scrappers. The libraries are certainly used to process inaccessible data from popular web sites.
Keeping Track Of Time
NodaTime ranking at #84 shows developers taking date and time more seriously. As far as .NET goes, we may not have the adequate tools required to deal with dates and times.
Business Users Need Files
CsvHelper, EPPlus (Excel), and Sharpziplib may indicate developers still need to create business formats for their apps. EXPORT ALL THE THINGS!
Big Tech Companies
Google, Microsoft, JetBrains, Amazon, and Stack Exchange are all in the top 100. It pays to be an 800-pound gorilla.
While .NET might feel like the Microsoft show at times, the diversity in the top 100 list gives me hope that folks have a real chance of influencing the community. You have single developer packages ranking over monolithic tech companies, which goes to show you a good idea is a good idea.
Unit testing is much more influential than I would have thought. It is also great to see that the web is winning, with many varied approaches to sending and receiving data. The breath of data technologies also means .NET developers are looking at new approaches to storing information.
One downside of the list, it seems like older tech is still ranking high, likely due to a struggle by developers to migrate to .NET Core.
What are your thoughts looking at the Top 100 packages? What do you see that I didn’t see? Let me know in the comments or tweet at me.
Note to NuGet: I’d love to see grouping these stats by the root package. It would give developers a clearer picture of the top 100 packages.