title: What are the real-world strengths and weaknesses of the many frameworks based on backbone.js?
body: <p>Hope that someone can share their experience with some of the latest emerging backbone.js variants out there.
  I have some good experience with backbone/underscore/require in several projects and I will like to take the next step towards more advanced solutions for complex application structure.</p>
  
  <p>I know the following frameworks are available:</p>
  
  <ul>
  <li><a href="https://github.com/derickbailey/backbone.marionette" rel="nofollow noreferrer">Marionette</a></li>
  <li><a href="http://modeln.github.com/backbone.geppetto/#geppetto-context/job-1-event-bus" rel="nofollow noreferrer">Geppetto (based on Marionette)</a></li>
  <li><a href="https://github.com/chaplinjs/chaplin" rel="nofollow noreferrer">Chaplin</a>, <a href="https://github.com/pabera/chaplin-boilerplate" rel="nofollow noreferrer">Chaplin - chaplin-boilerplate</a></li>
  <li><a href="https://github.com/hautelook/vertebrae" rel="nofollow noreferrer">Vertebrae</a></li>
  <li><a href="https://github.com/tbranyen/backbone.layoutmanager" rel="nofollow noreferrer">LayoutManager</a></li>
  <li><a href="http://walmartlabs.github.com/thorax/" rel="nofollow noreferrer">Thorax</a></li>
  <li><a href="https://github.com/addyosmani/aura" rel="nofollow noreferrer">Aura</a></li>
  <li><a href="https://github.com/datapimp/luca" rel="nofollow noreferrer">Luca</a></li>
  <li><a href="http://fahad19.github.com/singool/" rel="nofollow noreferrer">Singool</a></li>
  <li><a href="https://github.com/pwalczyszyn/backstack" rel="nofollow noreferrer">backstack</a></li>
  <li><a href="http://perka.github.com/backbone-ui/?utm_source=javascriptweekly&amp;utm_medium=email" rel="nofollow noreferrer">Backbone UI</a></li>
  <li><p><a href="https://github.com/davps/backbone.hulk" rel="nofollow noreferrer">hulk</a></p></li>
  <li><p><a href="http://boilerplatejs.org/" rel="nofollow noreferrer">BTW - excellent starting point for big scale project</a></p></li>
  </ul>
  
  <p>And probably I missed a few.</p>
  
  <p>There is a short introduction about the differences here: </p>
  
  <ul>
  <li><a href="https://speakerdeck.com/u/molily/p/application-frameworks-on-top-of-backbonejs-talk-at-appsberlinjs" rel="nofollow noreferrer">speakerdeck talk link</a></li>
  </ul>
  
  <p>but it's very general. I was wondering if someone can share their experience with real life applications using these frameworks.</p>
  
  <p>What is the benefit of choosing one over the other? When will marionette be a better solution over chaplin, or why is vetebrae better for certain applications, for example.</p>
  
  <p>Sure, the obvious answer will be "<strong>use whats best for your needs</strong>", but I lack of the experience with these frameworks to know their strength/purpose/advantages or preferred scenarios.</p>
  
  <p>Thanks!</p>
  
  <p><strong>Edit 1:</strong>
  found this post:
  <a href="https://stackoverflow.com/questions/10510050/backbone-marionette-vs-backbone-boilerplate">Backbone.Marionette vs Backbone-Boilerplate</a></p>
  
  <p><strong>Edit 2:</strong>
  <strong>Answer by Mathias schafer (Chaplin) by mail:</strong></p>
  
  <p>In short, the current structure is close to version 1.0 since it’s already used in production. We’re not planning to add big new feature or breaking API changes until 1.0.</p>
  
  <p>Marionette is for sure the most comprehensive and stable library out there. It addresses several aspects of JS app development with Backbone. For example, it has a strong view layer which Backbone itself leaves completely void. Of course, you will find that some of the aspects won’t meet your demands and you might feel the need to set up a structure around Marionette.</p>
  
  <p>In contrast, Chaplin focusses on a rather small, but very important aspect of Backbone apps, namely the overall app structure and module lifecycle. In this regard Chaplin is very opionated and is more like a framework than a library (like in “your code calls a library, a framework calls your code”). Chaplin provides some central classes which sit above individual application modules and control the overall app state. This gives your app a conventional structure like Ruby on Rails does it for example.</p>
  
  <p>In Chaplin, you declare some routes which map to controllers, and Chaplin starts the controller once the route match. It also takes care of the disposal of old controllers, and the showing and hiding of main views, which a controller is supposed to create. This is the basic idea, but Chaplin takes care of the ugly details to make this run smoothly.</p>
  
  <p>There are two principals which come along with this structure:
  - Modularization, decoupling and sandboxing
  - Cross-module communication using Publish/Subscribe and Mediator(s)</p>
  
  <p>Of course these patterns are not new in the software development world, and Chaplin is not the only library which applies them to Backbone.js apps.</p>
  
  <p>Chaplin also provides enhancements for the View layer, for example a highly sophisticated CollectionView, but in total not as much as Marionette with its Regions and Layouts. But it’s relatively easy to write such meta classes using the means Chaplin Views provide.</p>