Right now Backbone.js is probably the most popular as well as simplest of the modern javascript frameworks. As its name describes, it main goal is to give a nice MVC structure to your javascript code. Backbones goal is to clean up your code by organizing all your data and event handlers into javascript objects. This way, events can be triggered whenever your data model changes thereby avoiding a lot of messy JQuery selectors and event bindings. It also has nice features for accessing data through RESTful APIs and URL routing. Other than that, Backbone tries to leave as much as possible up to the developer.

Features

-MVC style architecture for organizing your code
-Models and collections which can be persisted through a RESTful API
-Views which can automatically update by listening for changes in your model
-An optional routing system to define states of your app for single page applications

Strength of the Project and Community

Backbone.js has been in development since 2010 and in March 2013 just released version 1.0. It has one of the largest community of all the Javascript frameworks with rough indicators of 13,623 stars on GitHub, and 8,209 questions on stack-overflow. Many well known projects are using Backbone in their apps like DocumentCloud, LinkedIn Mobile, Walmart Mobile, Groupon, and CodeSchool just to name a few.

Ease of Learning

On one hand, backbone is a relatively simple library. If you go to their website, you will find a link to the annotated source code, which shouldn’t be hard for the average developer to read and understand. On the other hand, backbone has several concepts (e.i. model, collection, view and router), and the documentation is not as extensive as knockout or angular for example. Also, inexperienced programmers could quickly get into trouble if they are not aware of proper conventions when using backbone.js. Backbone also relies heavily on underscore.js, so it is necessary to learn underscore first or pick it up along the way. From our own experience and hearing other stories, it takes longer to get up and running with backbone in comparison to knockout. On the other hand, even though the concepts in backbone may be difficult to grasp at first, once you get it you will not need so much time to discover the rest of its functionality.

Compatibility and Extensibility

Backbone like knockout does not force you to do anything in a particular way. It is great for those who prefer to make their own decisions on the lower level. It basically just gives you a nice MVC type structure for your javascript. Yes, it offers solutions for routing and data-access, but if you prefer to do those things differently, it is up to you. It can work in a small part of your application as well as the entire application.

Testing and Debugging

There seem to be some plugins written to help debugging, but we have not used them so we cannot comment on how useful they are. We have seen that people using Jasmine to run unit tests in backbone. In general, we find that backbone can be relatively difficult at times to debug.

Pros

-Relatively mature, proven framework with a strong community behind it
-Many extensions and scaffolding tools available
-Flexible, works fine for a new project or improving an existing one

Cons

-Lacks data-binding
-Requires a large amount of boiler-plate code
-Could be dangerous if programmers do not follow proper conventions

Link to Part I
Link to Part II

Link to Part IV