Thursday, May 02, 2013

knockout.composite v0.2 – Introducing Tribe

*UPDATE* Tribe is here! Check out http://tribejs.com/ for guides and API reference.

We’d love to spend time giving you the juice on the freakin’ amazing new features we’ve been working on, but for now, you’ll have to make do with just a glimpse…

What is Tribe?

Tribe is a platform for building rich, highly interactive applications targeting desktop and mobile devices. It is comprised of a number of components:

  • Composite – The composite JavaScript framework you know and love, completely rewritten and supercharged with new features.
  • MessageHub – A SignalR based message gateway that seamlessly broadcasts messages to any device and publishes commands to internal services via message buses like NServiceBus.
  • Mobile – A set of skinnable panes and utilities for creating high performance, professional quality mobile device apps in minutes
  • Desktop – A set of reusable panes for common requirements such as dialog, grid, graph, tab panel, expander and more.
  • PubSub – A powerful, lightweight publish / subscribe engine with built-in lifetime management.

 

Composite – Concepts Crystallised

Tribe.Composite takes the concepts explored in knockout.composite, formalises the best concepts and adds new, much needed features

  • Memory management – memory management is fully automated. Subscribe to messages or document events in your models, when the pane is removed from the DOM, everything is cleaned up for you without needing a line of code.
  • Extensible rendering pipeline – each step of the rendering process is now expressed in a separate, loosely coupled unit. Panes have an extensible, formally defined life cycle from initial resource loading through to disposal.
  • Extensible resource loading strategies – when and how panes and other resources are loaded is now completely customisable. Out of the box, you can load panes completely on demand, completely preloaded or by component. We’ll even provide a mechanism for loading sets of panes as AMD components.
  • Hierarchical page structure – Composite tracks the creation and destruction of panes and maintains a hierarchy of “nodes"
  • Transitions – transitions are now a first class citizen of Composite. Transition any node, pane or element in or out using powerful, hardware accelerated CSS transitions.
  • Sagas – we’re working on creating a neat abstraction over user processes, vaguely modelled around the concept of message bus “sagas”. We’re still working on the best abstraction, but it’s looking sweet with simple syntax and semantics, and automatic state persistence.
  • Much improved everything else – API, testing, testability, extensibility. Everything is 100% better than v0.1!

 

MessageHub – Seamless, Secure Message Distribution

This is the really exciting stuff. MessageHub is a gateway built on Microsoft’s SignalR technology, giving you seamless, scalable and secure channel based communications between any connected device.

MessageHub also allows you to use simple conventions to map client messages to internal message classes and seamlessly authorise and send messages to internal services. We’ll give you an NServiceBus adapter out of the box, and building adapters for other buses is trivial.

MessageHub has built in message record and replay semantics, with both client and server side persistence. Let’s talk later about powerful event sourcing with built in client and server side fault tolerance.

 

End to End, Integrated Mobile and Desktop Platform

Our aim is to make building integrated systems with real time information sharing easy – not just apps. There are a bazillion frameworks out there for building “apps”, but this is just one piece of the puzzle.

Mobile devices are changing everything. The explosion of cheap devices has opened a world of opportunity for capturing data like never before, but the mobile device form factor is not appropriate for every task. Does anyone seriously ever use a word processor on their mobile phone?

The HTML / JS / CSS technology stack has evolved to the point where “traditional” desktop apps built with proprietary technologies offer very few advantages. There is little you can do with a desktop app that you can’t do with a web app. Combine this with the ability to maintain a single code base that targets browsers, iOS, Android and virtually any other device, it’s unbeatable.

Hybrid mobile apps have a bit of a bad reputation on the performance front, mostly thanks to Facebook’s botched effort at a hybrid app. We are going to bring you a native looking app that is virtually indistinguishable from a native app, even on old hardware. There are already plenty of examples out there, like Touralot (by knockout’s very own Steve Sanderson). Seriously, learning or acquiring skills in Objective C, Java, as well as the HTML/JS/CSS stack is a massive and entirely unnecessary investment.

Tribe is built from the ground up with scalability and performance in mind. 100 users or 1,000,000 users with consistently responsive user experience. We’ll give you some guidance on choosing server side technologies that will support this sort of scale.

But I Ramble…

Less talk, more create.

Details, samples, documentation, all coming soon. We can’t wait to show you.

If you haven’t seen knockout.composite v0.1, check it out here.