Enterprise Library 6.0 - Vision/Scope

TL;DR version

This post is an overview of the direction the patterns & practices team is taking with the next version of Microsoft Enterprise Library. Feel free to scroll down for the specific product backlog themes or just visit our Uservoice site.

Exploration and preparation

After a couple of months of exploration, we have finalized our plans for the next major version of Microsoft Enterprise Library. We have analyzed a sea of information from various sources, including:

  • numerous discussions with subject-matter experts and EntLib users
  • discussions with the members of the advisory board
  • discussions with various Microsoft product groups
  • suggestions and votes on our Uservoice site
  • IssueTracker items
  • MSDN, Codeplex and StackOverflow forums
  • suggestions from our sustained engineering and Premier support teams
  • review of remaining stories from the previous product backlog (that didn’t get done in v5.0)
  • team brainstorming, categorizing, filtering
  • responses to our blog posts
  • comments in social media over the past 18 months
  • direct email communications with the product owner and members of the dev team
  • observations of users in action
  • log analysis (popularity of certain parts of Enterprise Library based on number of downloads and page views of the corresponding pages on MSDN)
  • user ranking and commenting on MSDN articles
  • satisfaction exit survey data
  • logging scenarios survey data
  • conversations with //Build attendees
  • downloads and comments on the EntLib related videos on Channel9.

We thank everyone who provided their thoughtful feedback.

We have now created a new Advisory Board, presented our vision to the leadership team, got business consensus on the themes and an approval to go ahead with the project. Our dev team is formed and we are excited about the project.

The Vision – simplification throughout

Here’s the formal vision for Microsoft Enterprise Library 6.0:

For developers, solution architects, DevOps and IT Pros building, extending and maintaining LOB systems on Microsoft platforms (.NET Framework 4.5 and Windows Azure), Microsoft Enterprise Library 6.0 will provide guidance and reusable components designed to encapsulate recommended practices for end-to-end application development in .NET which facilitate ease of use, consistency, and extensibility.

Let me share with you a couple of laptop stickers that I designed for EntLib5.0 and 6.0. They are meant to epitomize this project vision.

click to enlargeHere’s the one for 5.0 (on the left).

As you can see the key message here was to position EntLib as a developer accelerator meant to do heaving lifting for you. The Enterprise Library design has traditionally been guided by the principles of:

  • Consistency: Application blocks are written with and used in common patterns
  • Extensibility: Pluggable extension points
  • Ease of use: Config tool, tons of docs, simple interfaces, labs, webcasts
  • Integration: Work well together or separately

The vision of EntLib blocks addressing common-cross cutting concerns and promoting code reuse hasn’t changed. We still want to encourage devs to focus less on the plumbing and more on what matters to the stakeholders – business logic and overall user experience. However, the order of the guiding design principles has changed. Our primary consideration now (as can be seen from the stated vision above) is the ease of use and the fast start.

imageThe metaphor for v6.0 is this one on the right.

As you can see, what we are envisioning is to make the Enterprise Library much lighter. This means deprecating the blocks that are not relevant anymore due to the modern capabilities of the platform itself (Caching, Security and Crypto), removing lots of historic cruft which we were carrying forward to support backward compatibility, and generally simplifying the underlying architecture. For example, there are currently four different ways to get your Enterprise Library objects. This is not needed – so we’ll simplify this and offer 1 or 2 recommended approaches. Simplification also means minimizing the number of interblock dependencies. We are going to emphasize that each application block can be used standalone. The vision is that if you download the Logging Application Block package, you will not need to marry into an extended family of other packages (like EnterpriseLibrary Common -> Unity Interception -> Unity -> Service Location). It will be just one package with an optional dependency on the configuration package (if and only if you want to use declarative configuration).

We are also making a substantial investment in tackling the configuration complexity. Our ultimate goal is to make it so simple, straightforward, and intuitive that no configuration tool is required at all. This is while assisting DevOps and IT/Pros in deploying, managing, and supporting their systems that are built with EntLib application blocks. This is a very ambitious goal. We feel with your feedback we’ll be able to pull it off. I will be writing a separate post dedicated specifically to our plans around configuration.

One other important aspect of the new release is that we plan to target both on-prem and cloud naturally, with no tension. This includes the configuration and all application blocks (including the Transient Fault Handling Application Block and the Autoscaling Application Block). This is also worth a separate post.

Target personas

These are our primary target personas with the corresponding goals:

  • Devs new to EntLib:

– Get going fast!

  • Alumni EntLib devs who are not using it today

– Reignite my passion for EntLib, make me see the value-adds; debunk the myth of all-or-nothing deal.

  • Current loyal EntLib fans

– Provide smooth migration experience, continuity and support.

  • DevOps and IT Pros

– Simplify deployment and operations by reducing the chance of errors.

Product backlog themes

Currently, our product backlog is organized by the following broad themes:

Individual user stories can be found on the Uservoice.

Target framework

Let me make it clear: Enterprise Library 6.0 is primarily about the back-end story. We will target the .NET 4.5 framework and all platforms that .NET 4.5 is supported on, including:

  • Windows 8 Desktop (no Windows RT except for Unity)
  • Windows 7 (32-bit and 64-bit)
  • Windows Server 2012 (64-bit)
  • Windows Sever 2008 R2 (64-bit)
  • Windows Server 2008 SP2 (32-bit and 64-bit)

Cloud-specific features will target the latest Windows Azure SDK.

Unity 3.0 is the only application block which will have a WinRT version for now. We have already released the preview of it. During this project, we’ll do the proper test pass, security review and other quality gates.

How can you help?

Please continue to comment/vote on use stories on our Uservoice site. We definitely appreciate your input and would like our backlog priorities and sprints to continue to be informed and driven by your feedback.

If you feel strongly about engaging with us more closely, consider joining our advisory board. We are looking for both experience EntLib users and enthusiastic novices.

Comments

  • Anonymous
    February 14, 2013
    When is the targeted release date for EntLib 6.0?

  • Anonymous
    February 14, 2013
    April 2013 with some application blocks being available via NuGet sooner.For example, we have just shipped the CTP of the Semantic Logging Application Block.

  • Anonymous
    February 14, 2013
    2 questions-

  1. Will V5 and V6 be able to exist side-by-side?
  2. The associated documentation and third party books get better with every release - what have you got planned for V6?
  • Anonymous
    February 15, 2013
    @Jason re:side-by-side It's always tricky regardless of EntLib because you have to manage different versions of the assemblies. What specific SxS scenario do you have in mind? If it's SxS on a developer's machine to work on different apps using different versions of EntLib, that would certainly work. If it's using some blocks from V5 and other ones from V6, that's much trickier. It would help us if you could elaborate on your scenario. re: docs Yes, learnability is something that we are taking seriously. We will be refreshing the Developer's Guide for EntLib. We are also working on a new guide - Developer's Guide to Unity. If you'd like to be a technical reviewer on those, please let me know. In addition, we are building a sample app (aExpense reference implementation) and plan to have a series of video tutorials to accompany it. The first one is out with the CTP release of the new Semantic Logging Application Block (channel9.msdn.com/.../Introducing-Semantic-Logging). Let us know what you think useful enough? deep enough? anything you'd like to see in those.

  • Anonymous
    March 04, 2013
    Currently there are multiple versions of Azure SDK out there + new NuGet packages containing Azure Storage libraries (2.0). The 5.0 Application Scaling Block doesn't seem to play nice with the 2.0 libs. Any news on that?

  • Anonymous
    March 07, 2013
    The comment has been removed

  • Anonymous
    April 02, 2013
    When can we expect final release and is there any chance to include "Resource Application Block"