Impressed by the Invocation Framework

Coming out of BlackBerry Jam Americas, the thing that has impressed me most has been the invocation framework. While the feature had been announced earlier, it had not actually been available to developers until last week’s release of and this also seems to be the first time that details of the implementation were widely seen.

(For more on the invocation framework see Kevin Cheung’s article at CrackBerry and Shadid Haque’s presentation at BlackBerry Jam in San Jose.)

First some history of the feature. BlackBerry added the net.rim.blackberry.api.invoke.Invoke class to their classic OS with the release of version 4.0 (years before I started doing BlackBerry development) which would allow an app to programmatically start another app along with some command line arguments. While this was powerful, everything you did felt a bit like a hack, and it required you to know exactly which app you wanted to launch, and would only do so in a separate app (perhaps messing up what this other app was already doing). Android improved on this slightly with their Intents framework that allowed apps to register as being able to handle given types so that the calling application doesn’t technically need to know all of the details about the app that is being called.

BlackBerry 10 keeps the idea of being able to register for types, but adds the concept of cards, so that new applications can be invoked without appearing to be new applications. Instead the invoked app just shows up as a ‘card’ which to the user appears to be nothing more than a new page in the same app (even though it is being generated by a different app). This keeps everything on the same stack (what the developers at RIM would refer to as ‘flow’). This results in a less fractured user experience, ensures that the user finishes their work with the card before returning to your app, and allows for the app to be launched in parallel with the app that is generating the card (and with other cards generated by that same app). Cards can also me nested, which would result in a very confusing experience, if not for the fact that it appears to the user, as if it is all part of a single application.

This is an innovation that will be difficult to show off to consumers (as its main feature is that it works while staying out of the way), but it is very exciting to developers, and it will make BlackBerry 10, just that much better.