From 5262c13a63c78107d6d7df05db31f54db8d47ac7 Mon Sep 17 00:00:00 2001
From: Fulup Ar Foll This document describes what we intend to do. It may happen that our
-current implementation and the content of this document differ. In case of differences, it is assumed that this document is right
-and the implementation is wrong. This document describes application framework system daemon fundamentals.
+FCF (Fully Conform to Specification) implementation is still under development.
+It may happen that current implementation somehow diverges with specifications. The daemon afm-system-daemon is in charge of installing
-applications on the system. Its main tasks are:The afm-system-daemon
@@ -36,30 +36,27 @@ Author: José Bollo
version: 1
-Date: 29 mai 2016
+Date: 30 mai 2016
Author: José Bollo
Foreword
-Introduction
installs the applications and setup the security framework -to include it
uninstall the applications
installs applications and setup security framework +for newly installed application.
uninstall applications
The afm-system-daemon takes its orders from the system +
The afm-system-daemon takes its orders from system instance of D-Bus.
-The figure below summarizes the situation of the -afm-system-daemon in the system.
+The figure below summarizes the situation of afm-system-daemon in the system.
+------------------------------------------------------------+
| User |
@@ -142,7 +139,7 @@ members install and uninstall
-The client and the service are using JSON serialisation to
+
The client and the service are using JSON serialization to
exchange data.
The D-Bus interface is defined by:
@@ -157,10 +154,10 @@ exchange data.
The signature of any member of the interface is string -> string
for JSON -> JSON.
-This is the normal case. In case of error, the current implmentation
+
This is the normal case. In case of error, the current implementation
returns a dbus error that is a string.
-Here is an example that use dbus-send to query data on
+
Here is an example using dbus-send to query data on
installed applications.
dbus-send --session --print-reply \
@@ -177,24 +174,23 @@ org.AGL.afm.system.install 'string:"/tmp/appli.wgt"'
Method org.AGL.afm.system.install
-Description: Install an application from its widget file.
+Description: Install an application from a widget file.
-If an application of the same id and version exists, it is not
-reinstalled except if force=true.
+When an application with the same id and version already exists. Outside of
+using force=true the application is not reinstalled.
-Applications are installed in the subdirectories of the common directory
-of applications.
+
Applications are installed the subdirectories of applications common directory.
If root is specified, the application is installed under the
sub-directories of the root defined.
-Note that this methods is a simple accessor to the method
-org.AGL.afm.system.install of afm-system-daemon.
+Note that this methods is a simple accessor method of
+org.AGL.afm.system.install from afm-system-daemon.
After the installation and before returning to the sender,
-afm-system-daemon sends the signal org.AGL.afm.system.changed.
+afm-system-daemon sends a signal org.AGL.afm.system.changed.
-Input: The path of the widget file to install and, optionaly,
-a flag to force reinstallation, and, optionaly, a root directory.
+Input: The path of the widget file to install and, optionally,
+a flag to force reinstallation, and, optionally, a root directory.
Either just a string being the absolute path of the widget file:
@@ -225,14 +221,13 @@ the id of the added application.
Description: Uninstall an application from its id.
-Note that this methods is a simple accessor to the method
-org.AGL.afm.system.uninstall of afm-system-daemon.
+Note that this methods is a simple method accessor of
+org.AGL.afm.system.uninstall from afm-system-daemon.
After the uninstallation and before returning to the sender,
-afm-system-daemon sends the signal org.AGL.afm.system.changed.
+afm-system-daemon sends a signal org.AGL.afm.system.changed.
-Input: the id of the application and, otpionaly, the path to
-root of the application.
+Input: the id of the application and optionally the application root path.
Either a string:
diff --git a/doc/afm-system-daemon.md b/doc/afm-system-daemon.md
index 7589574..2db11d8 100644
--- a/doc/afm-system-daemon.md
+++ b/doc/afm-system-daemon.md
@@ -3,7 +3,7 @@ The afm-system-daemon
=====================
version: 1
- Date: 29 mai 2016
+ Date: 30 mai 2016
Author: José Bollo
TABLE-OF-CONTENT-HERE
@@ -12,29 +12,26 @@ TABLE-OF-CONTENT-HERE
Foreword
--------
-This document describes what we intend to do. It may happen that our
-current implementation and the content of this document differ.
-
-In case of differences, it is assumed that this document is right
-and the implementation is wrong.
+This document describes application framework system daemon fundamentals.
+FCF (Fully Conform to Specification) implementation is still under development.
+It may happen that current implementation somehow diverges with specifications.
Introduction
------------
The daemon **afm-system-daemon** is in charge of installing
-applications on the system. Its main tasks are:
+applications on AGL system. Its main tasks are:
- - installs the applications and setup the security framework
- to include it
+ - installs applications and setup security framework
+ for newly installed application.
- - uninstall the applications
+ - uninstall applications
-The **afm-system-daemon** takes its orders from the system
+The **afm-system-daemon** takes its orders from system
instance of D-Bus.
-The figure below summarizes the situation of the
-**afm-system-daemon** in the system.
+The figure below summarizes the situation of **afm-system-daemon** in the system.
+------------------------------------------------------------+
| User |
@@ -115,7 +112,7 @@ D-Bus is mainly used for signaling and discovery. Its optimized
typed protocol is not used except for transmitting only one string
in both directions.
-The client and the service are using JSON serialisation to
+The client and the service are using JSON serialization to
exchange data.
The D-Bus interface is defined by:
@@ -129,10 +126,10 @@ The D-Bus interface is defined by:
The signature of any member of the interface is ***string -> string***
for ***JSON -> JSON***.
-This is the normal case. In case of error, the current implmentation
+This is the normal case. In case of error, the current implementation
returns a dbus error that is a string.
-Here is an example that use *dbus-send* to query data on
+Here is an example using *dbus-send* to query data on
installed applications.
dbus-send --session --print-reply \
@@ -146,24 +143,23 @@ installed applications.
#### Method org.AGL.afm.system.install
-**Description**: Install an application from its widget file.
+**Description**: Install an application from a widget file.
-If an application of the same *id* and *version* exists, it is not
-reinstalled except if *force=true*.
+When an application with the same *id* and *version* already exists. Outside of
+using *force=true* the application is not reinstalled.
-Applications are installed in the subdirectories of the common directory
-of applications.
+Applications are installed the subdirectories of applications common directory.
If *root* is specified, the application is installed under the
sub-directories of the *root* defined.
-Note that this methods is a simple accessor to the method
-***org.AGL.afm.system.install*** of ***afm-system-daemon***.
+Note that this methods is a simple accessor method of
+***org.AGL.afm.system.install*** from ***afm-system-daemon***.
After the installation and before returning to the sender,
-***afm-system-daemon*** sends the signal ***org.AGL.afm.system.changed***.
+***afm-system-daemon*** sends a signal ***org.AGL.afm.system.changed***.
-**Input**: The *path* of the widget file to install and, optionaly,
-a flag to *force* reinstallation, and, optionaly, a *root* directory.
+**Input**: The *path* of the widget file to install and, optionally,
+a flag to *force* reinstallation, and, optionally, a *root* directory.
Either just a string being the absolute path of the widget file:
@@ -191,14 +187,13 @@ the id of the added application.
**Description**: Uninstall an application from its id.
-Note that this methods is a simple accessor to the method
-***org.AGL.afm.system.uninstall*** of ***afm-system-daemon***.
+Note that this methods is a simple method accessor of
+***org.AGL.afm.system.uninstall*** from ***afm-system-daemon***.
After the uninstallation and before returning to the sender,
-***afm-system-daemon*** sends the signal ***org.AGL.afm.system.changed***.
+***afm-system-daemon*** sends a signal ***org.AGL.afm.system.changed***.
-**Input**: the *id* of the application and, otpionaly, the path to
-*root* of the application.
+**Input**: the *id* of the application and optionally the application *root* path.
Either a string:
@@ -213,38 +208,6 @@ Or an object:
**output**: the value 'true'.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
[meta-intel]: https://github.com/01org/meta-intel-iot-security "A collection of layers providing security technologies"
[widgets]: http://www.w3.org/TR/widgets "Packaged Web Apps"
[widgets-digsig]: http://www.w3.org/TR/widgets-digsig "XML Digital Signatures for Widgets"
diff --git a/doc/afm-user-daemon.html b/doc/afm-user-daemon.html
index 77af347..d69c396 100644
--- a/doc/afm-user-daemon.html
+++ b/doc/afm-user-daemon.html
@@ -8,7 +8,7 @@
The afm-user-daemon
version: 1
-Date: 29 mai 2016
+Date: 30 mai 2016
Author: José Bollo
@@ -20,13 +20,13 @@ Author: José Bollo
Tasks of afm-user-daemon
Starting afm-user-daemon
- Configuration of the launcher
+ Launcher Configuration
- mode local
- mode remote
@@ -60,28 +60,26 @@ Author: José Bollo
Foreword
-This document describes what we intend to do. It may happen that our
-current implementation and the content of this document differ.
-
-In case of differences, it is assumed that this document is right
-and the implementation is wrong.
+This document describes application framework user daemon fundamentals.
+FCF (Fully Conform to Specification) implementation is still under development.
+It may happen that current implementation somehow diverges with specifications.
Introduction
The daemon afm-user-daemon is in charge of handling
-applications for one user. Its main tasks are:
+applications on behalf of a user. Its main tasks are:
-enumerate the applications that the user can run
-and keep the list avalable on demand
-start applications for the user, set their running
-environment, set their security context
-list the current runner applications
+enumerate applications that end user can run
+and keep this list available on demand
+start applications on behalf of end user, set user running
+environment, set user security context
+list current runnable or running applications
stop (aka pause), continue (aka resume), terminate
-the running instance of application
-transfer requests for installation or uninstallation
-of applications to the dedicated system daemon
+a running instance of a given application
+transfer requests for installation/uninstallation
+of applications to the corresponding system daemon
afm-system-daemon
@@ -89,8 +87,7 @@ of applications to the dedicated system daemon
The afm-user-daemon takes its orders from the session
instance of D-Bus.
-The figure below summarizes the situation of the
-afm-user-daemon in the system.
+The figure below summarizes the situation of afm-user-daemon in the system.
+------------------------------------------------------------+
| User |
@@ -128,38 +125,40 @@ instance of D-Bus.
Maintaining list of applications
At start afm-user-daemon scans the directories containing
-the applications and load in memory the list applications
-availables to the current user.
+applications and load in memory a list of avaliable applications
+accessible by current user.
-When afm-system-daemon installs or removes an application,
-it sends the signal org.AGL.afm.system.changed on success.
-If it receives that signal, afm-user-daemon rebuild its
-list of applications.
+When afm-system-daemon installs or removes an application.
+On success it sends the signal org.AGL.afm.system.changed.
+When receiving such a signal, afm-user-daemon rebuilds its
+applications list.
-afm-user-daemon provides the data that it collected about
-application to its clients that either want to get that list
-or to get information about one application.
+afm-user-daemon provides the data it collects about
+applications to its clients. Clients may either request the full list
+of avaliable applications or a more specific information about a
+given application.
-
-Launching applications
+
+Launching application
-afm-user-daemon launchs the applications. This means
-that its builds a secure environment for the application
-and then start it inside that secured environment.
+afm-user-daemon launches application. Its builds a secure
+environment for the application before starting it within a
+secured environment.
-Applications of different kind can be launched.
+Different kind of applications can be launched.
This is set using a configuration file that describes
-how to launch an application of a given kind for a given
+how to launch an application of a given kind within a given
mode.
There is two launching modes: local or remote.
Launching an application locally means that
-the application and its binder are launcher together.
+the application and its binder are launched together.
-Launching application remotely means that only the
-binder is launched for the application.
+Launching application remotely translates in only launching
+the application binder. The UI by itself has to be activated
+remotely by the requested (ie: HTML5 homescreen in a browser)
Once launched, running instances of application receive
a runid that identify them.
@@ -170,15 +169,15 @@ a runid that identify them.
afm-user-daemon manages the list of applications
that it launched.
-With the good permissions, a client can get the list
-of the running instances and details about a specific
-running instance. It can also terminate, stop or
-continue a given application.
+When owning the right permissions, a client can get the list
+of running instances and details about a specific
+running instance. It can also terminates, stops or
+continues a given application.
Installing and uninstalling applications
-If the client has the good permission,
+
If the client own the right permissions,
afm-user-daemon delegates that task
to afm-system-daemon.
@@ -200,16 +199,15 @@ located at /usr/lib/systemd/user/afm-user-daemon.service.
Can be repeated.
-r
---root directory
-
- Includes the root application directory to
- the database base of applications.
+--root directory
- Note that the default root directory for
- applications is always added. It is defined
- to be /usr/share/afm/applications (may change).
+ Includes root application directory or directories when
+ passing multiple rootdir to
+ applications database.
- Can be repeated.
+ Note that default root directory for
+ applications is always added. In current version
+ /usr/share/afm/applications is used as default.
-m
--mode (local|remote)
@@ -238,34 +236,34 @@ located at /usr/lib/systemd/user/afm-user-daemon.service.
Prints a short help.
-
-Configuration of the launcher
+
+Launcher Configuration
It contains rules for launching applications.
-When afm-user-daemon need to launch an application,
-it looks to the mode of launch, local or remote, and the
-type of the application as given by the file config.xml
-of the widget.
+When afm-user-daemon has to launch an application,
+it looks for launch mode (local or remote), as well as
+for the type of application describe in config.xml
+widget configuration file.
-This couple mode and type allows to select the rule.
+This tuple mode+type allows to select the adequate rule.
-The configuration file is /etc/afm/afm-launch.conf.
+Configuration file is /etc/afm/afm-launch.conf.
It contains sections and rules. It can also contain comments
-and empty lines to improve the readability.
+and empty lines to improve readability.
The separators are space and tabulation, any other character
-is meaning something.
+should have a meaning.
The format is line oriented.
The new line character separate the lines.
-Lines having only separators are blank lines and are skipped.
-Line having the character # (sharp) as first not separator character
-are comment lines and are ignored.
+Lines having only separators are blank lines and ignored.
+Line having character #(sharp) at first position are comment
+lines and ignored.
-Lines starting with a not separator character are differents
-of lines starting with a separator character.
+Lines not starting with a separator are different
+from lines starting with a separator character.
The grammar of the configuration file is defined below:
@@ -295,8 +293,8 @@ NCHAR: CMT | CHAR
Here is a sample of configuration file for defining how
-to launch an application declared of types application/x-executable,
-text/x-shellscript and text/html in mode local:
+to launch an application of types application/x-executable,
+text/x-shellscript and text/html in local mode:
mode local
@@ -323,9 +321,9 @@ text/html
mode local
-Within this mode, the launchers have either one or two vectors
-describing them. All of these vectors are treated as programs
-and are executed with the system call ‘execve’.
+Within this mode, the launchers have either one or two description vectors.
+All of those vectors are treated as programs
+and are executed with ‘execve’ system call.
The first vector is the leader vector and it defines the process
group. The second vector (if any) is attached to the group
@@ -337,19 +335,17 @@ defined by this first vector.
Within this mode, the launchers have either one or two vectors
describing them.
-The first vector is treated as a program and is executed with
-the system call ‘execve’.
+The first vector is process as a program and is executed with
+system call ‘execve’.
The second vector (if any) defines a text that is returned
-to the caller. This mechanism can be used to return the uri
-to connect to for executing the application remotely.
+to the caller. This mechanism can be used to return a uri
+for remote UI to connect on the newly launched application.
-The daemon afm-user-daemon allocates a port for the
-running the application remotely.
-The current implmentation of the port allocation is just
-incremental.
-A more reliable (cacheable and same-originable) allocation
-is to be defined.
+The daemon afm-user-daemon allocates a port for each
+new remote application.
+The current implementation port allocation is incremental.
+A smarter (cacheable and discoverable) allocation should be defined.
%substitutions
@@ -368,7 +364,7 @@ to sequences.
This simply emits the percent sign %
%a: appid
-This is the application Id of the launched application.
+Holds application Id of launched application.
Defined by the attribute id of the element
of config.xml.
@@ -376,11 +372,10 @@ of config.xml.
The file within the widget directory that is the entry point.
-For a HTML application, it is the relative path to the main
+
For HTML applications, it represents the relative path to main
page (aka index.html).
-Defined by the attribute src of the element
-of config.xml.
+Defined by attribute src of the element within config.xml.
%D: datadir
Path of the directory where the application runs (cwd)
@@ -413,24 +408,23 @@ of config.xml.
element of config.xml.
%p: plugins
-Unhandled until now.
-
-Will be the colon separated list of plugins and plugins directory.
+In the future should represent the list of plugins and plugins directory separated by ‘,’.
+Warning: not supported in current version.
%P: port
A port to use. It is currently a kind of random port. The precise
model is to be defined later.
%R: readyfd
-Number of the file descriptor to use for signalling
-readyness of the launched process.
+Number of file descriptor to use for signaling
+readiness of launched process.
%r: rootdir
-Path of the directory containing the widget and its data.
+Path of directory containing the widget and its data.
%S: secret
-An hexadecimal number that can be used to pair the client
-with its server binder.
+An hexadecimal number that can be used to initialize pairing of client
+and application binder.
%W: width
Requested width for the widget.
@@ -447,27 +441,25 @@ of config.xml.
Overview of the dbus interface
afm-user-daemon takes its orders from the session instance
-of D-Bus. The use of D-Bus is great because it allows to implement
+of D-Bus. D-Bus is nice to use in this context because it allows
discovery and signaling.
-The dbus of the session is by default adressed by the environment
+
The dbus session is by default addressed by environment
variable DBUS_SESSION_BUS_ADDRESS. Using systemd
-the variable DBUS_SESSION_BUS_ADDRESS is automatically set for
+variable DBUS_SESSION_BUS_ADDRESS is automatically set for
user sessions.
-The afm-user-daemon is listening with the destination name
-org.AGL.afm.user at the object of path /org/AGL/afm/user
-on the interface org.AGL.afm.user for the below detailed
-members runnables, detail, start, terminate,
+
The afm-user-daemon is listening on destination name
+org.AGL.afm.user at object path /org/AGL/afm/user
+on interface org.AGL.afm.user for following members:
+ runnables, detail, start, terminate,
stop, continue, runners, state,
install and uninstall.
D-Bus is mainly used for signaling and discovery. Its optimized
-typed protocol is not used except for transmitting only one string
-in both directions.
+typed protocol is not used except for transmission of standalone strings.
-The client and the service are using JSON serialisation to
-exchange data.
+Clients and Services are using JSON serialisation to exchange data.
The D-Bus interface is defined by:
@@ -481,10 +473,10 @@ exchange data.
The signature of any member of the interface is string -> string
for JSON -> JSON.
-This is the normal case. In case of error, the current implmentation
-returns a dbus error that is a string.
+This is the normal case. In case of error, the current implementation
+returns a dbus error as a string.
-Here is an example that use dbus-send to query data on
+
Here an example using dbus-send to query data on
installed applications.
dbus-send --session --print-reply \
@@ -501,8 +493,7 @@ orders to afm-user-daemon. This small scripts allows to
send command to afm-user-daemon either interactively
at shell prompt or scriptically.
-The syntax is simple: it accept a command and if the command
-requires it, the argument to the command.
+The syntax is simple: it accept a command and when requires attached arguments.
Here is the summary of afm-util:
@@ -615,12 +606,12 @@ an application as described above for the method
Description: Install an application from its widget file.
If an application of the same id and version exists, it is not
-reinstalled except if force=true.
+reinstalled except when force=true.
Applications are installed in the subdirectories of the common directory
-of applications.
-If root is specified, the application is installed under the
-sub-directories of the root defined.
+reserved for applications.
+If root is specified, the application is installed under
+sub-directories of defined root.
Note that this methods is a simple accessor to the method
org.AGL.afm.system.install of afm-system-daemon.
@@ -628,10 +619,10 @@ sub-directories of the root defined.
After the installation and before returning to the sender,
afm-user-daemon sends the signal org.AGL.afm.user.changed.
-Input: The path of the widget file to install and, optionaly,
-a flag to force reinstallation, and, optionaly, a root directory.
+Input: The path of widget file to be installed. Optionally,
+a flag to force reinstallation and/or a root directory.
-Either just a string being the absolute path of the widget file:
+Simple form a simple string containing the absolute widget path:
"/a/path/driving/to/the/widget"
@@ -645,10 +636,9 @@ a flag to force reinstallation, and, optionaly, a root directo
}
-“wgt” and “root” must be absolute paths.
+“wgt” and “root” MUST be absolute paths.
-output: An object with the field “added” being the string for
-the id of the added application.
+output: An object containing field “added” to use as application ID.
{"added":"appli@x.y"}
@@ -660,14 +650,14 @@ the id of the added application.
Description: Uninstall an application from its id.
-Note that this methods is a simple accessor to the method
-org.AGL.afm.system.uninstall of afm-system-daemon.
+Note that this methods is a simple accessor to
+org.AGL.afm.system.uninstall method from afm-system-daemon.
After the uninstallation and before returning to the sender,
afm-user-daemon sends the signal org.AGL.afm.user.changed.
-Input: the id of the application and, otpionaly, the path to
-root of the application.
+Input: the id of the application and, optionally, the path to
+application root.
Either a string:
@@ -691,7 +681,7 @@ the id of the added application.
Description:
-Input: the id of the application and, optionaly, the
+
Input: the id of the application and, optionally, the
start mode as below.
Either just a string:
@@ -699,25 +689,24 @@ start mode as below.
"appli@x.y"
-Or an object having the field “id” of type string and
-optionaly a field mode:
+Or an object containing field “id” of type string and
+optionally a field mode:
{"id":"appli@x.y","mode":"local"}
-The field “mode” as a string value being either “local” or “remote”.
+The field “mode” is a string equal to either “local” or “remote”.
-output: The runid of the application launched.
-The runid is an integer.
+output: The runid of the application launched. runid is an integer.
Method org.AGL.afm.user.terminate
-Description: Terminates the application of runid.
+Description: Terminates the application attached to runid.
-Input: The runid (an integer) of the running instance to terminate.
+Input: The runid (an integer) of running instance to terminate.
output: the value ‘true’.
@@ -726,9 +715,9 @@ The runid is an integer.
Method org.AGL.afm.user.stop
-Description: Stops the application of runid until terminate or continue.
+Description: Stops the application attached to runid until terminate or continue.
-Input: The runid (an integer) of the running instance to stop.
+Input: The runid (integer) of the running instance to stop.
output: the value ‘true’.
@@ -737,9 +726,9 @@ The runid is an integer.
Method org.AGL.afm.user.continue
-Description: Continues the application of runid previously stopped.
+Description: Continues the application attached to runid previously stopped.
-Input: The runid (an integer) of the running instance to continue.
+Input: The runid (integer) of the running instance to continue.
output: the value ‘true’.
@@ -750,12 +739,11 @@ The runid is an integer.
Description: Get informations about a running instance of runid.
-Input: The runid (an integer) of the running instance inspected.
+Input: The runid (integer) of the running instance inspected.
-output: An object describing the state of the instance. It contains:
-the runid (an integer), the id of the running application (a string),
-the state of the application (a string being either “starting”, “running”
-or “stopped”).
+output: An object describing instance state. It contains:
+the runid (integer), the id of the running application (string),
+the state of the application (string either: “starting”, “running”, “stopped”).
Example of returned state:
@@ -771,7 +759,7 @@ or “stopped”).
Method org.AGL.afm.user.runners
-Description: Get the list of the currently running instances.
+Description: Get the list of currently running instances.
Input: anything.
diff --git a/doc/afm-user-daemon.md b/doc/afm-user-daemon.md
index 590b511..b21c1cd 100644
--- a/doc/afm-user-daemon.md
+++ b/doc/afm-user-daemon.md
@@ -3,7 +3,7 @@ The afm-user-daemon
===================
version: 1
- Date: 29 mai 2016
+ Date: 30 mai 2016
Author: José Bollo
TABLE-OF-CONTENT-HERE
@@ -11,39 +11,36 @@ TABLE-OF-CONTENT-HERE
Foreword
--------
-This document describes what we intend to do. It may happen that our
-current implementation and the content of this document differ.
-
-In case of differences, it is assumed that this document is right
-and the implementation is wrong.
+This document describes application framework user daemon fundamentals.
+FCF (Fully Conform to Specification) implementation is still under development.
+It may happen that current implementation somehow diverges with specifications.
Introduction
------------
The daemon **afm-user-daemon** is in charge of handling
-applications for one user. Its main tasks are:
+applications on behalf of a user. Its main tasks are:
- - enumerate the applications that the user can run
- and keep the list avalable on demand
+ - enumerate applications that end user can run
+ and keep this list available on demand
- - start applications for the user, set their running
- environment, set their security context
+ - start applications on behalf of end user, set user running
+ environment, set user security context
- - list the current runner applications
+ - list current runnable or running applications
- stop (aka pause), continue (aka resume), terminate
- the running instance of application
+ a running instance of a given application
- - transfer requests for installation or uninstallation
- of applications to the dedicated system daemon
+ - transfer requests for installation/uninstallation
+ of applications to the corresponding system daemon
**afm-system-daemon**
The **afm-user-daemon** takes its orders from the session
instance of D-Bus.
-The figure below summarizes the situation of the
-**afm-user-daemon** in the system.
+The figure below summarizes the situation of **afm-user-daemon** in the system.
+------------------------------------------------------------+
| User |
@@ -80,37 +77,39 @@ Tasks of **afm-user-daemon**
### Maintaining list of applications ###
At start **afm-user-daemon** scans the directories containing
-the applications and load in memory the list applications
-availables to the current user.
+applications and load in memory a list of avaliable applications
+accessible by current user.
-When **afm-system-daemon** installs or removes an application,
-it sends the signal *org.AGL.afm.system.changed* on success.
-If it receives that signal, **afm-user-daemon** rebuild its
-list of applications.
+When **afm-system-daemon** installs or removes an application.
+On success it sends the signal *org.AGL.afm.system.changed*.
+When receiving such a signal, **afm-user-daemon** rebuilds its
+applications list.
-**afm-user-daemon** provides the data that it collected about
-application to its clients that either want to get that list
-or to get information about one application.
+**afm-user-daemon** provides the data it collects about
+applications to its clients. Clients may either request the full list
+of avaliable applications or a more specific information about a
+given application.
-### Launching applications ###
+### Launching application ###
-**afm-user-daemon** launchs the applications. This means
-that its builds a secure environment for the application
-and then start it inside that secured environment.
+**afm-user-daemon** launches application. Its builds a secure
+environment for the application before starting it within a
+secured environment.
-Applications of different kind can be launched.
+Different kind of applications can be launched.
This is set using a configuration file that describes
-how to launch an application of a given kind for a given
+how to launch an application of a given kind within a given
mode.
There is two launching modes: local or remote.
Launching an application locally means that
-the application and its binder are launcher together.
+the application and its binder are launched together.
-Launching application remotely means that only the
-binder is launched for the application.
+Launching application remotely translates in only launching
+the application binder. The UI by itself has to be activated
+remotely by the requested (ie: HTML5 homescreen in a browser)
Once launched, running instances of application receive
a runid that identify them.
@@ -120,14 +119,14 @@ a runid that identify them.
**afm-user-daemon** manages the list of applications
that it launched.
-With the good permissions, a client can get the list
-of the running instances and details about a specific
-running instance. It can also terminate, stop or
-continue a given application.
+When owning the right permissions, a client can get the list
+of running instances and details about a specific
+running instance. It can also terminates, stops or
+continues a given application.
### Installing and uninstalling applications ###
-If the client has the good permission,
+If the client own the right permissions,
**afm-user-daemon** delegates that task
to **afm-system-daemon**.
@@ -150,17 +149,16 @@ The options for launching **afm-user-daemon** are:
Can be repeated.
-r
- --root directory
-
- Includes the root application directory to
- the database base of applications.
-
- Note that the default root directory for
- applications is always added. It is defined
- to be /usr/share/afm/applications (may change).
-
- Can be repeated.
+ --root directory
+ Includes root application directory or directories when
+ passing multiple rootdir to
+ applications database.
+
+ Note that default root directory for
+ applications is always added. In current version
+ /usr/share/afm/applications is used as default.
+
-m
--mode (local|remote)
@@ -188,34 +186,34 @@ The options for launching **afm-user-daemon** are:
Prints a short help.
-Configuration of the launcher
+Launcher Configuration
-----------------------------
It contains rules for launching applications.
-When **afm-user-daemon** need to launch an application,
-it looks to the mode of launch, local or remote, and the
-type of the application as given by the file ***config.xml***
-of the widget.
+When **afm-user-daemon** has to launch an application,
+it looks for launch mode (local or remote), as well as
+for the type of application describe in ***config.xml***
+widget configuration file.
-This couple mode and type allows to select the rule.
+This tuple mode+type allows to select the adequate rule.
-The configuration file is **/etc/afm/afm-launch.conf**.
+Configuration file is **/etc/afm/afm-launch.conf**.
It contains sections and rules. It can also contain comments
-and empty lines to improve the readability.
+and empty lines to improve readability.
The separators are space and tabulation, any other character
-is meaning something.
+should have a meaning.
The format is line oriented.
The new line character separate the lines.
-Lines having only separators are blank lines and are skipped.
-Line having the character # (sharp) as first not separator character
-are comment lines and are ignored.
+Lines having only separators are blank lines and ignored.
+Line having character #(sharp) at first position are comment
+lines and ignored.
-Lines starting with a not separator character are differents
-of lines starting with a separator character.
+Lines not starting with a separator are different
+from lines starting with a separator character.
The grammar of the configuration file is defined below:
@@ -244,8 +242,8 @@ The grammar of the configuration file is defined below:
NCHAR: CMT | CHAR
Here is a sample of configuration file for defining how
-to launch an application declared of types *application/x-executable*,
-*text/x-shellscript* and *text/html* in mode local:
+to launch an application of types *application/x-executable*,
+*text/x-shellscript* and *text/html* in local mode:
mode local
@@ -267,9 +265,9 @@ This shows that:
### mode local
-Within this mode, the launchers have either one or two vectors
-describing them. All of these vectors are treated as programs
-and are executed with the system call 'execve'.
+Within this mode, the launchers have either one or two description vectors.
+All of those vectors are treated as programs
+and are executed with 'execve' system call.
The first vector is the leader vector and it defines the process
group. The second vector (if any) is attached to the group
@@ -280,19 +278,17 @@ defined by this first vector.
Within this mode, the launchers have either one or two vectors
describing them.
-The first vector is treated as a program and is executed with
-the system call 'execve'.
+The first vector is process as a program and is executed with
+system call 'execve'.
The second vector (if any) defines a text that is returned
-to the caller. This mechanism can be used to return the uri
-to connect to for executing the application remotely.
+to the caller. This mechanism can be used to return a uri
+for remote UI to connect on the newly launched application.
-The daemon ***afm-user-daemon*** allocates a port for the
-running the application remotely.
-The current implmentation of the port allocation is just
-incremental.
-A more reliable (cacheable and same-originable) allocation
-is to be defined.
+The daemon ***afm-user-daemon*** allocates a port for each
+new remote application.
+The current implementation port allocation is incremental.
+A smarter (cacheable and discoverable) allocation should be defined.
### %substitutions
@@ -310,7 +306,7 @@ Here is the list of *%substitutions*:
- ***%a***: appid
- This is the application Id of the launched application.
+ Holds application Id of launched application.
Defined by the attribute **id** of the element ****
of **config.xml**.
@@ -319,11 +315,10 @@ Here is the list of *%substitutions*:
The file within the widget directory that is the entry point.
- For a HTML application, it is the relative path to the main
+ For HTML applications, it represents the relative path to main
page (aka index.html).
- Defined by the attribute **src** of the element ****
- of **config.xml**.
+ Defined by attribute **src** of the element **** within **config.xml**.
- ***%D***: datadir
@@ -363,9 +358,8 @@ Here is the list of *%substitutions*:
- ***%p***: plugins
- Unhandled until now.
-
- Will be the colon separated list of plugins and plugins directory.
+ In the future should represent the list of plugins and plugins directory separated by ','.
+ Warning: not supported in current version.
- ***%P***: port
@@ -374,17 +368,17 @@ Here is the list of *%substitutions*:
- ***%R***: readyfd
- Number of the file descriptor to use for signalling
- readyness of the launched process.
+ Number of file descriptor to use for signaling
+ readiness of launched process.
- ***%r***: rootdir
- Path of the directory containing the widget and its data.
+ Path of directory containing the widget and its data.
- ***%S***: secret
- An hexadecimal number that can be used to pair the client
- with its server binder.
+ An hexadecimal number that can be used to initialize pairing of client
+ and application binder.
- ***%W***: width
@@ -400,27 +394,25 @@ The D-Bus interface
### Overview of the dbus interface
***afm-user-daemon*** takes its orders from the session instance
-of D-Bus. The use of D-Bus is great because it allows to implement
+of D-Bus. D-Bus is nice to use in this context because it allows
discovery and signaling.
-The dbus of the session is by default adressed by the environment
+The dbus session is by default addressed by environment
variable ***DBUS_SESSION_BUS_ADDRESS***. Using **systemd**
-the variable *DBUS_SESSION_BUS_ADDRESS* is automatically set for
+variable *DBUS_SESSION_BUS_ADDRESS* is automatically set for
user sessions.
-The **afm-user-daemon** is listening with the destination name
-***org.AGL.afm.user*** at the object of path ***/org/AGL/afm/user***
-on the interface ***org.AGL.afm.user*** for the below detailed
-members ***runnables***, ***detail***, ***start***, ***terminate***,
+The **afm-user-daemon** is listening on destination name
+***org.AGL.afm.user*** at object path ***/org/AGL/afm/user***
+on interface ***org.AGL.afm.user*** for following members:
+ ***runnables***, ***detail***, ***start***, ***terminate***,
***stop***, ***continue***, ***runners***, ***state***,
***install*** and ***uninstall***.
D-Bus is mainly used for signaling and discovery. Its optimized
-typed protocol is not used except for transmitting only one string
-in both directions.
+typed protocol is not used except for transmission of standalone strings.
-The client and the service are using JSON serialisation to
-exchange data.
+Clients and Services are using JSON serialisation to exchange data.
The D-Bus interface is defined by:
@@ -433,10 +425,10 @@ The D-Bus interface is defined by:
The signature of any member of the interface is ***string -> string***
for ***JSON -> JSON***.
-This is the normal case. In case of error, the current implmentation
-returns a dbus error that is a string.
+This is the normal case. In case of error, the current implementation
+returns a dbus error as a string.
-Here is an example that use *dbus-send* to query data on
+Here an example using *dbus-send* to query data on
installed applications.
dbus-send --session --print-reply \
@@ -451,8 +443,7 @@ orders to **afm-user-daemon**. This small scripts allows to
send command to ***afm-user-daemon*** either interactively
at shell prompt or scriptically.
-The syntax is simple: it accept a command and if the command
-requires it, the argument to the command.
+The syntax is simple: it accept a command and when requires attached arguments.
Here is the summary of ***afm-util***:
@@ -563,12 +554,12 @@ an application as described above for the method
**Description**: Install an application from its widget file.
If an application of the same *id* and *version* exists, it is not
-reinstalled except if *force=true*.
+reinstalled except when *force=true*.
Applications are installed in the subdirectories of the common directory
-of applications.
-If *root* is specified, the application is installed under the
-sub-directories of the *root* defined.
+reserved for applications.
+If *root* is specified, the application is installed under
+sub-directories of defined *root*.
Note that this methods is a simple accessor to the method
***org.AGL.afm.system.install*** of ***afm-system-daemon***.
@@ -576,10 +567,10 @@ Note that this methods is a simple accessor to the method
After the installation and before returning to the sender,
***afm-user-daemon*** sends the signal ***org.AGL.afm.user.changed***.
-**Input**: The *path* of the widget file to install and, optionaly,
-a flag to *force* reinstallation, and, optionaly, a *root* directory.
+**Input**: The *path* of widget file to be installed. Optionally,
+a flag to *force* reinstallation and/or a *root* directory.
-Either just a string being the absolute path of the widget file:
+Simple form a simple string containing the absolute widget path:
"/a/path/driving/to/the/widget"
@@ -591,10 +582,9 @@ Or an object:
"root": "/a/path/to/the/root"
}
-"wgt" and "root" must be absolute paths.
+"wgt" and "root" MUST be absolute paths.
-**output**: An object with the field "added" being the string for
-the id of the added application.
+**output**: An object containing field "added" to use as application ID.
{"added":"appli@x.y"}
@@ -605,14 +595,14 @@ the id of the added application.
**Description**: Uninstall an application from its id.
-Note that this methods is a simple accessor to the method
-***org.AGL.afm.system.uninstall*** of ***afm-system-daemon***.
+Note that this methods is a simple accessor to
+***org.AGL.afm.system.uninstall*** method from ***afm-system-daemon***.
After the uninstallation and before returning to the sender,
***afm-user-daemon*** sends the signal ***org.AGL.afm.user.changed***.
-**Input**: the *id* of the application and, otpionaly, the path to
-*root* of the application.
+**Input**: the *id* of the application and, optionally, the path to
+application *root*.
Either a string:
@@ -633,30 +623,29 @@ Or an object:
**Description**:
-**Input**: the *id* of the application and, optionaly, the
+**Input**: the *id* of the application and, optionally, the
start *mode* as below.
Either just a string:
"appli@x.y"
-Or an object having the field "id" of type string and
-optionaly a field mode:
+Or an object containing field "id" of type string and
+optionally a field mode:
{"id":"appli@x.y","mode":"local"}
-The field "mode" as a string value being either "local" or "remote".
+The field "mode" is a string equal to either "local" or "remote".
-**output**: The *runid* of the application launched.
-The runid is an integer.
+**output**: The *runid* of the application launched. *runid* is an integer.
---
#### Method org.AGL.afm.user.terminate
-**Description**: Terminates the application of *runid*.
+**Description**: Terminates the application attached to *runid*.
-**Input**: The *runid* (an integer) of the running instance to terminate.
+**Input**: The *runid* (an integer) of running instance to terminate.
**output**: the value 'true'.
@@ -664,9 +653,9 @@ The runid is an integer.
#### Method org.AGL.afm.user.stop
-**Description**: Stops the application of *runid* until terminate or continue.
+**Description**: Stops the application attached to *runid* until terminate or continue.
-**Input**: The *runid* (an integer) of the running instance to stop.
+**Input**: The *runid* (integer) of the running instance to stop.
**output**: the value 'true'.
@@ -674,9 +663,9 @@ The runid is an integer.
#### Method org.AGL.afm.user.continue
-**Description**: Continues the application of *runid* previously stopped.
+**Description**: Continues the application attached to *runid* previously stopped.
-**Input**: The *runid* (an integer) of the running instance to continue.
+**Input**: The *runid* (integer) of the running instance to continue.
**output**: the value 'true'.
@@ -686,12 +675,11 @@ The runid is an integer.
**Description**: Get informations about a running instance of *runid*.
-**Input**: The *runid* (an integer) of the running instance inspected.
+**Input**: The *runid* (integer) of the running instance inspected.
-**output**: An object describing the state of the instance. It contains:
-the runid (an integer), the id of the running application (a string),
-the state of the application (a string being either "starting", "running"
-or "stopped").
+**output**: An object describing instance state. It contains:
+the runid (integer), the id of the running application (string),
+the state of the application (string either: "starting", "running", "stopped").
Example of returned state:
@@ -705,7 +693,7 @@ Example of returned state:
#### Method org.AGL.afm.user.runners
-**Description**: Get the list of the currently running instances.
+**Description**: Get the list of currently running instances.
**Input**: anything.
diff --git a/doc/application-framework.html b/doc/application-framework.html
index d2e19c5..e909b77 100644
--- a/doc/application-framework.html
+++ b/doc/application-framework.html
@@ -8,7 +8,7 @@
Application framework
version: 1
-Date: 29 mai 2016
+Date: 30 mai 2016
Author: José Bollo
@@ -27,13 +27,13 @@ Author: José Bollo
- Organisation of directory of applications
+ organization of directory of applications
- Organisation of data
+ organization of data
Setting Smack rules for the application
What user can run an application?
@@ -41,35 +41,34 @@ Author: José Bollo
Foreword
-This document describes what we intend to do. It may happen that our
-current implementation and the content of this document differ.
-
-In case of differences, it is assumed that this document is right
-and the implementation is wrong.
+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.
Overview
The application framework on top of the security framework
-provides the components to install and uninstall applications
-and to run it in a secured environment.
+provides components to install and uninstall applications
+as well as to run them in a secured environment.
-The goal is to manage applications and to hide the details of
-the security framework to the applications.
+The goal of the framework is to manage applications and hide security details
+to applications.
-For the reasons explained in introduction, we did not used the
-application framework of Tizen as is but used an adaptation of it.
+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.
-The basis is kept identical: the applications are distributed
-in a digitally signed container that must match the specifications
-of widgets (web applications). This is described by the technical
-recomendations widgets and widgets-digsig of the W3 consortium.
+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.
-This model allows the distribution of HTML, QML and binary applications.
+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 signatures of the widget packages
-This basis is not meant as being rigid and it can be extended in the
-futur to include for example incremental delivery.
+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).
Comparison to other frameworks
@@ -83,10 +82,10 @@ futur to include for example incremental delivery.
ostro
-
-Organisation of directory of applications
+
+organization of directory of applications
-The main path for applivcations are: APPDIR/PKGID/VER.
+The main path for applications are: APPDIR/PKGID/VER.
Where:
@@ -97,24 +96,24 @@ futur to include for example incremental delivery.
-This organisation has the advantage to allow several versions to leave together.
-This is needed for some good reasons (rolling back) and also for less good reasons (user habits).
+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.
Identity of installed files
-All the files are installed as the user “userapp” and group “userapp”.
+
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 the files.
+This allows any user to read files.
-
-Labelling the directories of applications
+
+labeling the directories of applications
-
-Organisation of data
+
+organization of data
-The data of a user are in its directory and are labelled using the labels of the application
+The data of a user are contain within its directory and are labeled using the application labels
Setting Smack rules for the application
diff --git a/doc/application-framework.md b/doc/application-framework.md
index 278df60..a88dc5b 100644
--- a/doc/application-framework.md
+++ b/doc/application-framework.md
@@ -3,7 +3,7 @@ Application framework
=====================
version: 1
- Date: 29 mai 2016
+ Date: 30 mai 2016
Author: José Bollo
TABLE-OF-CONTENT-HERE
@@ -11,36 +11,34 @@ TABLE-OF-CONTENT-HERE
Foreword
--------
-This document describes what we intend to do. It may happen that our
-current implementation and the content of this document differ.
-
-In case of differences, it is assumed that this document is right
-and the implementation is wrong.
-
+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.
Overview
--------
The application framework on top of the security framework
-provides the components to install and uninstall applications
-and to run it in a secured environment.
+provides components to install and uninstall applications
+as well as to run them in a secured environment.
-The goal is to manage applications and to hide the details of
-the security framework to the applications.
+The goal of the framework is to manage applications and hide security details
+to applications.
-For the reasons explained in introduction, we did not used the
-application framework of Tizen as is but used an adaptation of it.
+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.
-The basis is kept identical: the applications are distributed
-in a digitally signed container that must match the specifications
-of widgets (web applications). This is described by the technical
-recomendations [widgets] and [widgets-digsig] of the W3 consortium.
+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.
-This model allows the distribution of HTML, QML and binary applications.
+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 signatures of the widget packages
-This basis is not meant as being rigid and it can be extended in the
-futur to include for example incremental delivery.
+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).
Comparison to other frameworks
@@ -52,10 +50,10 @@ Comparison to other frameworks
### ostro
-Organisation of directory of applications
+organization of directory of applications
=========================================
-The main path for applivcations are: APPDIR/PKGID/VER.
+The main path for applications are: APPDIR/PKGID/VER.
Where:
@@ -63,26 +61,26 @@ Where:
- PKGID is a directory whose name is the package identifier
- VER is the version of the package MAJOR.MINOR
-This organisation has the advantage to allow several versions to leave together.
-This is needed for some good reasons (rolling back) and also for less good reasons (user habits).
+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.
Identity of installed files
---------------------------
-All the files are installed as the user "userapp" and group "userapp".
+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 the files.
+This allows any user to read files.
-Labelling the directories of applications
+labeling the directories of applications
-----------------------------------------
-Organisation of data
+organization of data
====================
-The data of a user are in its directory and are labelled using the labels of the application
+The data of a user are contain within its directory and are labeled using the application labels
Setting Smack rules for the application
=======================================
@@ -115,10 +113,6 @@ Not all user are able to run all applications.
How to manage that?
-
-
-
-
[meta-intel]: https://github.com/01org/meta-intel-iot-security "A collection of layers providing security technologies"
[widgets]: http://www.w3.org/TR/widgets "Packaged Web Apps"
[widgets-digsig]: http://www.w3.org/TR/widgets-digsig "XML Digital Signatures for Widgets"
--
cgit