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.
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.
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).
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.
InterUnit-UI suggests some guidelines for improving the ergonomic-efficiency of PC-apps.
We plan to license Ergonomix to developers and the InterUnit-UI SDK to PC OEMs.
Ergonomix will be made available free for non-commercial use.
An individual developer may license Ergonomix for $50 / year (TBD)
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.
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.