July 2005 - Posts

iXP, AOP, and Ping-Pong

With credit to the Spoutlet, check out one of the most entertaining (and unfortunately accurate) IT blog posts of the year.
with 1 Comments

EntLib June 2005 and Whidbey Thoughts

As you are probably aware, Microsoft's patterns & practices (aka PAG for Platform Architecture Guidance) group released the latest version of Enterprise Library, version "June 2005" (1.1). This release includes some bug fixes and minor enhancements. Additionally, this version "supports" Whidbey. As a disclaimer you should read what Product Manager Tom Hollander has to say about Whidbey support in 1.1. The messaging around Whidbey support can be summed up as, "it compiles on Whidbey, but it is not necessarily guidance". Thus we have the segue to my rant du jour.

While I am no longer a developer on the Enterprise Library team, as a partner I was given the opportunity to code review changes about a week before the release. Unfortunately this was not enough time for any real feedback process. Regardless, I'm not so sure that I would have convinced Tom et al. of the points I'm about to make, especially considering that any changes would delay the release of EntLib.

Enterprise Library is about prescriptive guidance for the .NET platform. It's also about giving you enterprise class reusable code for common tasks. What it's not about is being the "latest and greatest". The key word here is "enterprise". When I think enterprise, I think of either a large scale application for a Fortune 1000 company, or a mission critical application for mid to large sized projects. I don't think about proofs of concepts written on a beta platform, or small software outfits that don't mind taking on the risks associated with running beta software. Unfortunately this philosophy was not followed for version 1.1. While I have sympathy for anyone dealing with the tenacity that eager early adopters possess, I am not pleased with this philosophical modification. Essentially the EntLib team hacked various parts of the code to work on a platform (Whidbey) in which a lot of EntLib has little relevance. Allow me to illustrate some of the consequences.

The number one consequence of this release is customer confusion over how to solve a particular problem on the platform, something that EntLib is supposed to alleviate. Since Whidbey deprecates a lot of EntLib's features, there can be multiple ways to solve a given problem. For example, customers will be reading about all of the new features in ADO.NET 2.0 (e.g. the DbProviderFactory) and wonder if they should use the EntLib Data Block or not. The clear answer in most cases is that they should use the platform features, as EntLib does not take advantage of these features, nor does it guide customers on how to implement those features. But this answer may not be so clear to customers who are just learning about Whidbey. Other areas, most notably Security and Configuration, will pose similar confusion points. In the worse case scenario, a customer familiar with EntLib will use the EntLib features without realizing that they're failing to take advantage of Whidbey's new features. This is starting to sound more like prescriptive misguidance.

Another consequence is a polluted code base. I'm admittedly being a little melodramatic here, but again Enterprise Library is supposed to be about best practices, not beta hacks. After review of the code I noticed numerous "#if VS2005B2" directives with hacks specific for Whidbey Beta 2. Some of the changes are required due to some outstanding bugs in Beta 2, which will be resolved in the final version. In a couple of instances (namely around Xml serialization), code was changed even for Everett (.NET 1.1) so that it would work on both platforms. So now even those of us who don't care about Whidbey are living with code changes that A) do not necessarily reflect best practices and B) adds an unnecessary risk of regression.

Disclaiming that Whidbey support isn't guidance will do little to mitigate these consequences. If it's not guidance, then the PAG group should not be releasing it. Too many customers will see that EntLib "works" on Whidbey and will go full steam ahead without considering the consequences. The message from PAG should have been, "We do not recommend Enterprise Library 1.1 for Whidbey development. We will not alter 1.1 to support Whidbey. We will release Enterprise Library 2.0 which will provide guidance Whidbey development".

Now please pardon me while I go try on my new outfit.
with 3 Comments