InterUnit-UI

for improved PC ergonomics

InterUnit-UI is a PC-UI design paradigm that asks the question "what does the user want to do right now?",
instead of "what does the developer need to build an app-UI?" -- Windows, icons, menus, and pointers or touchscreens. 
It is a "temporal" approach to UI-design.

The Design Paradigm

A user-interface is a sequence of time-sliced interface-units called InterUnits.
Each InterUnit presents an interface behaviour to service a specific user-goal,
and exists only during it's time-slice.
During its existence, it has full control over the screen and all user-input peripherals.
Different InterUnits run the UI at different times, depending on what the user wants to do at that time.
A special InterUnit called the EngagementManager interfaces with the underlying device-UI framework,
and orchestrates the loading and unloading of InterUnits during the course of an app's user-engagement.
It also maintains some memory of the user's interaction with InterUnits from the point it is loaded.

Each InterUnit can be independently optimised for ergonomic-efficiency,
and on a per-device basis.
i.e. The same InterUnit (which is associated with a specific user-function) can be implemented differently on different devices.
An InterUnit's source-code is self-contained and can be modified independent of the rest of the UI.

A developer's view of InterUnit-UI

  1. SInterUnit, IUProtocol
  2. Hex-lattice based screen-space organisation IUProtocol
  3. Hex-grid based graphics IUProtocol
  4. Source-editor IUProtocol
  5. Engagement-manager IUProtocol

Every InterUnit is implemented as an instance of a C++ struct called SInterUnit.
This struct is initialised with function-pointers for its base functionality (such as a drawing to the screen and responding to user-input events).
SinterUnit contains an extension pointer into which an InterUnit-specific protocol can be loaded.
Every InterUnit loads function-specific function-pointers into an instance of SInterUnit,
and defines and implements an InterUnit-Protocol (IUProtocol).
An IUProtocol contains "user-intent handlers" specific to the behaviour of that InterUnit. 
An InterUnit's UI protocol is defined by a set of user-intents that it can service.
  
The SDK provides some base IUProtocols for:
1) a space-organising hex-lattice
2) a fine-grained graphics hex-grid
3) a source-editor for editing the source-code of an InterUnit and
4) an engagement-manager that loads and unloads InterUnits,
interfaces with a device-specific UI-framework,
and provides an entry-point for a device specific app.

An IUProtocol can be derived from 1) or 2) for lattice-based screen-layout or grid-based fine-grained graphics
and the source-editor can be used as a template to produce a formatted-document editor (such as .html, .css, .js or SVG documents). 

Easy to optimize the UI for use-ability

An InterUnit is associated with a specific user-function and differs from other InterUnits based on this association.
Hence, each InterUnit can be optimised for use-ability independently and on a per-device basis.
This makes the development of any InterUnit a lot simpler since the initial code can be refined over time.

Guidelines for improving app-ergonomics

InterUnit-UI suggests some guidelines for improving the ergonomic-efficiency of PC-apps.

  1. Doing away with the Menubar at the top, and the taskbar or status bar at the bottom of the screen, to reduce visual screen-clutter.
  2. Using a visual layout technique generally focused around the center of the screen for the presentation of information to the user.
  3. Minimising the need to switch between mouse and keyboard operation in the course of any user-input sequence.
  4. Eliminating use of the mouse for fine-grained screen-space selection and reducing the usage of mouse-drag operations.
  5. Eliminating the use of Windows.
    Operations such as resizing and aligning of Windows, and, in general, (multiple) Window-layout, should not be needed in the usage of the UI.
  6. Always providing a navigational reference.
    On a keyboard-input based device, the ESCAPE key should always be used
    to return to the previous operational context.
    On a touchscreen based device, a visual icon should always be present,
    away from the center of the screen to provide a way of returning to the previous operational context.

InterUnit-UI Licensing (planned)

MendelIPErgonomix

We plan to license Ergonomix to developers and the InterUnit-UI SDK to PC OEMs.

Non-commercial Use

Ergonomix will be made available free for non-commercial use.

Individual Developer Licenses

An individual developer may license Ergonomix for $50 / year (TBD)

Team Licences

A small development team (<10 people) may also license Ergonomix for $500 (TBD).
A single team license may be used by all members of a team.
Larger organisations and universities can license Ergonomix at negotiated annual rates.

OEM Licences

OEMs may license the InterUnit-UI SDK to develop UI front-ends for any PC or mobile device (e.g. Raspberry-Pi)
These licenses are negotiated and on a per seat basis.