rkirti's makeshift page -

Google Summer of Code 2009 Proposal

Maemo-OE integration

  main | current status |useful links |stack



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)
:
  • [April Week 1-2]   
     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.
  • [April Week 2 end] 
    Quickly brush up knowledge of OE and bitbake (through concurrent projects of interest -please see related work done later on this page).
  • During the Project Time:
    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.