Friday, June 15, 2007

Cabana Release Imminent

One of my fans complains "two months and no new Cabana release! When is the next drop going to occur? Can you give us a brief synopsis of any new features?"

Ouch! But he's right. We've had our heads down the last few months pounding away at the new version. We're really close to revealing it.

Here's what's coming ...

What is Cabana?

Cabana Screenshot

Cabana is a Sales Order Management reference application demonstrating how to combine CAB, Smart Client Software Factory (SCSF), and my company's application framework product called DevForce (see to learn more about DevForce and to get a copy of our free "Express" edition).

It really is a composed application with distinct modules (you can make 'em come and go) and pages built up by "Page Controllers" from nested layout and widget views.

What Happened?

Originally, I was just trying to show that DevForce and CAB are complimentary technologies. Then things got out of hand.

"Advanced" DevForce Techniques

I had another reference application called "Funhouse" built on my homebrew composite UI framework. It's purpose was to consolidate the tips and techniques I teach in my "advanced DevForce" classes - to put them in a shared context so you could see how they work together to deliver application value.

That was destined for the ash can as soon as I took CAB seriously. I can't maintain two reference applications nor recommend two competing approaches to application development. So a major goal was to port everything of interest from Funhouse over to Cabana and then kill Funhouse.

This release of Cabana completes that task.

Teach CAB

The best way to learn CAB is to try to teach it. I've probably give over 30 CAB classes in the last year, ranging from 1 hour to four days straight. Every class has sent me scrambling back to the code to rip out some horror and replace it with something that makes more sense and is easier to understand.

Definitely a work in progress, made possible only by the patience and quizzical looks of my indulgent audience; many thanks to you all.

I've given special attention to Model-View-Presenter (MVP), an architectural pattern that everyone claims to love and no one seems to understand.

I've accumulated some "rules of the road" and I think I've got a good programming model for you. It's on full display in this release and will be appearing in a white paper "coming soon."

Support alternate WinForm Control Suites

I was pushed into providing a Cabana version for the Developer Express suite (hang in there, Infragistics lovers).

Nothing puts the stress on MVP like having to support multiple UI control suites.

To keep my sanity, I have to be able to swap a DotNet view for a DevEx view without changing the view's presenter or interface or the orchestrating "Page Controller" that composes and manages the composite views.

I've had to come up with new ways to coordinate view and presenter that are UI control agnostic (see my "ViewUpdateHandler" delegate) and figure out how to swing from one view family to another (see my "ViewFactoryService").

I haven't driven the separation all of the way through - many views are still DotNet controls sitting on a DevEx layout - but the remaining work is "obvious" drudge work that I'll complete "sometime".

The acid test will be my ability to "generate" two or three UI specific releases from a single code base - in under 1/2 hour.

I've got WPF in my sights for a more challenging test of the MVP proposition.

"So what?" you say; "I only want to work with one suite."

Two responses: (1) you may be whistling a different tune when you have to offer a WPF release and (2) view swapping could help simplify intractably complex white-labeling, internationalization, and role-based presentation problems.

Jump Start CAB/DevForce Application Development

I never intended Cabana to be a framework for actual application development. That hasn't stopped a boat-load of customers from trying.

Our market place is amazingly eager to build on CAB now and they don't want to spend the months wandering in the weeds the way I have. They want to take Cabana and use it out of the box.

The customer is always right. So this release takes seriously the proposition that you should be able to

  • unzip Cabana
  • whack a few projects, files, and references
  • start adding your own modules and views
  • ship it

You should be able to take the "Cabana" out of Cabana and parade it around as your own work in just a few hours ... as long as you're willing to conform to Outlook-style navigation and the Cabana-style page paradigms.

We're working on the videos to do just that (did a 50 minute dry run the other day).

While this is something of a parlor trick, the real value is that you can learn the mechanics of a real application with the Cabana training wheels on. Once you've found your balance, you'll know how to break them off and ride on your own.

This effort has had startling (and salutary) effects on Cabana

  • Vast re-organization with an emphasis on grouping like functionality in folders.

  • Many classes were pulled "up" into the IdeaBlade.Cab projects that we have signed-up to maintain; this sharply reduces the number of classes you will have to think about as "yours" when you get started.

  • Renaming and refactoring to remove inconsistencies and clarify responsibilities. This work is never done - "ToDos" still litter the code base - but we've made huge strides.

  • Eliminated "do nothing" interfaces and presenters while flattening the inheritance hierarchies.


There has never been any documentation of Cabana. Just a PowerPoint from my class. We'll publish our first crack at it (over 50 pages). We'll have some how-to scenarios. We'll release some videos on related topics.

I've also be tasked with writing some white papers on topics like MVP and Dependency Injection. Those papers should show up in July.

New Features

Every time I think I'm going to hold the line, someone comes knocking with an urgent request. Here's what I think is new, in no particular order.

It's been so long I've kind of forgotten what was in there. Forgive me if I ballyhoo features that were there previously. The next drop is essentially a code reset anyway.
  • Every page and popup editor in its own sandbox; changes in the sandbox are temporary until explicitly saved; saved changes are propagated across the application.

  • EntityManagers and EntityManagerService wrap our PersistenceManagers and give them consistent configuration. Plug in strategies for saving and merging objects across EntityManager

  • Extended CAB "Visualizer" with EntityManager Inspector for watching changes to the business objects in each sandbox as they happen. Visualizers are cool, easy to write, and great for debugging.


  • ListConverterService delivers just-in-time ListConverters.

  • ViewFactoryService for dynamic delivery of "named views."

  • Revamped OutlookBar navigation with task links in each bar pane.

  • Integrated DevForce Verification Engine (replaces BrokenRules)

  • "ViewContexts" supercede view interfaces and other (failed) techniques for communicating between presenters and their (decoupled) page controllers. The base presenter class discovers its ViewContext in its parent WorkItem so no assignment is required. This will take some explaining but it works great so far, especially for complex Controller/Presenter configuration and eventing scenarios.

  • Nested grid support (DevEx, Infragistics)

  • Support for "Add New Row" feature in grids.

  • Data update/insert/delete auditing in the middle tier (works in 2-tier too), configurable via metadata tables in the database.

  • "Simple Searcher" feature brings an easy to use (and configure) collapsible search panel to all pages; easily extended to complex query panels.

What's Left?

Are you kidding? There's a bunch of stuff I know how to do but haven't gotten around to yet (pluggable authorization, dynamic menu & toolbar management, controlled shut down) and then there is the stuff I don't know how to do yet. When I channel the dark spirit of Donald Rumsfeld I start to worry about the "unknown unknowns".

I think I'm done with the feature creep (yeah - right). The roadmap has some different, prominent markers on it:

  • more documentation
  • clear tutorials and videos
  • better packaging and templates
  • presenter unit testing (my gravest embarassment)
  • WPF

Enjoy the ride with me!


Jeff said...

Thanks for the update. Looking forward to seeing what you've got.

jeff said...

By the way, if you haven't, you should look into the Presenter First pattern from Atomic Objects:

This could facilitate the decoupling you need to allow for sharing a presenter across various views.

Larry said...

Since "The next drop is essentially a code reset anyway" will this release be with the original CAB/SCSF or with the latest May release of SCSF?

Larry said...

Since "The next drop is essentially a code reset anyway" is it being done with the latest Smart Client Software Factory May 2007 Release or the original SCSF June 2006 Release?

dotnetjoe said...

Ward, this sounds like great stuff. I can't wait to get my hands on it.

Greg said...


This really sounds great. The keyword there is sounds. :-)

