Mer
Contents |
Organizational
"Mer" is an experimental project, where an attempt of "reconstructing" the Maemo platform is done, based on the proposal on http://wiki.maemo.org/Maemo_Reconstructed. Mer means ocean in french, "more" in danish, etc..
Launchpad page
Platforms targeted
- jaunty-armel
- jaunty-i386
Repositories and branches
Repositories at http://trac.tspre.org/mer/<arch>
- alpha:
Branching from Maemo packages
- get bzr-svn, bzr
- bzr branch <svn-url>
- bzr push bzr+ssh://username@bazaar.launchpad.net/~username/m-r/<package name>
Builder system
Status: http://merbuilder.jaiku.com
Requests: http://jaiku.com/channel/merbuilder
Authorized users (identified by their login) can ask builder by sending <platform regexp> <bzr branch url> to start building on archs matching the platform regexp. For example, jaunty-* lp:~carsten-munk/m-r/glib
Build system
- dell1-qemu-arm: pentium4 handling jaunty-armel on a qemu-system-arm. Location: Århus, DK
- dell1: pentium4 handling jaunty-i386. Location: Århus, DK
System base consists of (with dependancies)
- Minbase from 'platform'
- + wget, apt-utils, udev, bash, dash, module-init-tools, findutils, gzip, hostname, ifupdown, net-tools, procps, sed, tar, coreutils, grep, mount, bsdutils, debianutils, vim-tiny, mawk, mktemp, sysvutils, iputils-ping, psmisc, time, login, passwd, udhcpc, wide-dhcpv6-client
- clinkc0, dbus, xorg-xserver, bluez-utils, dosfstools gconf2 hal libgupnp-1.0-0 libsmbclient mtools pulseaudio samba-common
Image goals to build using Mer
- N8x0 platform QEMU image
- Example "Vendor" image, N8x0 platform with HW support (wifi, GPS, Adobe Flash, gstreamer codecs), scripts for building
- x86 images (tar.gz)
- Pandora images
Roadmap
Iteration 1 (done)
Idea: Build as much of Maemo trunk we can, adapt to Ubuntu, chaos coding, microdocument through Jaiku (http://jaiku.com/channel/reconstructedPOC), and make it work and run. Name was M-R PoC.
Results were 123mb flash for minimal ubuntu base system, Xorg omapfb driver, tslib hildon on top. Possible to do things like:
- http://img.photobucket.com/albums/v119/JohnX/hildon-desktop-quicknote-menuxwd.png
- http://img.photobucket.com/albums/v119/JohnX/hildon-desktop-gqviewxwd.png
A choice was made to restart and do things by the book. We originally based on Mojo Handhelds Ubuntu port to ARM.
Iteration 2: Mer Alpha
Mer: Provide a experimental system for Maemo community use, as a playground to try out new technologies and ideas on. Give community a voice in system architecture and continued development of the Maemo platform post Fremantle. Give the community ability to give documented, researched input to the development process of Maemo. Mer should be cross-platform, both for i386, armel, and not rely on running on specific devices.
Upstream distribution:
Ubuntu 'Jaunty' for ARM and i386. Experiment with VFP/optimized versions (use of hwcap) for libraries that would benefit from it. Maemo trunk
Development process:
Use of launchpad.net (http://launchpad.net/m-r). Everything must be done in bzr branches and published in the m-r project on launchpad. Use of builders (http://merbuilder.jaiku.com), which only accepts bzr branches and source packages and are primary uploaders to repository. Packages must compile in both i386 and armel ideally.
Microdocumentation is still done in jaiku, http://jaiku.com/channel/reconstructedPOC
Repository
http://trac.tspre.org/mer/jaunty as primary repository. Mirrors should be added.
Phase 1: Infrastructure setup
- Set up launchpad.net project (done).
- Set up APT repository (done)
- Set up i386 and armel builders (qemu and or beagleboard), which relies on clean buildd chroots (done)
Builder works by first attempting to generate a source package from a bzr branch (after getting build dependancies) in a buildd chroot, to make sure the packages are sane. Then it builds i386 and lets this do the binary i386 and binary indep packages. Then it lets the armel builder(s) do their job on compiling the package. This way we have an early warning if a package does not compile at all instead of wasting hours on waiting for armel builder to fail.
Phase 2: Establishing base system
- Create bzr branches for Maemo trunk packages and push them to launchpad.
- Compile these for i386, armel (first glib, then gtk, then .. ending with a full hildon desktop, python-desktop), and builder will upload to repository.
- Establish which dependancies applications targetting the Maemo platform, use, that are not OSS or dbus wrappers. What are the portability problems of the Maemo platform.
- Establish system architecture and abstractions (DSME, MCE, HAL, OHM, etc), must take into consideration the cross-platform nature of Mer.
- Establish what constitutes stable packages for inclusion into beta/testing
- Establish what our relation to Maemo is, - Maemo council as governing body?
- Establish how Maemo packages conflict with desktop elements of upstream. (libgnomevfs, maemo GTK), and how these can work together.
- Establish how close we are to being like Maemo, by trying to build packages from Extras (mer-extras?)
- Work on image builders for the following targets:
- N8x0 tar.gz (compat with N8x0 bootmenu-svn initfs), fully open source
- N8x0 tar.gz (compat with N8x0 bootmenu-svn initfs), with value adders such as wifi/bluetooth firmware drivers, hald-addon-bme, gps driver, adobe flash, .. other apps, to show the ability of differentation
- N8x0 jffs2 rootfs (for QEMU-N8x0 emulation)
- BeagleBoard jffs2 rootfs
- i386 tar.gz (targeting Intel D945GCLF2 board)
- 770 tar.gz (compact with bootmenu-svn initfs), installable on RS-MMC.
Phase 3a: User interface
- Theming (Plankton is one theme, but what other exists that are redistributable)
- Icon sets (open license, redistributable)
- Control panels
- Translations?
- Systemui (normally seen when charging, or when pressing power button, or when you're locking your screen). Powerlaunch will be used for this.
- Experimental interactions? TV screen and wiimote?
- Tech demos: Mer on Beagleboard, netbook, n8x0, 770, Pandora, Zaurus, x86+TV screen
Phase 3b: Experimental system use
- Rescue menu & bootmenu
- Clone-to-SD
- Unionfs use
- USB networking, Bluetooth PAN
- NTP synchronization
- .. others