Mobile/BlackBerry 10

For background, see Wikipedia's article on BlackBerry 10.

OS info
The BlackBerry 10 operating system is based on a QNX core, with a customized UI layer. It's a development of the OS used on the BlackBerry PlayBook tablet, which will eventually receive an update to BB10 as well.

Application environments

 * native C/C++ (Qt, OpenGL, all the fixin's)
 * HTML5 / WebWorks
 * Android-compatible runtime (requires custom packaging)
 * Adobe AIR

We'll be most interested in the HTML5/WebWorks environment, which is what our current PlayBook application uses (with some limited system integration).

WebWorks system integration
WebWorks serves basically the same role as Cordova/PhoneGap (Cordova on top of WebWorks is a very thin shim indeed!). It provides additional interfaces to fill in holes in the HTML5

RIM is pushing HTML5/WebWorks as a first-class development environment and is trying to expose as much native system integration as possible.

For instance, the new "invoke" framework (seemingly similar to Android's intents system) allows invoking parts of other applications, such as for inter-application sharing, implementing the system camera, etc. HTML5/WebWorks apps can participate both by invoking other apps, and by providing "cards" that can be invoked, similar to what Cordova+WebIntents provides us on Android.

UI style

 * UI guidelines

BB10 prefers to give as much screen real estate to the application as possible, which means a lot of stuff lives just offscreen and involves gestures to reveal.


 * swipe down from top to reveal application-wide toolbar (similar to Windows 8)
 * swipe up from bottom to get at application switching, or swipe up and to the side to reveal the notification hub
 * context-sensitive menus slide in from right or left side of screen, mostly on a button press on bottom toolbar button...

There are several JS/CSS frameworks available to provide BB10-style controls, including:
 * bbUI.js
 * jQuery Mobile w/ BB10 theme
 * Sencha Touch w/ BB10 theme

Most likely snurching a couple controls for the menu panels from bbUI.js will be the thing to do.

HTML5 support
The browser is insanely great as far as supporting things, including filesystem support, getUserMedia, media capture, WebGL, the list goes on. Pretty nice.

Development and testing

 * Ripple simulator (now a Chrome extension) - provides shims for device interfaces, device skins, and ways to invoke device events. Runs on regular desktop machines, and can simulate the WebWorks interfaces better than running in a plain browser. Can also package up the app and send it to the emulator or device.
 * Emulator VM - runs under VMWare or VMWare Fusion, on i386 rather than ARM. Provides mouse-based interaction simulating touch, which isn't perfect, but is the real OS underneath. A bit unwieldy to use.
 * device -- we have acquired a developer alpha device which can be used to run apps.

Application plans

 * start by taking the existing PlayBook app and tooling for BB10
 * grab bbUI.js and put in replacement toolbar/menus with a more native look
 * use WebWorks BlackBerry APIs to add use of sharing framework, any other suitable things