Hi,

One of the disadvantages of MeeGo is that unlike Android and other
OS'es, we don't provide a way for developers to provide one MeeGo
compliant RPM for typical MeeGo applications+extensions that will run
on all MeeGo devices, no matter if it is IA, ARM, MIPS. I'd like to
spark a technical (+ compliance) discussion on if we can somehow make
this reality.

I'd like a world where it matters less what architecture a MeeGo
device runs, or even specific optimization flags/architectures not in
line with what meego.com builds when it comes to compliance, allowing
more flexibility in hardware choice and hardware directions over the
long term.

Opinions that this isn't feasible is more than welcome :) Since we're
all about fast innovation now, here's one idea to think about.

With the news of Qt5 the new future application model[1] is clear. It
motivates that 'While offering all of the power of native Qt using
C++, the focus should shift to a model, where C++ is mainly used to
implement modular backend functionality for Qt Quick.'. This will
cause a development model for MeeGo API apps along lines of:

* QML applications, platform agnostic, distributed as 'noarch' RPM
packages. Contains QML/js files, resources, etc.
* Qt Quick modules, platform agnostic, written in QML/js, distributed
as 'noarch' RPM packages (think widget sets, etc)
* C++ Qt Quick modules, platform specific, distributed as
i586/armv7hl/mips/etc RPM packages. Contains compiled native code
specific to a target processor. Typically shared objects.

As you can see, we're 2/3 there to where it essentially doesn't matter
what the underlying device runs, except that it provides certain
APIs/runtimes for the QML apps to use. Having a MeeGo Core that we can
optimize towards specific use cases and hence a wider market for MeeGo
to be used in.

I'd like to propose that we go to a model where we have one MeeGo API
SDK with one toolchain that targets the MeeGo platform, no matter the
hardware architecture. This means, take C++ Qt Quick modules and build
them into a platform agnostic format (intermediate language) that is
then translated by an application store or by device itself into
native code, which is then run on the device.

Google has already been working on a similar approach for their Native
Client work, based on the LLVM intermediate format[2] and I think this
is plausible to do for MeeGo too in a similar fashion in a short
timeframe. They have been working on shared objects as well[3].

Now, there are some issues to be discussed and I'll list some of them:

1) Performance loss - will there be any noticable loss in application
performance? Will it be mitigated by the fact the MeeGo platform + Qt
stack is optimized to the target as that's where the real work goes on
usually?
2) Will ARM or IA/Atom specific optimizations be lost if LLVM is used?
3) Licensing issues (GPLv3/LLVM license/etc?)
4) Security implications/signing issues/etc
5) Obfuscation and reverse engineering implications of IL being used.
6) Compliance implications
7) Hardware specific extensions

And last of all:

Is it plausible to have a C++ extension in LLVM intermediate language
(targetted towards a fictional machine description) that links without
issue into the native Qt stack across architectures?

Let me hear your thoughts - I think this could be a significant platform win.

BR
Carsten Munk

[1] http://labs.qt.nokia.com/2011/05/09/thoughts-about-qt-5/
[2] http://nativeclient.googlecode.com/svn/data/site/pnacl.pdf
[3] http://www.chromium.org/nativeclient/pnacl
_______________________________________________
MeeGo-dev mailing list
[email protected]
http://lists.meego.com/listinfo/meego-dev
http://wiki.meego.com/Mailing_list_guidelines

Reply via email to