Skip to content

Architecture

Benjamin Klaus edited this page Aug 30, 2018 · 27 revisions

Like described in Master Plan AsTeRICS Ergo the plan for AsTeRICS-Ergo is to be able to use:

  • different functionalities ("Apps")
    e.g. "Environmental Control" or "Augmentative and Alternative Communication (AAC)"
  • with different input modalities
    e.g. mouse, buttons or speech

This page describes the idea for a technical architecture to achieve this.

Webapps

With issue https://github.com/asterics/AsTeRICS/issues/163 of the AsTeRICS-Repo there will be a new path/folder "webapps" for the AsTeRICS webserver. It will contain all "Apps" where each app has one specific functionality. Already existing Apps are:

  • Current "AsTeRICS-Ergo" (Environmental Control)
  • WebACS -> Web version of the AsTeRICS configuration suite

Apps will be divided in three categories:

  • Management Apps
    help to manage, list, open, install or remove other apps
  • Functional Apps
    will realize a specific functionality like environmental control or AAC
  • Input Apps
    can be used to configure special input modalities like camera mouse or FABI buttons

Every app will have an own folder in "webapps", have an own "index.html" and will be independent from the other apps. So it will be possible that different apps are written in different web-technologies (Angular, React, pure JS+HTML, ...)

Management Apps

An management apps will have the prefix "AsTeRICS" in the name in order to differenciate them from other apps. In the first version there will be two basic management Apps:

  • AsTeRICS Start
    lists all currently installed apps and provides a possibility to start them. May looks similar to the current start-page of AsTeRICS-Ergo (see: https://asterics.github.io/AsTeRICS-Ergo/mock.html#!/home )
  • AsTeRICS Appstore
    allows to install new apps or delete existing ones. In the first version installing a new app will be possible by providing and locating a .zip archive containing the needed files, in later version these package could come from a webserver on the internet.

Functional Apps

Functional apps can implement any useful functionality like environmental control or AAC. Characteristics of a functional app:

  • has an own AsTeRICS model in the background (if needed). E.g. the current environmental control has the model envControl.acs which contains instances for IrTrans/FS20. The own model/models are included in the *.zip package.
  • communication with ARE REST-interface to start/stop models and send/receive data to/from model components
  • saves own configuration data (e.g. learned commands in envControl)
  • there is one ARE instance in the background, where one model of a functional app runs at a time

Input Apps

Input Apps are used to configure an alternative input modality and/or run software that is needed for it. Characteristics:

  • has an own AsTeRICS model in the background (if needed). this model can convert actions of the input device to e.g. to keyboard-actions or configure hardware (e.g. flipMouse).
  • also communication with ARE REST-interface and own configuration data
  • have an own ARE instance in the background where one input-app runs at a time. So there can be a maximum of two ARE instances running, one for a functional app and one for an input app.
  • data/content of input apps is stored in the same ARE-folder like functional apps. So the only difference is that models of input apps run on a second ARE runtime.

App development and distribution

In the future AsTeRICS-Ergo becomes the "Web-Version" of AsTeRICS. So there will be the existing AsTeRICS release containing ARE and ACS and the AsTeRICS-Ergo release, which contains ARE and webapps. So AsTeRICS-Ergo in the future:

  • will be distributed with an own installer, like now.
  • will contain pre-installed apps that are suitable for most users (e.g. environmental control, AAC). Additional apps like WebACS can be installed manually. Alternatively on the first run the user will be asked which apps to activate (to show in "AsTeRICS Start" - the list of available apps)

Each app will be developed as own git-project containing the webapp-files and some build-tool (e.g. ant) that generates a package-file that can be installed in AsTeRICS-Ergo.

Open Questions

  • Show "AsTeRICS AppStore" app in normal app-list or is it a special button/link on a special place in the UI?
  • format and content of an app-package (e.g. *.zip)? Digital Signature? metadata format?
  • Where to save configuration data of webapps?
  • "Standard" for actions/keycodes for all Apps in order to control them? E.g. standard actions for "next item", "prev item", "select", "back" ... is neccessary in order to configure one alternative input device and control everything with it.
  • How to start a second ARE instance via ARE-REST-interface?! What about installation Scenario 2 in Master Plan AsTeRICS Ergo - here it is maybe neccessary to run the first ARE instance remote (e.g. on a raspberryPi) and the second ARE instance on the host (e.g. PC). It is not clear how to achieve this or if this is really neccesary.
  • How to share common used javascript-functions/libraries across all apps (e.g. communication with ARE REST-interface)?
  • Should it be possible that more than one webapp is running at the same time? E.g. split-screen with camera mouse on one part of the screen, environmental control on the other part?!

Current status

  • This repository (AsTeRICS Ergo) is in reality just an "Functional App" of AsTeRICS Ergo. So this repository at some point maybe should be renamed to "AsTeRICS Ergo Environmental Control"
  • Another "Functional App" is currently in development: the AsTeRICS Ergo Grid. However the Grid is not a pure "Functional App" because it will also be usable completely standalone, without any AsTeRICS/AsTeRICS Ergo backend. However it will also be possible to control AsTeRICS models with the grid, so it is also in the category of "Functional Apps".