Heyho,

as we talked already with some people about application management in
FSO we should now start discussing this in the public and define some
spec with all features we want in the end.

I will start here with explaining my ideas. First of all we need a
daemon doing all the application management. I think we should call it
simply fsoappd. The daemon manages all things we have in mind with
applications (btw. we should define what an application exactly is!).
There is the lifecycle management of applications. An application has
always a state which identifies the application as running, inactive or
whatever. To come from one state into another one there are possible
events (pause, hide, destroy, ...) which let the application change its
state (for example, the wm choose another app to become visible, so the
current app will get paused). We should define some rules an common
agreements all application should share so we can keep our application
management simple.

Furthermore we need a way applications can communicate between each
other. My idea here is to define common interfaces an application can
implement. For example the org.freesmartphone.Dialer interface. The
interface describes which DBus methods/signals should be implemented by
the app. If one app needs the dialer, it requests the dialer via the
fsoappd by a method called Request("org.freesmartphone.Dialer"). Each
application has a file appinfo.config file where it defines which
interfaces it implements. The fsoappd now searches through all
appinfo.config files (they should be stored by each application in one
common place) and tries to get one which implements the requested
interface. If there is more than one fsoappd looks in a priority list
which defines priorities for each interfaces (e.g. there are two
dialers, one provided by SHR and one by a independent developer. The
priority file now defines that the SHR dialer should be choose with
higher priority than the other one ...). Finaly fsoappd starts the app
for the requested interface in a not visible state. The app which
requested the other app to start can now chose what it wants to do with
the recent started app. Maybe it calles org.freesmartphone.Dialer.Show()
to show the dialer application so the user can enter a number and call
somebody.
The application interface should be defined as xml spec somewhere. If an
app does not implement any interface it should define at lest its name
in the format like org.mycompany.mygreatapplicationname. The
Request(...) method now looks even for an app called like the interface
name is set.

As the application interface implementation is available as xml we
should even provide a lib called libfso-app which implements all the
interface in vala or your favourite language so you can easily use it.

So far from my side. I have some more ideas, but will need some time to
write them down.

regards,
morphis

Btw. there is already a brainstorming page in the FSO wiki about
application lifecycle management:
http://wiki.freesmartphone.org/index.php/Brainstorm/LifeCycle and
http://wiki.freesmartphone.org/index.php/Brainstorm/Launcher

_______________________________________________
Smartphones-userland mailing list
Smartphones-userland@linuxtogo.org
http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/smartphones-userland

Reply via email to