Hi,

I'm new to Maemo, and to developing for small/embedded devices in general. I'm trying to wrap my head around the whole concept, especially the 'killable' apps that Maemo enables. I'm trying to figure how long-running but mostly ignored apps like IM clients fit into the whole picture. Sure, you can just mark them killable=false, but that seems inefficient. So I'd like someone to tell me what's wrong with the following scenario:

Instant Messaging Application, designed from the ground up for Maemo, architected in 3 or 4 parts:

Backend: No GUI but uses libosso, handles all the connection details, buddy list, etc. Stores incoming IMs and uses auto-save to persist them until they're seen. Auto-started on if-up if so configured, or launched by dbus from the front end. killable=false.

Frontend: Only GUI, receives dbus messages from backend and displays them to user. Also handles management and configuration of the accounts and buddy lists. killable=true. Launched by maemo-launcher, if that saves memory/time.

Statusbar and/or home applet: Displays some sign that there are (not) new IM's that haven't been shown. launches frontend on click/ doubleclick/whatever.

So what am I missing? The most likely is that process overhead overshadows the memory saved by only running the GUI portions when needed. And the obvious complexity of the system. What else?

As an approximation, I did run the example googletalk VOIP/IM commandline client shipped with google's libjingle and when
connected to google talk and having buddylist loaded with no VOIP
call going on, it took some 2.5Megs on ARM as resident size.

Rough estimate I know, but gives some idea about the memory requirements
of an IM running without GUI.

To eliminate the process overhead, one could link the libjingle
with a StatusBar plugin. Then the parts of the IM that are
always running, would run in the same process with the desktop. :-)

Of course it could then also crash the desktop too...

But in this case one could use the plugin to show dialogs on
incoming messages/calls etc. Then when needed, just launch
the actual GUI.

Might work, but does not have a beautifull architecture as
your idea about a backend running.


Br,
Sampo
_______________________________________________
maemo-developers mailing list
maemo-developers@maemo.org
https://maemo.org/mailman/listinfo/maemo-developers

Reply via email to