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.
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.
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.
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:
- Fast start & learnability
- Architectural refactoring
- Semantic Logging (new block!)
- Generalizing the Transient Fault Handling Application Block (“Topaz”)
- Autoscaling Application Block (“Wasabi”) improvements
- Unity improvements
- Logging Application Block improvements
- Validation Application Block improvements
Individual user stories can be found on the Uservoice.
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.