Thursday, April 5, 2007

Upcoming "Why CAB?" webcast

Have you heard about the "Composite UI Application Block (CAB)" from Microsoft Patterns and Practices? How about the "Smart Client Software Factory (SCSF)"?

They address a gaping hole in the enterprise application development process: how to wire together large applications.

We've got lots of tutorials and sample applications that show how to build a simple screen or solve a single problem. But there is not much available in .NET for assembling the whole enchilada.

It's not like we can avoid the issue. We've all been gluing our apps together in one (unsatisfactory) way or another. I've probably written five separate "application frameworks" in .NET alone. Not because I wanted to. Because there hasn't been an alternative.

Along comes CAB to promise me that I won't have to do that again. Well almost.

CAB combines a tremendous number of solid, established patterns for building large applications as loosely coupled components. On top of CAB there is a "software factory" to help us routinize the application-specific artifacts (especially the application's standard views).

Many find CAB intimidating even when supplemented by SCSF. I was certainly one of that multitude. I'm over the hump now ... and can hardly imagine app development without CAB. Yes, even on small projects.

Now I recognize that these glowing sentiments are possible only because I spent an inordinate amount of time wandering around in the dark, smacking my head on this and that unseen obstacle. There are plenty of us with bruised foreheads and scraped knees. Something has to be done about making CAB/SCSF more accessible ... not just to your average developer (that goal is out of immediate reach) but to your fairly seasoned application architect. I'm working on the education front in my copious spare time.

Is CAB worth it?

I raise a resounding "Yes". I think CAB is transformative technology in much the same way that the shift from procedural to object orientation was transformative.

The "transformation" is not just for geeks. This isn't just another bit of wizardry to learn.

CAB could be most important because it can reduce total life-cycle costs, improve our ability to respond to changing business requirements, make us more productive, and help us shrink the dev team to manageable size. Instead of throwing more bodies at a project (bodies half a world away) we could get the work done close to home - close to the end users who actually understand what we're supposed to build.

CAB could become the basis for a common development culture. Today, each of us is inventing his own application infrastructure - his own private kingdom. Hiring a new developer? You have to show her around the realm; teach her the local dialect, warn her about the trolls over there and the flaming swamp over here. Relax your grip - perhaps to illness, vacation, or insurrection - and your brief reign will not be remembered fondly.

In CAB world everyone speaks the same language. Each of us may have his own idiosyncratic take on the core concepts but at least the major constructs are recognizeable. Show me a CAB app for the first time and I can quickly find North and South, discover the principle landmarks, negotiate its highways.

Murray Gordon (an MS MVP) and I will be talking about all this in a WebCast on April 24, 2007. We're not going to explain CAB - that can't be done in an hour. But we can introduce you to CAB, show you some results, and equip you to explain CAB's potential to management.

Check us out.


Aiden said...

I agree about CAB's potential but boy is the learning curve steep. I'm already sold on the "why cab" it's more about the "how cab" for me.

I know there is a book (Programming Microsoft Composite UI Application Block and Smart Client Software Factory) out in June and pinning my hopes on that.

PS: Are there any resources other than what is on MSDN that you found useful in figuring it all out? said...

I agree. I like the CAB and am starting to use it. I can get things to work, but there is not a lot of fundamental understanding of some of the infrastructure pieces. I can make it work, but if I break it, I really have a hard time fixing it.

Ward Bell said...

The dearth of training materials is the critical obstacle to CAB adoption. I know Platt's book is coming out.
Mario Szpuszta wrote a very nice white paper walk-through, Designing Smart Clients Based on CAB and SCSF.
I teach a CAB+DevForce class once per month and am gearing up to do some videos. It's a process. Soldier on; you'll be glad you did.

swythan said...

Will there be any way to download a video of this after the event?

I'm in the UK so it's at 7pm. I'd rather not cancel my evening if I don't have to. :-)



Trevor said...


Where do you see CAB in relation to Microsoft Acropolis? Will Acropolis replace CAB, will it support/enhance/replace? Should we be focusing on CAB or waiting for the CTP of Acropolis which I believe is due to CTP in the comming weeks.

Anonymous said...

OK, CAB is good and someday we'll all look back and say that we're glad we know and have CAB. The thing is, someday is not today and while all new technologies need community evangelists, I fail to see why Ideablade has made this a prerequisit to understanding how to take best advantage of DevForce. Sure, Ideablade gave of Funhouse which was full of good information and did not require a steep learning curve to study the principals of using DevForce. Sadly, Funhouse is deprecated and Cabana has taken the stage. I'm sure that there are some nuggets of gold in Cabana but the road to finding them leads through CAB. Even worse, there have not been timely releases of Cabana with small increments of functionality which would be easier to understand. And, I might as well get a jab in here for VB developers while I'm at it. Uh, where is it, oh yea, it's not there. Once again VB developers are second class citizens.
Look, I don't mean to be so negavitive; I love Devforce and I think Ideablade has made a trmendous impact on application development. I just think that there might be some other developers that could take advantage of a more fully featured Funhouse.

I want to learn CAB, but at my own pace and when there is addequate documentation. I still consider myself to be a Devforce newbie and I need more solid code examples and video's about Devforce, not CAB.

Ward Bell said...

The webcast went great. Check out the video at

I can't comment on MS future plans because of NDA. As we said in the webinar, we would not wait if we had a project to be done now. The concepts and fundamentals will be the same no matter where MS takes it.

I am sympathetic with comments from anonymous. The documentation shortcomings mentioned are real and there has to be a VB version.

The problem with keeping Funhouse alive is that it tries to do what CAB does better and (more importantly) what CAB does in a standards-based way. I would be leading people astray if I drove them toward Funhouse.

In my opinion, Funhouse is more difficult than Cabana ... but it is better documented. I'm going to fix the documentation problem over the course of this month.

I hasten to add that every DevForce technique in Funhouse is in Cabana and is (or should be) called out as such. That's not a comfort for the VB folks but I'll fill that gap soon.

Let's see if I can deliver!

Anonymous said...

Thank you for understanding the frustration behind my comments. I feel that as good stewards of superior products, we need to be open to all comments. I don't use the term 'constructive criticizm' because I consider it to be somewhat of an oxymoron. I do beleive that there is value in trying to understansd the motivation for criticizm; and you have done that.

I truly believe that Ideablade has the proper priority list. Quality product releases and good documentation go hand in hand with superior products. It's just difficult to see the forest for the trees sometimes.

Thanks again