Minimal kdelibs on embedded platforms
Inge Wallin
ingwa at kogmbh.com
Thu Nov 19 18:38:31 GMT 2009
As some of you may know, KO GmbH, the company I work for, has helped Nokia
port KOffice to Maemo and their new telephone n900. I think this is only the
first example of where KDE applications and maybe also (parts of) the desktop
will be used in embedded environments with other constraints than the normal
desktop.
One of the problems we have encountered was memory consumption and flash disk
space. Right now, the subset of 6 libraries from kdelibs we are using have a
footprint of a little over 10 MB. We were told that this was far too much and
that we had to shrink it down a lot. This is what I hope to start a
discussion about.
As far as I can see, we can take 3 different approaches to lessen the kdelibs
impact:
1. Make the application in question not use kde technologies at all and
instead make it a pure Qt application. This would be a little like Marble in
kdeedu that can be compiled both with a qt-only option to cmake or a kde
option. If there is an existing application that is already using much of
kdelibs, it's more difficult but still doable.
2. Check the application in question and see exactly which part of kdelibs it
is using and then create a tailor-made library with only exactly those classes
that are used directly and indirectly.
3. Create a general kdelibs which still keeps the same API as the normal
kdelibs, but which is much leaner and therefore also has much less features.
In this case, we would have to create alternative classes with the same API,
for instance a kde file dialog that just inherits QFileDialog and does nothing
else. All of KIO would disappear at this point, which would lose us some nice
features but save a lot of memory.
I will not touch approach 1 in this mail. KO has started with approach 2 for
KOffice. This approach is probably also usable if somebody wants to create
stand-alone application packages for environments like Windows or MacOS X.
We have also combined this with a little of approach 3, so that we can achieve
the absolute minimal kdelibs that fits the exact needs of KOffice on the device.
The flip side of this is that no other KDE application will have much use of
this library. Any other kde application would have to redo this work for
itself. Therefore it is not packaged as kdelibs, but as libkok -- KOffice
Kde(libs).
What I would like to discuss a bit more is approach 3. I see a lot of
potential for kde technology on many different kinds of platforms. We have
already today a plasma containment for netbooks, and I see no reason why a
mobile phone couldn't be next. Even more interesting are running (variations
of) kde applications on these platforms. Already today several KDE
applications have two different UI's: the normal desktop one and a plasmoid.
One that comes to mind is parley, also from kdeedu. So a third one with, say,
a touch screen interface is not a far fetched thought.
To create a good kdelibs implementation with lots of flexibility and a span of
features/resource needs we need some design. I imagine that at least the
following needs to be done:
* Some library reorganization. I think there are some classes that should
move between the libraries to reduce interdependencies.
* An idea of which features are necessary and which are possible to cut away.
And then a clean way to build the libraries with all or parts of the removable
modules disabled.
And maybe more. If this is going to become a successful venture we need to
cooperate and make the embedded kdelibs as important to us as the desktop is.
Thoughts?
-Inge
More information about the kde-core-devel
mailing list