Wednesday, April 4, 2012

Choosing MV(V)C library for Cowspa

In the initial phase of this open source project cowspa developed by Cowoop, we had chosen knockout.js as important client side component.

However during the implementation team bowed to the delivery pressure and couldn't get a chance to learn, explore and use knockout or any other MVC library. Certainly a mistake! Ultimately we have to paid the price of having to maintain really complex pure jquery based bug-prone codebase. However at this stage, I decided to rectify this and started looking for different client side templating and MVC libraries. Essentially the library that binds the templates to data and can auto-update as the data changes.  I was stunned by choice of libraries/frameworks available.

There are just too many of them. Ones I liked are
Ember is perhaps the best one even according to this post. Angular is very capable and is sheer magic. And well there are many more like excellent backbone.js.

We finally narrowed down two options: Knockout and Agility.

Agility, I liked most, mainly because of it's clear syntax and looked like producing very maintainable code. So it was really tempting to go for it. But for us at this point of time knockout scored better at mainly with it's project maturity (age). Agility is at 0.1.2 at this moment and knockout 2.0.0 and hence knockout enjoys much bigger community. Also this question on stackoverflow http://stackoverflow.com/questions/9758303/how-to-bind-a-data-structure-in-agility-js .


So while we go ahead now with knockout I will certainly keep an eye on agility's development would love to find an excuse to use it.