As I have mentioned in my previous posts, over the years, Enterprise Library grew large (it now includes 9 application blocks), and arguably more complex than it really needs to be. With v5, we are focusing on enhanced user experience, simplicity, and learnability. We are tackling these goals from several dimensions: architectural refactoring to simplify our code base and make it easier for users to extend EntLib; improving our config experience through the config tool; and writing more approachable guides. Let me describe these in a bit more detail.
Simplifying the underlying architecture
The creation of EntLib objects is, on the surface, pretty simple. You call into the appropriate factory, stuff happens, the current configuration is read, and the appropriate instances are returned to you. Of course, the aforementioned “stuff” gets rather complex. Every EntLib object requires the object itself, a Data class describing the configuration, a custom factory class, and (usually) an assembler class, plus a bunch of attributes scattered around to wire them all up together. Maintaining all these moving parts can be challenging to the uninitiated, and this is a major barrier to people who want to build their own blocks or extensions.
At its heart, the ObjectBuilder infrastructure (and the factories and assemblers, etc.) was really a very specialized dependency injection framework. With the basic idea of DI moving into the mainstream, we took the opportunity to revisit this design. We are replacing all our custom object creation infrastructure with a dependency injection container plus methods that properly configure the container. The net result is the removal of a lot of moving parts, which simplifies the codebase significantly. You no longer have to wade through quite so much infrastructure to get to the real meat of what Entlib is doing. And switching to a full-featured DI container also gives us much more flexibility, both in Entlib and in how it interacts with your applications.
Usability of the config tool experience
The config tool (available as a standalone application, or as an integrated configuration editor with Visual Studio starting with EntLib v3) was a major step forward in creating, modifying, and validating application block settings. No one wants to manually tweak xml configuration. The tool has not undergone any major changes since v1. It uses a tree-based interface that, according to some anecdotal evidence, users find not very intuitive. There also seem to be some conceptual barriers in connecting various parts. We would like to understand the current user experience and improve it in v5, specifically in regards to:
- Approachability and usability. Important goals are increasing efficiency of use and reducing pain points associated with common tasks.
- Extensibility is a key feature of EntLib. The new design for the configuration tool must be robust and flexible enough to support multiple types of user customization and also scale with future EntLib releases.
In order to do this methodically, we are partnering with seasoned user experience researchers (Kelly Franznick and Jen Amsterlaw of Blink Interactive) and executing on the following plan:
1) Baseline usability testing of the v4.1 config tool. This is needed to identify areas for improvement, and as a standard to compare to the new tool, once it is designed and implemented. We are targeting .NET developers who are fairly new to EntLib (1-3 months of experience) and IT Operations/Admins who are new to EntLib. By asking users to perform specific tasks in a controlled and moderated setting, we are focusing on specific areas of concern, including processes that require conceptual understanding to assess learning curve issues. We are currently doing this at TechEd in LA. If you are interested in participating, stop by the p&p booth on the exhibit floor (blue area).
2) User research. This will involve interviewing existing end users to understand their goals, motivations, and perceptions of the overall EntLib experience. Together with the results of the baseline usability testing, the user research will inform the next phase, which will focus on interaction design.
3) Interaction design. During this phase, three distinct concepts will be designed to reflect the major workflows of the EntLib improved config. These will be presented in the form of wireframe prototypes.
4) Prototype usability testing will test these prototypes.
Based on the results of these studies, we will analyze the feasibility of implementing the best prototype and build the new tool. I will keep the community updated about how these activities are going.
Our current set of docs includes over 1000 pages. We understand that no one has time to read all of that information, some of which has more details that most users need. To address this, we are experimenting with a new style of documentation — Developer Notes. These are written in a more informal, conversational style, are task based and are meant to be more approachable. The key here is for users to be able to quickly find out how to do common tasks with EntLib (thus, we are limiting the size of the guide to be under 200 pages total). Chapter 1. Meet the Librarian and Chapter 3. Error Management Made Exceptionally Easy are available for preview and public commenting.
The first 50 people who provide thoughtful feedback will receive a complete copy of the book once it is out.
Hope these three initiatives give you a good indication of how seriously the EntLib team takes user experience. If you have other suggestions, we welcome them as well.
Back to TechEd crowd now…