Enterprise Library v3: The Plan

Thanks again to everyone who shared their ideas and priorities for the next release of Enterprise Library in the posts and surveys we ran earlier. We went through all of the responses, and also considered a bunch of additional factors such as technical complexity, maturity of the domain, and alignment with other deliverables and products. We used all of this data to put together a plan for what we believe we can - and should - deliver to make everyone as happy as possible (Microsoft is such a Utopian place 🙂

In p&p, there are a few major milestones that each team needs to pass in every project. The first of this is called the Vision/Scope milestone. This is where we put a stake in the ground about what we plan to deliver and why. We need to impress our management team enough to give us resources (meaning people and dollars) to let us move forward on the project until the next milestone, which is called M0. (Unlike other teams in Microsoft, we generally don't have other "M" milestones, like M1 or M2. I've suggested we call our milestone just "M", but for some reason nobody jumped at my idea :-). At M0, we need to have a much more detailed plan describing what we will deliver by when, and what it will cost. At this milestone, if all goes well, we are given the resources to complete the project.

The other day we got through the Vision/Scope milestone for Enterprise Library "v3" (note we haven't worked out exactly what we'll call it yet). This means we are now able to start development, so you can expect to see a bit more activity (and eventually some early code drops) on the Enterprise Library Community site. Since we are not yet at M0, we can't promise anything yet - but I'd be happy to tell you what we're planning as of now.

If you're familiar with the agile development processes we (try to) follow in p&p, you'll know that features are prioritized and put into a backlog, which we'll work through until we run out of time, money or sanity. We don't know how much we'll get through now (which is true for any project - and anyone who pretends to know is lying :-), but having a prioritized list and ensuring the product is always in a shippable state allows us to ship as much value as possible within the constraints of our project. We also have a "minimal credible release" line, which is the list of features which we believe we need to ship before anyone will find the new release worthwhile.

As at our Vision/Scope milestone, the minimal credible list line includes the following features:

There are a few more things to say about this list. First, you may notice that the list isn't in exactly the same order as the results from the prioritization survey - and that some highly requested features aren't on the list at all. Most obviously, none of the new application blocks that were requested have made the cut other than a Validation Application Block. This is for a few reasons. We looked very closely at the Workflow and Business Rules areas, and we felt that with Windows Workflow Foundation coming out very soon, it was too early for us to know exactly what additional value we could provide on top of the new platform capabilities. That said, the results from the survey have demonstated how important this scenario is to so many of you, and we have already started researching this space in more detail to consider how and when we can provide additional guidance (which may be in a future release of Enterprise Library, or may be in some other form). Some of the other requested blocks did not have so much technical uncertainty, however the amount of effort required to build new blocks would mean that if we bit off too many of these, we would not be able to implement a critical mass of the other requested features. So for now the plan is to focus on the most important block that we believe we can be successful with now (Validation), and to address as many of the other non-new-block features as possible.

The other very important thing to understand is that the feature list above is not final. Throughout the project we expect to learn a lot more about your priorities and our ability to deliver, and we will reprioritize the list accordingly - and I'll be sure to keep you informed as we do this. But for now I'm very excited that we have our initial list and can start work, and very confident that you'll continue to let us know if we're headed down the right track.

What is the timeline for Entlib v3? Will it be released before Visual Studio "Orcas". The reason I’m asking is to know if there are any plans for DAAB improvements for LINQ and ADO.Net Entity Framework.

Chris – How can you call something "Totally Bogus" when what that something is has yet to be clearly defined? Where exactly do you get off judging something before it’s even fully described; much less designed, built or implemented? How long have you been developing on a professional level? I urge you to THINK before you speak. Grow up, then post.

I have to say that I am somewhat disappointed in what you guys have put together as the "list of features which we believe we need to ship before anyone will find the new release worthwhile".

I participated in a lot of surveys, posted feedback etc. and I honestly can’t see where anything we’ve been asking for is in this "worthwhile" list. It is hard to say exactly what value these will provide us since they are just bullet points, but there have been numerous numerous requests to embed the config tool into Visual Studio and that ONE thing is a huge value add. Yet, it is on the bottom list.

Are you guys putting things on the lists in order of what would be fun for the team to engineer and build or are you trying to solve for real world enterprise problems? The only thing on the top lists that makes sense is the Validation Block, although I am not sure if this is somewhat of a "business rules block" or what.

I just don’t feel like you guys are *really* listening and I think that is why Chris above posted what he did, although not in the most polite manner.

I think we would be better off if p&p simply posted Enterprise Library to CodePlex and let the community build and vote on what goes into the next release than going about building it this way. I guarantee you that you would already have the Rolling File Logger. Why? Because someone already wrote it and now it is an addon instead of getting baked back intp EntLib. It doesn’t have to be that way. Put EntLib on CodePlex, and let it evolve.

Wow, you folks are sensitive! I didn’t think that was too agressive. Look, I am steeped in the EL, and I have had to use it in ways that most folks won’t use it (for example: disparate configuration sources for the same application), and I also work for a true enterprise level software company. Medium trust is an issue that comes from the hosted environment – this is NOT an Enterprise concern. A Validation block is NOT a pressing concern for the Enterprise. Mini-Factory – Why? That is what ObjectBuilder is for. Thus my responses . . . anything WCF = good. Key Management is a HUGE Enterprise level concern and getting an Enterprise level solution is a 6 figure proposition.

Look, comments are for commenting. I didn’t curse, and I didn’t personally assault anyone. I value GREATLY the EL and what it does, but this is a disappointment. Calling a disappointment "bogus" is hardly strong language or disrespectful.

Guy – yes this release will come before Orcas but after .NET 3.0. We don’t have a firm schedule yet but early 2007 seems likely.

mwherman2000 – This release will be bigger than the June 2005 maintenance release, but smaller than the January 2006 .NET 2.0 rewrite. Don’t equate this with decommiting – but with so many other things going on in p&p this year around software factories, our budget is limited this time around.

Chris – sorry you aren’t ecstatic about the priorities, but they are generally based on the survey results. The Validation Application Block received a lot of votes, and key management improvements did not. But I have no problem with you sharing this, and I didn’t find this offensive.

theCoach – No we don’t provide any support for async calls through DAAB, and it isn’t currently on the feature list.

Keith Elder – acually the priority lists are sorted from most to least important, so the embedded config tool is right at the top of the list (but outside the minimal credible release line). Don’t get too caught up on the short size of the first list – I fully expect us to make some good progress down the second list. As for putting it on CodePlex, that would be a great discussion for another day 🙂

Different Chris but I find the mini-factory useful. Making it easier to plug my own blocks into the configuration subsystem is valuable, even at an enterprise level. Although I tend to have similar thoughts about validation. It belongs in the Smart Client Software factory or the Web Client Software factory, not EntLib.

Chris (not that "different" Kinsman guy), you have to understand that enterprise key management is hard to do right. There is a reason why many solututions today are very expensive. Many are also hardware based. EL plugs into these solutions just fine, so if that level of key management is needed, EL definitely supports it.

Not always. Haven’t you heard of principal of least privileges before? In many enterprise environments this is a requirement (actually I would expect that in most enterprises it is the norm but i digress) especially when they deal with financial and sensitive data. This is especially true with the large insurance and broker transaction systems I’ve worked on.

The list above sounds like Avanade’s ACA.NET 4.1 (EL plus batch and validation), Avanade’s Visual Studio Integration Pack, and Olaf’s extensions (AppSettings and other .NET settings, environment overrides). Nice to see that what we have already been using for months is going to become standard in EL.

Still no mention of a MySQL provider, you got SQL and Oracle, why not MySQL? Oh wait, Microsoft cannot support open source, my bad. Not like it is difficult. Oh well, I have my own.

Please, please, please make sure I can drop in my own logging provider (Trace is useless and the one in the Enterprise library is poorly concieved) — let me plug in log4net even if I have to write an adapter class/factory.

I second key management — most of the rest of the stuff I don’t care about at all.

Better yet, how about you forget about half-baked "enterprise" libraries and give us a real app server/container?

I understand that the EL 3.0 stuff is based on a survey – I took it. But I ALSO understand that the request went out to the masses as a link from this blog. There is not much "Enterprise" screening going on there to ensure you are getting responses from the target audience. I think the proof is in the Medium trust issue – you are addressing a need, that, although conceptually valid, is not a concern of the Enterprise. (I think the Medium trust issue really came to your attention as a result of the CSK project. i.e. Not an Enterprise.) I would hazzard a guess at the same response towards the Validation block.

TSHAK – You’re DARN RIGHT I understand how hard it is – if we don’t buy it, I’m the guy who gets to write it. I understand all too well how difficult it is going to be, that is why I am clamoring for MS to belly up the bar and provide some real value in the 3.0 release.

Basically I don’t think the enterprise library has been got successful. I use its data access app block long ago and found that it only works well with DataSet and DataTable. Most of developers are not aware of the importance of strong type and custom class. Things will become better only after shipping of LINQ. So lots of code can be quickly developed but with is hard to maintain.

I don’t see how removing the Business Rules Block, the most highly recommended new feature, which you dangled in front of the community during the survey and decided to take it away. What makes you think WWF will alleviate the business rules aspect of enterprise apps. It’s hard enough getting approval to use 3rd party tools, which is why it would be perfect if EntLib decided to manage this block. It would go hand in hand with the Validation Block, it only makes sense.

We’re not at all sure that WF will solve all of these problems – but at this time, we’re not sure that it won’t either (or more likely, it won’t solve all of the problems but we don’t yet understand the nature of the "gap"). So I’m sorry if this looked like "dangling and taking away" – actually the request for this block came entirely from the community, and I wanted to make sure we gave it the attention and visibility it deserved. As I mentioned, we aren’t ignoring the opportunity – we just don’t think we can be successful with it in the upcoming release of Enterprise Library.

Currently, when I use the configuration tool, it can read my configuration fine – but when I save it after modifications have been done, it writes all configuration data in one file instead of keeping the original file structure.

One feature I’d like to have is the ability for the Caching Block to seemlessly work with the ASP.NET cache if it is available or use its own internal store if not. That would greatly increase the value of the Caching block and make code more portable.