This document describes application framework fundamentals. FCF (Fully Conform to Specification) implementation is still under development. It may happen that current implementation somehow diverges with specifications.
The application framework on top of the security framework provides components to install and uninstall applications as well as to run them in a secured environment.
The goal of the framework is to manage applications and hide security details to applications.
For the reasons explained in introduction, it was choose not to reuse Tizen application framework directly, but to rework a new framework inspired from Tizen.
fundamentals remain identical: the applications are distributed in a digitally signed container that should match widget specifications normalized by the W3C. This is described by the technical recommendations widgets and widgets-digsig of the W3 consortium.
As today this model allows the distribution of HTML, QML and binary applications but it could be extended to any other class of applications.
The management of widget package signatures. Current model is only an initial step, it might be extended in the future to include new feature (ie: incremental delivery).
The main path for applications are: APPDIR/PKGID/VER.
Where:
The advantage of such an organization is to allow several versions to live together. This is required for multiple reasons (ie: roll back) and to comply with developers habits.
All the files are installed as user "userapp" and group "userapp". All files have rw(x) for user and r-(x) for group and others.
This allows any user to read files.
The data of a user are contain within its directory and are labeled using the application labels
For Tizen, the following rules are set by the security manager for each application.
System ~APP~ rwx
System ~PKG~ rwxat
System ~PKG~::RO rwxat
~APP~ System wx
~APP~ System::Shared rxl
~APP~ System::Run rwxat
~APP~ System::Log rwxa
~APP~ _ l
User ~APP~ rwx
User ~PKG~ rwxat
User ~PKG~::RO rwxat
~APP~ User wx
~APP~ User::Home rxl
~APP~ User::App::Shared rwxat
~APP~ ~PKG~ rwxat
~APP~ ~PKG~::RO rxl
Here, PKG is the identifier of the package and APP is the identifier of the application.
Not all user are able to run all applications. How to manage that?