When can we expect this to be available?

Ward Bell said...

The next Cabana is coming out this week (6/25) in time for the latest DevForce.
It is built with the 2006 SCSF; you'll see that we use Visual Studio templates where SCSF uses recipes. They're not as powerful as recipes but they're much much easier to develop and deploy.
This is crucial because the SCSF recipes are not really usable. I'm not slammin' SCSF, BTW. The recipes are fine examples. But you really need to adapt them to your application. Which means that the ability to develop your own recipes is key ... and where the current brand of s/w factory falls down.
We will incorporate the May 2007 SCSF in the near future. I don't happen to use any of it in my ref apps so it hasn't been an issue for me. It would seem to be no issue for Cabana either.
I read the Presenter-First paper. It's as much about TDD as Presenter-First.
I have my own take on MVP and there are some really serious issues involving coordination among AppController/Model/View/Presenter which, I'm afraid, this paper does not begin to address. Look for my discussion of MVP coming up.
In any case, you will see in this Cabana that we reuse the presenters everywhere. In fact, most views share the same presenter and almost all presenters serve at least two views.

Bill D said...

Is this next Cabana release in the latest DevForce install? I updated to but can't find it. I also went to the downloads section for the Cabana sample and that looks like an older version.

Anonymous said...

"Cabana Release Imminent" I'm not sure if more than a month later is still regarded as Imminent. But we are still looking forward to see what great new features you've been working on.

Anonymous said...

Thanks for the new version that you made available yesterday. After spending that last 24 hours with it (yes, I read all the documentation), I feel more stupid than ever. CAB was difficult, anyway, to understand. SCSF was just another layer to mask the complexity. Now, we've got CAB, DevForce, SCSF and a whole new layout to an app (two solutions and a gob of projects)...I have not been this confused since, well...I have not ever been this confused. I am sure that this is an excellent representation of what can be done with CAB, but I just don't understand it. I'll keep trying. Maybe a light will go on soon.

Anonymous said...

[b]college software discounts, [url=]pda software downloads[/url]
[url=][/url] place to buy software 0 Mac Logic
wisconsin software discount [url=]store system software[/url] buy microsoft software in
[url=]free download adobe creative suite 4[/url] buy dreamweaver in
[url=]nero cd burner[/url] work orders software
cheap software for you [url=]acdsee pro 2 ebooks torrents[/url][/b]

Anonymous said...

[b]oem software sale, [url=]student discounts microsoft office[/url]
[url=]i sell my software[/url] free retail shop software but cheap software
corel draw graphics suite x4 coreldraw manual [url=]software purchase cost[/url] windows vista software for sale
[url=]coreldraw 11 macintosh user guide[/url] 12 Pro Retail Price
[url=]software reseller uk[/url] microsoft software products
adobe photoshop cs4 crack [url=]office computer software[/url][/b]