The EF team has been working toward being more agile and having a higher release frequency. We are also releasing more previews and making them available earlier in the release cycle so that your feedback can help shape the product. This effort has seen us publishing a much higher number of releases.
In the last 6 months we have released; EF 4.1 Release Candidate, EF 4.1, EF Power Tools CTP1, EF June 2011 CTP, EF 4.1 Language Packs, EF 4.1 Update 1 and Code First Migrations August 2011 CTP. That is a pretty confusing list of releases, especially given there are some incompatibilities and dependencies within the list. Just to add to the confusion each release is available in one or more places including Microsoft Download Center, NuGet & Visual Studio Gallery.
It’s become clear that we need to rationalize how we name, distribute and talk about releases. This problem isn’t just affecting our team, Scott Hanselman recently posted about the need for better versioning across all our products.
This post will walk you through the changes we are planning to make. Nothing is locked in yet so we welcome your feedback.
There are two logical parts to the Entity Framework, the core components that ship inside the .NET Framework and Visual Studio and the ‘out of band’ components that we can update on a much more frequent schedule. We are currently looking at how we can update the core components on a more frequent cadence as well. The ‘EF June 2011 CTP’ was our first attempt at shipping the core components more frequently and it’s become clear we’re just not technically ready to do this yet.
Core components include:
Out of band components include: (We will likely ship more out of band components in the future)
As mentioned above, the core components will remain part of the .NET Framework and Visual Studio.
The out of band components will be primarily available via NuGet and Visual Studio Gallery.
NuGet will eventually have built-in support for pre-release versions of packages but in the meantime we will introduce a .Preview version of each package. For example the EntityFramework package will be the latest fully supported runtime, EntityFramework.Preview will be the latest preview. For the period between an RTM release and the next preview both packages will include the same build. We will ensure that the non-preview packages always work together (i.e. EntityFramework will always be compatible with EntityFramework.Migrations etc.). We will try to ensure that the latest pre-release versions work together but this may not always be possible.
The version numbers of the core components will be governed by the .NET Framework & Visual Studio release that they are part of.
For our out of band components we will version using principles from Semantic Versioning.
Once a component has had an RTM release (i.e. reached version 1.0.0) all subsequent previews will use the target final release number with an ‘alpha’, ‘beta’, etc. special version. For example we will release EntityFramework.Preview package with a version number of ‘4.2.0beta1’ before releasing EntityFramework with a version number of 4.2.0.
Please let us know what you like and what you think we should do differently.
Rowan Miller Program Manager ADO.NET Entity Framework