The Project
Integrating Maemo+Hildon into the
Open Embedded (OE) build system, or rather taking the initial step
towards
the 'bigger picture' by creating a Maemo image in OE for the N800/N810
tablets.
Some Background
- Most of the popular distros for mobile devices/embedded platforms
have been supported in the Bitbake/Open Embedded framework.
Angstrom and Openmoko are the two rather sought-after ones. Maemo is
sort of 'lagging behind' here, since it hasn't been supported in
OE.
- Need for integration with OE has not only been expressed by
Maemo devels in the roadmap
proposed but also by significant
Maemo users eg.
Jalimo, who are currently overcoming
this in their own ways.
- Currently the org.openembedded.dev tree has some
osso and hildon presence under maemo and maemo4 nodes, generated in
2005 for the N770. Lack of support for the platform itself makes them
skewed and obsolete bb files.
This would be a good place to begin looking at the prior work done.
- Marcin Juszkiewicz
aka Hrw pointed out
that a basic poky
port (a Maemo image that boots into Hildon desktop) was done some
months back and it would be nice to have it brought into Open Embedded.
- Bringing basic support in the form of a couple of filesystem
images would not only pave the way for a stronger coupling between
Maemo and OE but also bring bitbake
to Maemo
users. IMHO, bitbake is more user-friendly for the occasional
enthusiast
wanting to only port packages
to his/her device as compared to Scratchbox which is more elaborate
since it allows for development and debugging as well.
Proposed Plan of Action
& Timeline
This
plan covers basic groundwork to be done in April and the project
time-frame being in the summer holidays: 1st May to 31th July i.e. 13
Weeks.
Pre-Project (April):
Get
thoroughly acquainted with the the
Maemo platform, set up the build with Scratchbox and be thorough with
the Diablo manual and the SDK to start with. Gain familiarity with
qemu-arm
for N800 - initial testing can be done using that.
Quickly
brush up knowledge of OE and bitbake
(through concurrent projects of interest -please see related work
done later on this page).
Review of
existing prior work (May - Week 1)
Check out
all the work done before (listed below).
See what can be built upon and what needs to be begun from
scratch.Also check generic dependencies available in the OpenEmbedded
tree.
Details:
Places to look at -
1. Poky port of Maemo
2. How angstrom can used as a base [I am a
little vague on this, since there is no angstrom port for N8x0, but
angstrom being the most widely supported in OE, this makes sense]
3. Checking out on developing upon Mamona
components [Lower layers - kernel, base libraries etc which are
available for N800 under Mamona can probably be directly used and built
upon.]
Babysteps (May - Weeks 2,3)
Getting the basic packages and
core-utils working, including std. libraries, video support. Leave out
the stuff in the lowers layers which isn't urgently required in
the higher layers - blueZ,alsa etc. Sysvinit,Busybox and base files to
be completed by week
4.
The exact way in which this is implemented (whether angstrom/mamona is
taken as a base etc) will depend on the groundwork done in weeks 1 and
2.
To-DO !! - The above
point needs more clarity. Check out the details of each now and correct
the timeline for weeks 2-4.
Milestone 1 (May
week 4, June
Week 1)
Get a basic console image ready. This would covering approximately 4
layers from the bottom in the
software
components table of Maemo. Apart from the work done in May, this
phase will need work on layer 3/4 - all the system services not covered
so far like DBUS,SQLdb etc. If possible , cover up the parts left out
in weeks 2-4, else get onto
the GUI part earlier.
Parallelly playing around
The work done till June Week 1 involves the lower layers, where I will
be 'drawing'/'picking up' a lot from already existing stuff. To ensure
maximum possible use of this time, a good idea would be to (suggested
by
Hrw) would be
to parallely get a basic x11-image running on one device (with Angstrom
as base), and start trying to add the Maemo components (upper layers of
the software stack - mainly the hildon UI) to the rootfs. This toying
around would help in the June end-July part when GUI parts begin)
The action begins(June Weeks 2-4)
Support for X, Matchbox,Gtk, GDk, and all other UI components below
Hildon (GTK+ inlcuded) on the software stack. Real work begins Gtk+ and
Hildon onwards. The focus is to be done with osso* and hildon*,
get basic hildon applications (basic widgets + file UI)running at
the end of this phase.Get started with the system UI and pending parts
in the
connectivity system.
To-DO !! - More
detailing needed here, in terms of break-up of the work. An extension
may be needed here.
(July Week 1-2)
Work on the middle of the Maemo stack - GConf,Gstreamer,Telepathy etc.
Hildon home applets,control panel, navigator etc to be taken care of.
Get started with the miscellaneous pending parts (applications,those
skipped in the previous phase)
(July Week 3-4)
Work on the top of the Maemo stack - Hildon Input, supported
Applications etc.
Checklist of Hildon packages to be ported and tested:
[List Pending]
Note:
The semester time (August week
1 to GSoC pencils down date) is to be
used in last minutes
touches, improvement in the documentation, setting up an exclusive site
if possible (an Angstrom like feed browser, but probably a lot more
modest version of that), getting feedback from the OE and Maemo
communities and iterative improvement.
Plans/Musings
The
Links
page includes a list of
places of existing/related work
and why I should be studying those,
another
page is a visual representation of the maemo-stack with a brief
overview of how I intend to deal with each component.
Discussions/Queries
These have been logged
here. Sincere thanks to Florian,Valerio
Valerio(aka VDVsx),Marcin Juszkiewicz
(aka Hrw), Sudharshan (aka Sup3rkiddo),Shakti Kannan (aka mbuf) for
bearing with my verbose queries and providing their insights.
The Applicant
Areas I am familiar with
- Decent knowledge of OE
and Bitbake internals.
- Reasonable knowledge of
Python: My intention is to implement custom classes in OE for
Maemo/Hildon, if
required,using the Python support to ensure cleaner ports.
- Good comfort levels with
Autotools/GNU build system.
- Familiarity with the code base
of GPE-based apps. and the
Matchbox framework (might help me while working with Hildon); though I
am not sure
if tweaking scripts here and there really counts.
Possible Weak Areas
- I have only recently started
gaining familiarity
with the Maemo platform - getting acquainted with its components,
spending time with the Diablo manual, and setting up the SDK and build
enviironment.
- Unsatisfactory exposure to
Hildon: Hopefully, my familiarity with Gtk, GPE and Matchbox will make
it
easier for me to gain firm ground
with Hildon and be comfortable with the dependency tracking.
Related previous work/
experience
- Used Open Embedded for machine AT91SAM9263EK, for building custom
Angstrom images. This was for developing the software for this
communication device.
[The machine in question is one of the ARM-9 based evaluation boards
sold by Atmel.]
- Familiarised myself with the working of OE internals, Bitbake
configuration files and toyed around with them.
- Used the HOPE software and ported it to the AT91SAM9263 using
Open Embedded and some manual cross-compile tweaks.
[Hope
is a software for augmented communication i.e an interactive GUI for
helping spastic kids communicate developed at the Indian Institute of
Technology. The UI is GTK based and it also relies on projects like
Festival/Flite for the sound part.]
- Ported the AT-SPI and CSPI accessibility libraries, in a vain
attempt to get the Gnome and accessibility supported version of Dasher
working on the EK board. The libraries were ported using both
OE/Bitbake and some ugly tweaks with Autotools.
- Ported a reduced version of Dasher to the EK
board, again using Bitbake + custom tweaks.
[As of July 2008, when I was
working on this,gpe-dasher recipe was available in the OE tree but it
was
obsolete. I had
reported this to pb_ on IRC and the
SRC_URL was updated, but due to compile-time
errors, the recipe was probably
lifted off , since
I
dont see it now.For my own
work,
I used
an earlier revision of
gpe-dasher, got it partly compiled and
made some
tweaks to the autoconf processes to
get a minimal
dasher-core working, and
customised it to pipe the output to a file which
flite could read
out.]
- Currently working on a custom ncurses based package for distros
Angstrom & OpenMoko in OE for the OpenMoko GT0A2 FreeRunner.
About Myself
- Name :
Kirtika
Ruchandani
2nd year student @ CSE Dept.
Indian Institute of Technology, Madras
- Contact
: kirtibr [at]
gmail
[dot] com
- Other internet foot-prints
of mine : MyCoursesPage
- (Not updated) More info
about me : AboutMe
- My
CV:
Resume
- Other commitments for this summer : None if I work on this
project.