As I'm getting myself ready for a new talk, here is another series for you to chew on. The talk is titled "Running a Marathon barefoot, those libraries I wouldn't want to code without anymore" and I'll be presenting it in Karlsruhe in May 2014 and in Nürnberg in July 2014.
The pitch
The idea is that if I probably could run a marathon barefoot - that idea crossed my mind at one point and I learned a lot from barefoot running - it's actually much less painful with shoes... and I would probably not do it anymore. Same goes for my life as a developer.
It is often said that we, as developers, stand on the shoulders of giants. We build increasingly complex systems on top of increasingly complex ones. If we can and certainly often do develop on the bare .NET Framework using only Microsoft products, we often prefer software shoes libraries that make our lives easier.
Open Source
We use a lot of libraries & frameworks. The bigger ones like EntityFramework, Prism, nHibernate & Spring.NET for example are full fledged products and are either Microsoft products and/or are already established as industry standards. Those don't interest me in this context.
The libraries that I want to focus on are the smaller ones, the ones that address one specific pain point and often disappear not too long after as their key concepts are absorbed in the .NET Framework itself.
First of all, Microsoft itself is increasing its focus toward OpenSource projects as more and more of its projects are being OpenSourced (ASP.NET, Roselyn etc.). Then, the first OpenSource MVP award was given in 2014 (to Andreas Håkansson, a.k.a. @thecodejunkie, author of the Nancy Framework). Finally, there is already way too much talk about the biggest frameworks and there are a bunch of magnificent smaller libraries out there that deserve a lot more focus.
The candidates
A few months ago, I did a small survey on twitter:
Here's the list I gathered:
- Autofac
- AutoPoco
- CsQuery
- Dapper
- EmitMapper
- FakeItEasy
- Json.Net
- JsonFx
- Moq
- NancyFx
- NDatabase
- NEST
- Ninject
- NLog
- NodaTime
- Nowin
- NSubstitute
- Owin.*
- PUrify
- RestSharp
- RhinoMocks
- ServiceStack
- SimpleAuthentication
- SimpleValidator
- Spring.Rest
- T4
- TinyIoc
- Windsor
Among those are a bunch that I know and use really often. Some others I had only assessed. And a few I didn't even know.
It was difficult, but I managed to reduce my selection to 5 of them: Some I have experience with and would probably recommend in a heartbeat and some I had only assessed but feel have an outstanding potential.
I will thus talk (and write) about NodaTime, JsonFX & Json.NET, RestSharp and TinyIoC.
Those are of course just my tip of the iceberg but will - I hope - give you some ideas of how incredibly interesting the OpenSource world is.