[QtonPi] QtonPi SW stack
rajiv.ranganath at nokia.com
rajiv.ranganath at nokia.com
Fri Feb 3 11:14:02 CET 2012
Hi All,
We're getting closer to be able to ship Raspberry Pi as soon as it
becomes available to QtonPi community.
Now that Raspberry Pi Foundation has started blogging details around
libraries, codecs and kernel [1] [2], I wanted to share with you some
thoughts on were we are with things and where we would like to go.
We *really* appreciate your comments and feedback.
Brian and myself will be at FOSDEM and we'll be covering some of this in
our presentation on Saturday [3]. If you are going to be there, lets
plan to get together and discuss more.
Following are things that are now set up, open and running,
- QtonPi Mailing List (obviously!)
- Wiki, with some initial documentation on cross-build tools [4]
- Gerrit Codereview / Gitorious [5] [6]
- QtonPi toolchain (under the hood you'll find a Linaro GCC 4.5.4
toolchain)
What we've _not_ yet posted are,
- Raspberry Pi specific binaries (OpenGL libraries, Bootloader, Codecs
etc.,) We're waiting for Raspberry Pi Foundation to make the release.
- QtonPi platform image (Fedora based for now, see below!)
- Qt 5 Source RPM. In order to build Qt 5 you'll need access to header
files from Broadcom's OpenGL ES library.
- Documentation on how to get toolchain + sysroot + Qt Creator working
to develop apps
We hope to have this ready before Raspberry Pis start arriving at your
doorstep.
I would now like to share with you our _current_ thinking on QtonPi SW
stack. This is just a starting point for a conversation, and what we
eventually end up doing will depend largely on all of us - i.e., QtonPi
community.
Before getting started, I want to get something out of the way.
The Qt Project (and Qt Essentials in particular) will always aim be
cross-platform and this includes getting Qt 5 well supported and
integrated into as many Linux Distributions (Embedded and Desktop) as
possible. More widespread Qt 5 becomes, better it is for all of us!
With QtonPi, we want to be an innovation environment where we can try to
do interesting things with Qt 5 + Embedded Linux, which would be
somewhat difficult to do under the constrains of a more established
distro project. Some examples of this might be,
- Having to worry about supporting other hardware platforms besides
Raspberry Pi (and probably ending up doing an equally bad job on all
platforms).
- Thinking about legacy X11 App Support or Endlessly justifying why Qt
is better than other toolkits out there etc., etc.,
With the disclaimer out the way, I'm going to be breaking down QtonPi
stack into three layers. These layers exist because we can then have
deeper conversations around specific topics in the SW stack that
interests us and for our community to self organize around areas that
we're most passionate about.
1. Base Layer
2. Middleware
3. Apps
1. Base Layer
-------------
Base Layer essentially consists of everything above the hardware
providing all the enablers to run our middleware. This includes -
boot loader, codecs, kernel, root filesystem, RPM packages, compiler,
build environment, etc.,
2. Middleware
-------------
Our middleware consists of Qt 5 (plus additional optional modules where
it makes sense) and a Qt Creator based QtonPi SDK for App Creation along
with all the community documentation we can put together.
That's it! Nothing more, nothing less.
The programming models that we will support would be,
- Qt C++
- JavaScript
For UI, you can use,
- QML (or)
- HTML (though QtWebKit)
3. Apps
-------
Interesting Apps is something that we hope our community will create, so
that we can build a better Middleware and Base Layer.
We might have scenarios where we might not be able to provide all the
APIs needed for folks trying to do some really cool Apps with QtonPi.
We should however make it easy both at the Base Layer and Middleware for
folks to be able to add their own APIs where necessary and provide all
the freedom for App Developers innovate.
Now, some thoughts on what we might want to aim for in terms of
releases. Applying my immense creativity, I'll refer to them as
Release-0, Release-1, Release-2
Release-0
---------
We should and will try to get Release-0 out *asap*. For Release-0, we
would include,
* Base Layer
- Fedora RPM Packages plus some additional Raspberry Pi Specific
packages
- Linaro GCC 4.5.4 toolchain
- QtonPi Cross-build tools
* Middleware
- Documentation on how to get toolchain + sysroot + Qt Creator working
to Develop Apps
- Qt 5 running on full-screen EGFS mode. We'll probably include the
code-freeze version of Qt 5 and update it as we move along.
Release-1
---------
Once we get Release-0 out of the way, we can start working towards
Release-1, maybe sometime in spring this year.
Release-1 probably will be the first release where we could start seeing
some of the innovations that we spoke about earlier.
* Base Layer
- We plan to introduce QtonPi based on OpenSuse packages, with some
interesting properties.
The OpenSuse QtonPi packages will be commercially friendly, which
means that we'll avoid integrating any GPLv3 packages, etc., This is
to give QtonPi community a starting point if they want to apply the
stack in commercial projects. Of course the usual disclaimers
apply - you're advised to conduct your own due-diligence, No reps,
warranties etc.,
Secondly, it'll be super upstream friendly. Our goal is to upstream
as much as possible, and only when we can't upstream something (for
e.g., due to upstream using a different license) maintain those
changes in QtonPi project.
So, Why OpenSuse and why _not_ X, Y, Z (where X, Y, Z = your
favorite distro)? We realized this could make some folks unhappy
(including me!), because our favorite distro did not get chosen. The
decision was based largely on what we're able to contribute with a
reasonable level of certainty, while preserving the two properties
of being commercially and upstream friendly.
- Build Environment - We'll introduce a build environment that can
handle both native cross-build and self-hosted builds that are OBS
friendly.
- Updated Compiler - Move to a GCC 4.6 compiler
- Introduce the new process manager (a project that'll be Open Sourced
soon)
- Qt-JsonDB integration to support App Development
* Middleware
- QtonPi SDK delivered as an installer with integrated toolchain +
community documentation
- Auto configuration/discovery of Raspberry Pis from QtonPi SDK
- Qt 5 running (still) on Full Screen EGLFS mode
Around this time or even sooner if you guys/gals prefer, I think we should
start discussing about how to handle two somewhat complicated, and
interrelated issues.
- Support for Multimedia
- Support for Multi-Process Qt/Qt Quick Apps
Raspberry Pi foundation would be making available Broadcom's OpenMax
libraries, but at the moment, the somewhat preferred way for Qt
Multimedia to integrate with hardware is through GStreamer and Pulse
Audio. Then there is the issue of rendering video directly onto an EGL
texture. This is something that we'll need for both Qt and QtWebKit.
In order to do Multi-Process Qt/Qt Quick Apps, we'll need to be able to
share textures between processes. This has dependencies with the Kernel
and also Broadcom's OpenGL libraries.
We can hack around Qt to get some of this working. However, my
preference would be do this the right-way. In our QtonPi community,
we've some of the best people on the planet who know how to make this
work, so we should aim high, set an example, and push the boundaries for
graphics and multimedia integration.
Release-2
---------
Release-2 will probably be a summer release hopefully around the
same time as we do our first Qt 5 release.
A lot will depend on how much progress we're able to make but following
might be a good wish-list to aim for.
* Base Layer
- Migrate to a kernel version that supports CMA
- Update or add packages to support Multimedia and Multi-process Qt/Qt
Quick Apps
- Provide an example compositor environment based on qt-compositor and
process manager
* Middleware
- Update QtonPi SDK to include the release version of Qt 5
- Improve community documentation
After Release-2, we can probably consider doing a release based on Qt
project release schedule. We can discuss/plan for it during Qt
Contributors Summit.
Thank you for reading this far and please let us know what you think,
where and how you would like to contribute.
Best,
Rajiv
[1] http://www.raspberrypi.org/archives/592
[2] http://www.raspberrypi.org/archives/574
[3] http://fosdem.org/2012/schedule/event/intro_to_qtonpi_project
[4] http://wiki.qt-project.org/QtonPi/Contribute#Cross-build_tools
[5] http://qt.gitorious.org/qtonpi/mt-cross-tools
[6] http://codereview.qt-project.org/#admin,project,qtonpi/mt-cross-tools,info
More information about the QtonPi
mailing list