Nancy : 0.11, more than the sum of its parts
With out eleventh release just our the door, I was struggling to come up with a descriptive post title that captured the essence of the new version. Looking back at the 190 commits by 25 authors that make up the release, "more than the sum of its parts" is an appropriate description.
A total of 78 contributors, with more lining up with pending pull requests for future versions, have helped make Nancy the awesome framework we have the pleasure to put to your disposal.
A glimps of what’s new
It would take up far too much space to write about the 62 work items that’s gone in to this release, so instead I will just cherry-pick some of them and present them here. You should visit the milestone at github and check out everything that’s gone into 0.11.
- Favicon override by just dropping a favicon.ico/png anywhere in your application path. Can still override the FavIcon property in the bootstrapper if you wan’t custom logic or use an embedded icon
- Updated the FluentValidation nuget dependency to 220.127.116.11. Turns out the FluentValidation nuget contains a strong-named assembly
- Added AddFile to StaticContentConventionBuilder, enables you to map individual files
- Allow Nancy to run on machines with FIPS Compliance enabled
- Added our own ViewBag concept and exposed it on several of the view engines
- @helper functions are now supported by the Razor view engine
- HtmlHelpers/UrlHelpers gained a face lift and now expose a rich set of properties, such access to the model, the render context (thus the actual NancyContext itself) and the engine itself. This opens up the door to write pretty much any kind of helper extension you can envision
This is just a small selection of all the new features and improvements that have been added for this release, make sure to read the full change log.
We really do try out best to limit the number of breaking changes that we introduce with each release. Some APIs are still being explored and as feedback comes in from users, we sometime feel the need to make some breaking changes in order to make the path forward easier on everyone, contributor or consumer. In this release we have 2 breaking changes (the milestone says 3, but 2 of them relate to the same change, just different areas in the code base).
- Removed Nancy-Version header. In hindsight this was nothing more than a framework vanity place, put in by yours truly. I do agree to the idea of the less information you expose, the smaller the attack vector will be on your application and with this in mind we decided to pull the version out starting with this release. You can add it back in with an application pipeline hook if you have a need for it. If you don’t know how to, just drop us a line at the user group and we’ll get you sorted in no time.
- Added NancyContext everywhere. This is probably only going to affect you if you have been extending any of Nancy’s sub-systems (error handling, authentication, model binding and so on). There were a couple of sub-systems where the context was not available, which made it difficult, if not impossible, to sometimes get the full potential out of your code. Hopefully this change will improve the experience by quite a lot. If you spot a place where the context would do good, let us know.
What’s up next
There are quite a lot of pending pull requests, with all sorts of interesting new features and improvements, that are waiting to be included in the next release. The main focus for me and Steven are going to be to add support for async routes and content negotiation. We have created a post, with the title Planning 0.12 : Content Negotiation to capture your ideas for how it should look and work in Nancy. We will be creating a similar post, soon, for async discussions.
We also have a goal of making more frequent releases, there is no point in holding back a release just because we want to get certain features into it, they can always come in the next iteration. We feel that it would be far more productive if we had a shorter (maybe every 3-4 weeks) release cycle so we get all the awesome stuff, that’s contributed by the community, into your hands faster.
That’s all for this release!