This is a design for a portable app package. The default implementation is based on existing widely distributed apps, to avoid folks having to trust yet another executable. The FUEL definitions rely on other existing definitions and standards (e.g. HTML 5.1).
The core principles behind FUEL are:
- It encapsulates a complete, functional app
- It is platform agnostic
- It uses the web platform for it's user interface (HTML, CSS, Javascript)
Although this package could be extended to support non-portable (e.g. binary) executables that is not a goal.
(TBD) FUEL is an acronym for Friendly Universal Executable Library.
A FUEL compliant engine implementation will include:
- Javascript engine (e.g. node)
- user interface engine (e.g. browser)
- package runner (e.g. fuel-engine/fuel.js)
These can be integrated into a single executable or exist separately.
These behaviors are required for a compliant FUEL implementation.
- Support package extraction as described in FUEL Package Layout
- Support package verification as described in FUEL Package Signature
- Support all manifest fields described in FUEL Package Manifest
- Support the service interface described in FUEL Service Interface
- Support the application interface described in FUEL Application Interface
- Support the order of operations described in FUEL Operation
An engine might also support the following:
- Engine configuration
- Installing packages
- Running installed packages
- I am attempting to follow the Google conventions for Javascript