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:
- Medium Trust support
- Manageability extensions for configuration (WMI, Group Policy)
- Simple Strong-naming
- Mini-Factory for building your own blocks and providers
- Validation Application Block
- Exception Handling: WCF integration (exception shielding / fault mapping)
- Logging: WCF pipeline integration
- AuthZ: WCF Pipeline integration
Once we get through this list, we have prioritized a backlog of additional features. Currently this list looks like this (most important at the top):
- Config Tool: Embedded in the Visual Studio IDE
- DAAB: SQL Everywhere support
- DAAB: Richer transactions support
- Docs: More code samples
- Docs: Detailed documentation for ObjectBuilder
- DAAB: Batch support
- Config Tool: Edit AppSettings and other .NET settings
- Config Tool: Environmental Overrides
- Config Tool: Encryption Support
- Config Tool: Improved type loading behavior when assemblies can't be found
- Logging: Rolling flat file TraceListener
- Logging: Local or UTC timestamps in formatted log messages
- Logging: Reflected property tokens
- Ability to create custom production installs
- Ability to create custom developer installs
- Exception Handling: Localization of exception messages
- DAAB: ODP.NET provider support
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.