Backbone.js gives structure to web applications by providing models with key-value binding and custom events, collections with a rich API of enumerable functions, views with declarative event handling, and connects it all to your existing API over a RESTful JSON interface.
Backbone works with jQuery or Moustache or Handlebars or Twig -- any DOM manipulation library -- to create the Views. Rather than also manage Models in jQuery, which it wasn't designed for, Backbone slides into this part of the Stack and gives us more formality in what will be evermore app-like UIs in Drupal. We should encourage folks to move towards an MVC model from core out.
The Spark team has several projects on deck for Drupal 8 core inclusion that could leverage Backbone and Underscore.
I could also see Backbone being used to build an advanced block-to-region assignment UI.
The reason I'd like to see these two libraries in core (Backbone and Underscore) is the same that we have jQuery in core. It's standardizes the community on a library so that various modules aren't including their own frameworks, leading to competing frameworks in a site buildout. Having a common MVC framework will help standardize the application layer across these projects.
Additionally, in, there was broad community support for using Create.js rather than custom code for parts of the Edit module, but that integrating Edit module with Create.js would likely only be able to happen post feature freeze if both Edit module and Create.js land into core separately before feature freeze. Create.js has a dependency on Backbone, so before spending time working on build issues ( ) necessary to make it ready for Drupal, it would be helpful to first have Backbone approved as a core library.
Finally, as we've done when committing other major libraries to core during feature thaw, doing so is a signal that the library is approved for core and facilitates keeping reviews for the library's use case focused on the use case and not on the library. If no use case lands before feature freeze, the library can be removed.
|PASSED: [[SimpleTest]]: [MySQL] 41,992 pass(es).|
|PASSED: [[SimpleTest]]: [MySQL] 41,976 pass(es).|
|PASSED: [[SimpleTest]]: [MySQL] 41,988 pass(es).|