Friday, January 3, 2014

Hooray for Durandal (nextGen)

Stop what you’re doing and learn right now about the next generation of Durandal. Watch the video (just 25 minutes) to see how intuitive and easy it is to build a nextGen Durandal application. Then push the “Back This Project” button and help fund it.

Full Disclosure: I have no connection with this project. I just like it a lot. And I put my money where my mouth is.

At IdeaBlade we’ve been big fans of the Durandal presentation framework for building Single Page Applications (SPAs) in HTML and JavaScript. Durandal has served us (and our clients) well for over two years and today’s Durandal deserves its place among the top SPA frameworks. There are lots of ways to learn about it, none better than John Papa’s Pluralsight course, “Single Page Apps JumpStart”.

Durandal’s author is Rob Eisenberg, known to many of you as the man behind the Caliburn.Micro. Rob’s been at this game a long time. I think he must have built and re-built three or four of these presentation frameworks by now, learning and improving with each iteration. He’s didn’t just wake up yesterday and decide he could write a better framework than everyone else. He’s been writing better frameworks than almost everyone else.

I took him very seriously (and got seriously excited) when he told me about the next generation of Durandal for ECMAScript 6 browsers that are just around the corner. I’ve been tracking his new designs and his progress for several months. This next version of Durandal is going to be great.

What’s so great about it? What’s distinctive about it? Rob has his inventory of laudable features (and its impressive). Here are some of the aspects of nextGen Durandal that I love … and that have no equal among alternative frameworks:

  • Convention over configuration – I hate writing and maintaining “switch board” code to connect FooViewModel to FooView and FooRoute etc. I want to say “Foo” and be done with it … until and unless I have a compelling reason to break convention.
  • Customizable conventions – Rob makes good choices but I’m free to define my own.
  • Page life-cycle – Durandal has baked in understanding of the birth and death of “pages” so I don’t have to make up my own hacks to ensure that new pages are initialized on creation and cleaned up on destruction.
  • Asynchrony throughout – Need to wait for the user to confirm or cancel before moving off the page? That’s easy in Durandal because asynchrony is plumbed through the page life-cycle and everywhere else. Dynamically load optional modules on-demand? Easy.
  • Diagnostics – With debug mode turned on the console tells me exactly what choices Durandal is making for me as they happen. I can tap into that logging pipeline with my own diagnostics.
  • Write less, do more – You all know what I mean. We all want to write less code. That’s the motherhood and apple pie that every framework promises. They usually deliver something else. Check out the nextGen Durandal sample video and tell me what other technology is that clear and concise.

Yes, there are other presentation frameworks out there and I like one or two of them as well. Why get involved with the Durandal project, even if it is great? Shouldn’t we just back “the winner”?

I don’t think we can afford to just sit here and let any one of the frameworks dominate. That’s not good for the web. It wasn’t good when IE6 owned the browser world even if it was the best browser at the time. It won’t be good for the web if today’s favorite owns this presentation framework space either. Frankly, no one has nailed it yet. They all make me itch. It’s too early to declare a winner.

We need to encourage real competition … by which I mean truly well done, distinctive approaches to our common application building problems. Durandal is a worthy competitor. It fosters ideas and techniques that must find their way into our application development practices. Durandal deserves your support. Go give it some love.


Jeremy Noble said...

It looks great - I have contributed on KickStarter. I expect you'll comment on this in time, but it immediately makes me think, given that knockout is no longer needed in NextGen, what are the implications for the Breeze/Durandal combination?

Ward Bell said...

The implications are ... that Breeze/Durandal will work just fine w/o KO in the mix. Given DvNext's use of ES6 observer stuff we may have to make an adjustment but, from what I see, it isn't much different than what we do to work with Angular (namely ... nothing). I look forward to working with Rob to iron out wrinkles. It's all good!

Jeremy Noble said...

Great to hear - hope that we still see that nextgen approach regardless of the a kickstarter outcome!