Over the years, we have often gotten the question on when we will be releasing v1 of Nancy. While it has never been important to us, many have been claiming that this is something that is important for enterprise adoption.
I still remember when we went from 0.9.0 to 0.10.0 and many thought we were crazy. Apparently 1.0.0 is the obvious next version after 0.9.0, right? With the current release being 0.23.0, you can perhaps tell that we did not agree.
Of course, it is my personal belief, that changing the version number to v1, is just an artificial sense of security. Nothing else is going to change in terms of support or promises (well almost, more about versioning further below).
The reasoning behind moving to v1
So if the version number is not that important, then why are we finally targeting a v1 release? There are several reasons for us, the two major ones are SemVer and supported framework versions.
Adhering to SemVer
We have always used SemVer-ish to version our releases, with the difference that we have been bumping the minor version, on each release, instead of the major.
When we release v1 we are going to adopt a strict SemVer strategy and bump the major version number each time we release a new version that contains public breaking changes.
Historically we have always had a couple of breaking changes, but we have always tried to make sure they have been well documented and, for the most part, only affected you if you were doing customisations of Nancy.
While we probably will keep having these kinds of breaking changes for a while longer, we hope they will gradually be fewer over time.
Adhering to SemVer, this means that we will be assuming the Chrome-model of versioning. We are not bothered with increasing the major frequently. The reason for this is that increasing the major version, with SemVer, communicates something very clear to the consumer.
Supported framework versions
Ever since Nancy was released, back in 2010, we have been targeting .NET 4.0. This has been an important things for us because it has taken time for 4.5 to gain momentum in the community (especially in enterprise environments), even though it was released nearly 2 years ago.
With the release of v1 we will start to phase out our support for 4.0. We are doing this for a couple of reasons.
The first one being that Microsoft is now pushing their new stacks (Katana, ASP.NET vNext and so on) onto .NET 4.5, so there will be a forced adoption of 4.5 for anyone that wants to keep up with the new stuff they release.
The second reason is that we feel it is time that we start taking advantage of the new language features (such as async/await) and features (classes, method overloads and so on) in the Nancy code base. In many ways this is going to mean we get to delete (yay!) our own code, leaving us with less code to support.
v1 will be a double edged sword
We plan on releasing the v1 nuget with two sets of assemblies in it. One that targets 4.0 (v1-net40) and another that targets 4.5 (v1-net45).
The v1-net40 version will be maintained (roughly) for 6 months, before we completely drop support for 4.0. This should give you adequate time to upgrade your infrastructure to support 4.5 (it's time, it was released nearly two years ago).
When it comes to the v1-net45 version, it will contain the same features as v1-net40. However, it also contains other things that will be unique for the 4.5 target.
For example, we will add support for System.Security.Claims (which is only available on .NET 4.5) in the v1-net45 release. This will enable us to flow security credentials into Nancy from things like Katana, which means Nancy will play even better with the OWIN ecosystem.
The path to v1
The next release is going to be given the version v1-alpha. It is going to be followed by a v1-beta and then finally the actual v1 release. No exact release dates have been set for the beta and final release, but we hope to get the alpha out in about 3-4 weeks time.
This means that there will not be a 0.24.0 release, however there may be additional 0.23.x releases in the meantime, that contains bug fixes.
Simply put, this is not a 12 month goal that will eventually happen, we are fully committed to making v1 happen within a reasonable near future.
Even the best of plans is going to need fine tuning
All of the above is the result of a single meeting, and discussions that have been taking place on JabbR and email, over several months.
Nothing is set in stone yet, but it is the roadmap that we hope to follow. It is not unlikely that we are going to make adjustments to it as we start heading down that path and if you have any feedback then please let us know!