summaryrefslogtreecommitdiffstats
path: root/doc/application-framework.html
blob: 8d0e0e336aa7729ddbb2383c7c08d149a154f03d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <meta name="generator" content="pandoc">
  <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
  <meta name="author" content="José Bollo">
  <meta name="author" content="Fulup Ar Foll">
  <title>Application framework</title>
  <style type="text/css">code{white-space: pre;}</style>
  <link rel="stylesheet" href="doc.css">
  <!--[if lt IE 9]>
    <script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv-printshiv.min.js"></script>
  <![endif]-->
</head>
<body>
<header>
<h1 class="title">Application framework</h1>
<h2 class="author">José Bollo</h2>
<h2 class="author">Fulup Ar Foll</h2>
<h3 class="date">24 juin 2016</h3>
</header>
<nav id="TOC">
<ul>
<li><a href="#application-framework">Application framework</a><ul>
<li><a href="#foreword">Foreword</a></li>
<li><a href="#overview">Overview</a></li>
<li><a href="#comparison-to-other-frameworks">Comparison to other frameworks</a><ul>
<li><a href="#tizen-framework">Tizen framework</a></li>
<li><a href="#xdg-app">xdg-app</a></li>
<li><a href="#ostro">ostro</a></li>
</ul></li>
</ul></li>
<li><a href="#organization-of-directory-of-applications">organization of directory of applications</a><ul>
<li><a href="#identity-of-installed-files">Identity of installed files</a></li>
<li><a href="#labeling-the-directories-of-applications">labeling the directories of applications</a></li>
</ul></li>
<li><a href="#organization-of-data">organization of data</a></li>
<li><a href="#setting-smack-rules-for-the-application">Setting Smack rules for the application</a></li>
<li><a href="#what-user-can-run-an-application">What user can run an application?</a></li>
</ul>
</nav>
<h1 id="application-framework">Application framework</h1>
<h2 id="foreword">Foreword</h2>
<p>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.</p>
<h2 id="overview">Overview</h2>
<p>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.</p>
<p>The goal of the framework is to manage applications and hide security details to applications.</p>
<p>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.</p>
<p>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 <a href="http://www.w3.org/TR/widgets" title="Packaged Web Apps">widgets</a> and <a href="http://www.w3.org/TR/widgets-digsig" title="XML Digital Signatures for Widgets">widgets-digsig</a> of the W3 consortium.</p>
<p>As today this model allows the distribution of HTML, QML and binary applications but it could be extended to any other class of applications.</p>
<p>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).</p>
<h2 id="comparison-to-other-frameworks">Comparison to other frameworks</h2>
<h3 id="tizen-framework">Tizen framework</h3>
<h3 id="xdg-app">xdg-app</h3>
<h3 id="ostro">ostro</h3>
<h1 id="organization-of-directory-of-applications">organization of directory of applications</h1>
<p>The main path for applications are: APPDIR/PKGID/VER.</p>
<p>Where:</p>
<ul>
<li>APPDIR is as defined above</li>
<li>PKGID is a directory whose name is the package identifier</li>
<li>VER is the version of the package MAJOR.MINOR</li>
</ul>
<p>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.</p>
<h2 id="identity-of-installed-files">Identity of installed files</h2>
<p>All the files are installed as user &quot;userapp&quot; and group &quot;userapp&quot;. All files have rw(x) for user and r-(x) for group and others.</p>
<p>This allows any user to read files.</p>
<h2 id="labeling-the-directories-of-applications">labeling the directories of applications</h2>
<h1 id="organization-of-data">organization of data</h1>
<p>The data of a user are contain within its directory and are labeled using the application labels</p>
<h1 id="setting-smack-rules-for-the-application">Setting Smack rules for the application</h1>
<p>For Tizen, the following rules are set by the security manager for each application.</p>
<pre><code>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</code></pre>
<p>Here, <sub>PKG</sub> is the identifier of the package and <sub>APP</sub> is the identifier of the application.</p>
<h1 id="what-user-can-run-an-application">What user can run an application?</h1>
<p>Not all user are able to run all applications. How to manage that?</p>
</body>
</html>