Saturday, September 15, 2012

knockout.composite: Parting Thoughts and Future Directions

*UPDATE* Tribe is here! Check out for guides and API reference.

This is the final part of a multi-part series. Check out some of the earlier posts if you haven’t already.

Part 1: Introducing knockout.composite
Part 2: The Basics
Part 3: Getting Around
Part 4: Putting it All Together
Part 5: Unit Testing: Model Citizens 
Part 6: Integration Testing: Playing Nicely Together
Part 7: Functional Testing: Automated UI Tests, Anywhere, Any Time
Part 8: Pack Your App and Make it Fly
Part 9: Parting Thoughts and Future Directions


Finally! We’re at the end of the series! Some parting thoughts before we call it a day…

First and foremost, knockout.composite is a version 0.1 product. It is being used in a production application with great success and stability, but it is not without it’s shortcomings.

The current version is a gradually evolved product and the need for a significant rewrite increases with each added feature. Some of the separate modules are quite tightly coupled; this could be significantly reduced with a better design. Subtle temporal couplings in panes can also be quite difficult to debug.

All this aside, we think even the current version knockout.composite offers some brilliant features and makes building high performance single page web apps easier than ever before. The next version will offer improvements in every area with increased flexibility and extensibility. If you’re interested in contributing, send me a tweet and we’ll take it from there.

*UPDATE*: v0.2 is coming, and it’s part of a much bigger vision we want you to see – get a glimpse here.

What’s Coming?

Devices, Devices, Devices

As mentioned in part 1, we think knockout.composite has great potential within the hybrid web / native mobile application space. Our focus over the next few months is to fine tune the whole experience for mobile devices and develop a set of themes for each operating system. Think single, highly testable codebase for every device, with the bonus of decent performance.


The composite application pattern is ideal for service oriented architectures. A autonomous business service can easily “own” application components and have them stitched in to applications simply and easily. Seamlessly integrating client and server side message buses makes developing client applications for message based architectures a breeze.

We’ll be releasing libraries to enable this seamless integration between knockout.composite and a range of messaging platforms, like NServiceBus, Azure Service Bus, etc.

Control Libraries

We’ve already got a stack of reusable controls, we intend to release these under an open source license for use in your application. CSS drives the look and feel, so customising each is straightforward.

Amongst Other Things…

Like state machines for navigation, extensible support for validation libraries, better memory management and debugging support, more out of the box transitions, more flexibility and extensibility. The list goes on.

Stay Tuned!

In the meantime, drop me a line and let me know what you think, get involved and help make the web a better place to develop.


Blogger Paul said...

This was a sweet post series and I think you've built something very cool. Can't wait to see where it goes next :)

2:03 PM  
Blogger Dale Anderson said...

Thanks, man! That means a lot!

4:20 PM  
Blogger davey said...

Hey mate, long time! I was awake at two in the morning last night (baby boy) and was thikning about the old times. :D Funny that we seem to have taken the same path...

1:42 AM  
Blogger davey said...

It's not 1.42AM here by the way! I live in London now.

1:42 AM  
Blogger Michael Mawuena Mortoo said...

hey -- Dave

A million big up's to you..
knockout.Composite is awesome..
like the way you do testing with QUnit and Sinon.

Thanks for sharing..

3:52 AM  
Blogger Dale Anderson said...

Thanks Mike! More cool stuff on the way!

9:45 AM  
Blogger Ben said...

Great article and amazing framework.... what type of browser compatability does it have so far? I noticed example displays a friendly "no support for this browser version" when I view it with IE<9.

8:46 AM  
Blogger Dale Anderson said...

Thanks Ben!

Good question. It works in IE<9, but there are significant memory leak issues in these browsers, performance tends to drop off fairly rapidly.

There is a workaround for this that I've tested reasonably successfully. There is an option you can set (ko.composite.options.navigateMode = 'refresh') that causes the page to refresh when navigating. It's less than ideal, but it seems to work for most scenarios.

11:50 AM  
Blogger Michael Mawuena Mortoo said...

Happy New Year Dale...

Looking forward to knockout.composite vNext

4:31 AM  
Blogger Dale Anderson said...

The next evolution is here! Check out

10:51 PM  

Post a Comment

Note: Only a member of this blog may post a comment.

<< Home