User:GrimbleWiki/BONDI widgets

BONDI (named after the Australian beach) is a web OS aimed at mobile devices. OMTP launched the BONDI initiative, which defined new interfaces (Javascript APIs) and a security framework (based on XACML policy description) to enable the access to mobile phone functionality (Application Invocation, Application Settings, Camera, Communications Log, Gallery, Location, Messaging, Persistent Data, Personal Information, Phone Status, User Interaction) from browser and widget engine in a secure way.

BONDI supports widget based applications as well as web based applications.

History
BONDI was initiated in 2008 by OMTP. The first BONDI widget, based on a preliminary version of the 1.0 specification was shown at MWC 2009 in February 2009.

Version 1.0 of the API specification released on June, 2nd, 2009 with a maintainance release (1.01) following on July, 30th, 2009 .

Version 1.1 of the API was released as stable on February, 11th, 2010.

In February 2010, at MWC 2010 the Samsung Wave was released as the first mobile phone to contain the BONDI as a built-in API as part of the bada platform.

API
As of release 1.1, the BONDI API defines the following interfaces:


 * Application Launcher - Access to the installed applications. It also provides access to the native applications such as messaging, telephony and newly installed applications.
 * Messaging - Send and manage text-, binary and multimedia-messages via Email, SMS, and MMS.
 * User Interaction - To allow widgets to access functions that integrate with the widget runtime user interface.
 * File System - Access to the filesystem of a device.
 * Gallery - Access to media galleries located on the phone.
 * Device Status - Access to status information, such as battery level or display orientation.
 * Application Configuration - Access to application specific static storage for preference and other application settings.
 * Geolocation - Allows the detection of the user's location by abstracting from a range of location methods.
 * Camera - Access to local camera devices to allow capturing video and photo.
 * Telephony - Access to information on recent calls (missed, received, and initiated).
 * PIM - Personal Information Management provides access to contacts, calendars and tasks APIs. See below.
 * Contact - Access to contacts available in the address books.
 * Calendar - Access to device calendars.
 * Task - Access to phone resident task management functions

The upcoming 1.5 API will add or change the following APIs:


 * APDU - Allows the communication between web application and a smart card by using the Application Protocol Data Units (APDUs).
 * Bluetooth - Access to the bluetooth functionality.
 * Crypto - Provides cryptographic functions like hashing, signature verification, encrypting and decrypting.
 * DLNA - Enables discovery of the DLNA devices in the local network and control of the devices.
 * Server Push - Provides functionality of OMA Push delivery to Web Applications running in the widget context.
 * Sensor - Access to device sensors, such as accelerometer, altimeter, ambient temperature or tilt sensors.
 * Telephony - Extension of existing API to enable the handling of incoming and outgoing phone calls.

Policies
To safeguard users from malicious web applications, BONDI defines a policy layer between the API and the device. Policies can be set on a widget provider level (for signed widgets) on a widget level or on an API call-by-call level for web pages.

Every widget carries a manifest declaring the APIs to be used by that widget, allowing users to install (or deny installation) based on the function the widget intends to use.