Channels ▼


Autonomous User Interfaces for Mobile Apps

Robi Karp is CEO of Fluffy Spider Technologies.

The Autonomous User Interface (AUI) is a revolutionary approach to UI design and implementation that goes beyond the custom themes, icon sets, and color schemes common on many mobile phones and other intelligent devices. Through scriptable, autonomous UI coding, AUI lets OEMs, developers, integrators, and other ecosystem participants completely control and customize the look-and-feel of the end-user experience.

With traditional design methodologies, application code "owns" the particulars of UI implementation, determining the type, orientation, placement, and other attributes of objects on the display (buttons, widgets, etc.), the flow of their use and the callback code that powers those elements. The attributes of a UI design are thereby set in the original design and are only minimally mutable downstream, by channel partners, third-parties and end-users. Some UI and application frameworks support theming -- customization of color schemes, menu text styles, window frames, widget sets, etc. However, the fundamental structure and flow of an application UI remains set in stone -- a closed box as imagined by the original design team.

On the other hand, the concept of an Autonomous User Interface lets application developers specify generic or abstract presentation of controls, widgets and even content, giving downstream developers the freedom to brand and customize. Benefits to this approach include:

  • Letting developers bind custom functionality to individual UI elements with run-time scripting
  • Supporting addition and/or removal any item from an application UI, including images, videos, and widgets, without changing any application code (i.e., with binary program images)
  • Enabling existing applications to integrate reaction with new device events and capabilities, like shaking and orientation (accelerometer), location and movement (GPS), and definable data and network events (calendars, stock quotes, sports scores, wireless traffic, etc.)
  • Letting integrators, operators and end users easily add new UI personalities at run-time without changing shrink-wrap application code
  • Supporting transformation of UI elements, including buttons, controls, images and videos with 2D/3D graphics effects, to scale, reflect, rotate, alpha blend, shadow, etc. with minimum pre-load or post-load software development effort

Autonomous UI Architecture

Breaking out application and presentation code doesn't require radical rethinking of the core application design. Application code can still solicit input and generate output. It is still up to the application design team to determine how much control resides inside the application itself vs. the amount exposed to subsequent modification. But decoupling does require specific support from the underlying graphical and multimedia framework.

Key enablers of an autonomous UI include:

  • Providing safe binding between underlying graphical system APIs and an external, open programming environment
  • Exposing inventories of (public) application objects that implement UI functions
  • Supporting a protocol between presentation code and the application for information exchange

It is also important to provide an open high-level API for developer use. The API is of course the main point of entry for developers, and also simplifies translation of information between the language bindings using the protocol. At Fluffy Spider Technologies, we chose C for building FancyPants (our high-performance multimedia and graphics platform for embedded applications) and for underlying libraries. For enabling Autonomous UI code, we bind to the Lua scripting language at a high level, taking advantage of Lua features and rapid prototyping capabilities.

Lua Scripting Language


Related Reading

More Insights

Currently we allow the following HTML tags in comments:

Single tags


<br> Defines a single line break

<hr> Defines a horizontal line

Matching tags


<a> Defines an anchor

<b> Defines bold text

<big> Defines big text

<blockquote> Defines a long quotation

<caption> Defines a table caption

<cite> Defines a citation

<code> Defines computer code text

<em> Defines emphasized text

<fieldset> Defines a border around elements in a form

<h1> This is heading 1

<h2> This is heading 2

<h3> This is heading 3

<h4> This is heading 4

<h5> This is heading 5

<h6> This is heading 6

<i> Defines italic text

<p> Defines a paragraph

<pre> Defines preformatted text

<q> Defines a short quotation

<samp> Defines sample computer code text

<small> Defines small text

<span> Defines a section in a document

<s> Defines strikethrough text

<strike> Defines strikethrough text

<strong> Defines strong text

<sub> Defines subscripted text

<sup> Defines superscripted text

<u> Defines underlined text

