Editing Maemo Reconstructed

Warning: You are not logged in. Your IP address will be recorded in this page's edit history.
The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then save the changes below to finish undoing the edit.
Latest revision Your text
Line 1: Line 1:
-
{{ambox|text=[[Maemo Reconstructed]] was a proposal that eventually led to the '''Mer''' project. You can find out more about Mer on its Wiki page: [[Mer]], where you can also download flashable images and get involved in the project.}}
 
-
 
Our goal is to bring together Nokia and community developers who have an interest in the Maemo platform and reach a vision of the future Maemo system architecture that's satisfying to both Nokia and the community.
Our goal is to bring together Nokia and community developers who have an interest in the Maemo platform and reach a vision of the future Maemo system architecture that's satisfying to both Nokia and the community.
-
These are the low level ''technical'' system goals (use of booting process, busybox/coreutils, kernel features etc.), and not high level stuff like "Ogg support" or "open source everything". The process is called Maemo "Reconstructed" to indicate we can remix parts from and disassemble the current Maemo platform and augment it until we get a vision that would be fitting as the future of the Maemo platform.
+
These are the low level ''technical'' system goals (use of booting process, busybox/coreutils, kernel features etc.), and not high level stuff like "Ogg support", or "open source everything". The process is called Maemo "Reconstructed", as to indicate we can remix parts from and disassemble the current Maemo platform and augment it until we get a vision that would be fitting as the future of the Maemo platform.
If you have anything to contribute that is constructive criticism, or alternate proposals for parts of the proposal, please add it to the [[Talk:Maemo Reconstructed|talk page]]. Again, this is not the place for discussion on high-level topics like A2DP support and finger-friendliness. These are low-level platform issues. If you want to shoot down part of the proposal, document your findings on why it is not possible or should not be done and discuss it on the talk page.
If you have anything to contribute that is constructive criticism, or alternate proposals for parts of the proposal, please add it to the [[Talk:Maemo Reconstructed|talk page]]. Again, this is not the place for discussion on high-level topics like A2DP support and finger-friendliness. These are low-level platform issues. If you want to shoot down part of the proposal, document your findings on why it is not possible or should not be done and discuss it on the talk page.
Line 15: Line 13:
Thanks to Ryan Abel for proofreading and to other #maemo members for comments.
Thanks to Ryan Abel for proofreading and to other #maemo members for comments.
-
 
-
A small bunch of individuals are working on a proof of concept of this platform, can be followed on http://jaiku.com/channel/reconstructedPOC and on irc.freenode.net #maemo.
 
== The Maemo "Reconstructed" platform ==
== The Maemo "Reconstructed" platform ==
-
The purposes of Maemo "Reconstructed" are to make Maemo a general platform for tablet devices (including Nokia devices), to make it more developer-friendly, and to bring it into alignment with standard Linux distributions. It is also within the philosophy that the platform should be "hackable", a main selling point with open-source friendly hardware.
+
The purpose of Maemo "Reconstructed" is to make Maemo a general platform for tablet devices (including Nokia devices), to make it more developer-friendly, and to bring it into alignment with standard Linux distributions. It is also within the philosophy that the platform should be "hackable", a main selling point with open-source friendly hardware.
We should stop seeing the tablets as strictly under-powered embedded systems, and see them for what they really are—powerful, power-efficient, economical handheld computers. Not simply hopped-up electronic calendars, but real computers that are capable of almost as much computing as a laptop.
We should stop seeing the tablets as strictly under-powered embedded systems, and see them for what they really are—powerful, power-efficient, economical handheld computers. Not simply hopped-up electronic calendars, but real computers that are capable of almost as much computing as a laptop.
Line 28: Line 24:
There should exist scripts and documented methods for creating a Maemo "R" image that can be adapted to any setup or device. It should be easy to build your own jffs2 image.
There should exist scripts and documented methods for creating a Maemo "R" image that can be adapted to any setup or device. It should be easy to build your own jffs2 image.
-
Development of the Maemo "R" platform (non-device-specific and non-vendor-specfic differentiation) should be done in the open, with public SCM, bugtrackers and [[Mer/Blueprints | blueprints]]. This way, developers can adjust their applications to later 'stable' releases and know what is coming regarding the Maemo API.
+
Development of the Maemo "R" platform (non-device-specific and non-vendor-specfic differentiation) should be done in the open, with public SCM, bugtrackers and blueprints. This way, developers can adjust their applications to later 'stable' releases and know what is coming regarding the Maemo API.
-
One of the goals of the Maemo "R" platform is that it should be easy to port an existing desktop application by hildonizing it and adjusting to the form factor of a tablet, without having to deal with platform particularities like what features the busybox version of a tool uses or other factors. A secondary goal is to have a platform that is flexible enough to encourage experimentation and development for tablets.
+
One of the goals of the Maemo "R" platform is that it should be easy to port an existing desktop application by hildonizing it and adjusting to the form factor of a tablet, without having to deal with platform particularities like what features the busybox version of a tool uses, or other factors. A secondary goal is to have a platform that is flexible enough to encourage experimentation and development for tablets.
== Kernel ==
== Kernel ==
-
For the Maemo "R" platform specific kernels do not matter, but it may be relevant to discuss certain features that would be nice to have for the platform to work correctly.
+
For the Maemo "R" platform specific kernels does not matter, but it may be relevant to discuss certain features that would be nice to have for the platform to work correctly.
== Boot process ==
== Boot process ==
Line 87: Line 83:
** '''Advantages''': We now have a full ubuntu base system on our tablet. We've got Upstart for for free without any development. We have a base we can easily work with upstream on, as we base on typical packages. The mojo project also gets to have instant value to the Nokia/Maemo development and Nokia gets a return from the research investment in it.  
** '''Advantages''': We now have a full ubuntu base system on our tablet. We've got Upstart for for free without any development. We have a base we can easily work with upstream on, as we base on typical packages. The mojo project also gets to have instant value to the Nokia/Maemo development and Nokia gets a return from the research investment in it.  
** '''Discussion''': ''Is busybox really needed on a tablet''? In initfs, sure, but in the actual system? Having sane coreutils and bsdutils (and debconf) -really- helps porting. Now that dash exists, is there a reason for busybox as sh? This avoids any conflicts with coreutils, bsdutils etc if they are going to be used.  
** '''Discussion''': ''Is busybox really needed on a tablet''? In initfs, sure, but in the actual system? Having sane coreutils and bsdutils (and debconf) -really- helps porting. Now that dash exists, is there a reason for busybox as sh? This avoids any conflicts with coreutils, bsdutils etc if they are going to be used.  
-
*** Following experiment was done:
+
*** A simple (which may be unfair and inaccurate) experiment with dpkg-deb -x of procps, coreutils, util-linux, bsdutils into a path, and then mkjffs'ing it after stripping man pages, locales and info pages, 2.2mb flash, and with busybox getting same treatment, 300k flash.
-
**** These packages dpkg-deb -x'ed into a path: '''findutils'''_4.2.32-1ubuntu2_arm.deb '''gzip'''_1.3.12-3.2_arm.deb '''hostname'''_2.94_arm.deb '''ifupdown'''_0.6.8ubuntu8_arm.deb '''module-init-tools'''_3.3-pre11-4ubuntu5_arm.deb '''net-tools'''_1.60-19ubuntu1_arm.deb '''procps'''_3.2.7-9ubuntu1-mojo0_arm.deb '''sed'''_4.1.5-5_arm.deb '''tar'''_1.19-3_arm.deb '''coreutils'''_6.10-3ubuntu2_arm.deb '''grep'''_2.5.3~dfsg-3_arm.deb '''mount'''_2.13.1-5ubuntu1_arm.deb '''bsdutils'''_2.13.1-5ubuntu1_arm.deb '''dash'''_0.5.4-8ubuntu1_arm.deb '''debianutils'''_2.28.2-0ubuntu1_arm.deb '''vim-tiny'''_7.1-138+1ubuntu3_arm.deb '''mawk'''_1.3.3-11ubuntu2_arm.deb '''mktemp'''_1.5-5ubuntu2_arm.deb '''sysvutils'''_2.86.ds1-14.1ubuntu45_arm.deb '''iputils-ping'''_20071127-1_arm.deb '''psmisc'''_22.6-1_arm.deb '''time'''_1.7-21build1_arm.deb '''bash'''_3.2-0ubuntu16_arm.deb '''login'''_4.0.18.2-1ubuntu2_arm.deb '''passwd'''_4.0.18.2-1ubuntu2_arm.deb
+
*** Is ''1.9mb'' flash so much to sacrifice for making porting for Maemo a matter of hildonization and platform-centric things, instead of hunting debconf, busybox incompatibilities and such for weird libraries you never heard of?
-
**** Stripping man pages, locales and info pages. 7.6mb uncompressed ''3.8mb'' jffs2 flash. And with busybox getting same treatment, 300k flash.
+
-
*** Is ''3.5mb'' flash so much to sacrifice for making porting for Maemo a matter of hildonization and platform-centric things, instead of hunting debconf, busybox incompatibilities and such for weird libraries you never heard of?
+
*** Are there any direct and noticable differences in performance that justifies the use of busybox, and do they justify the lessened ability of being able to port to Maemo without hassle?
*** Are there any direct and noticable differences in performance that justifies the use of busybox, and do they justify the lessened ability of being able to port to Maemo without hassle?
-
*** Result: It should be possible to have busybox in Maemo images instead of coreutils and others, but the busybox package should then be able to co-exist with coreutils. If a package needs coreutils, it should depend on coreutils which will then take over key functions. Maybe a system of depending on coreutils | busybox-coreutils, could do the trick, for the packages that work fine with busybox coreutils.
 
** '''Problems''': For some reason the mojo people decided to divert from Debian arch notation and call their ARM EL distribution arch type 'arm', not 'armel', which is in wide use with Maemo.
** '''Problems''': For some reason the mojo people decided to divert from Debian arch notation and call their ARM EL distribution arch type 'arm', not 'armel', which is in wide use with Maemo.
-
* '''Upstart'''
 
-
** Part of Fremantle roadmap, and with the integration of alarmd functionality (Events generated at timed intervals or scheduled times), Upstart could replace alarmd.
 
* '''DSME (Device State Management)'''
* '''DSME (Device State Management)'''
** Basic device/Mobile service DSME should be open sourced, but may load modules of hardware-specific closed source modules (CAL access, watchdog kicker, etc), and DSME protocol should be documented and the modules associated with it (CAL access seems to be a touchy subject though).
** Basic device/Mobile service DSME should be open sourced, but may load modules of hardware-specific closed source modules (CAL access, watchdog kicker, etc), and DSME protocol should be documented and the modules associated with it (CAL access seems to be a touchy subject though).
Line 113: Line 104:
* '''Udev'''
* '''Udev'''
** Part of Maemo platform already, and useful for desktop and embedded systems.
** Part of Maemo platform already, and useful for desktop and embedded systems.
-
* '''Ke-recv'''
+
* '''Ke-recv & Alarmd'''
-
** Some daemon representing this (Kernel event handling + scripts, maybe OHM?)
+
** Some daemons representing these (Kernel event handling + scripts, maybe OHM?), and a API for setting device wakeups. Maybe even a cron-like interface could be interesting.
* '''GConf'''
* '''GConf'''
** Central repository for system-wide configuration.
** Central repository for system-wide configuration.
Line 134: Line 125:
* '''Xorg'''
* '''Xorg'''
** Part of Fremantle roadmap.  
** Part of Fremantle roadmap.  
-
** Device-specific Xorg drivers (omap for N8x0's, other devices has other drivers, etc.). It should not be a requirement which Xorg driver is in use, but the capabilities of this.  
+
** Device-specific Xorg drivers (omap for N8x0's, other devices has other drivers, etc.). It should not be a requirement which Xorg driver is in use, but the capabilities of this.
-
** In the case of OMAP framebuffers, work has been done at http://gitweb.pingu.fi/?p=xf86-video-omapfb.git;a=tree for a Xorg driver for both BeagleBoards and N8x0, packaged for Debian at http://nchipin.kos.to/deblet/
+
* '''GStreamer'''
* '''GStreamer'''
-
** Part of Maemo platform as of now, ideal for codecs, include vendor-specific proprietary ones.
+
** Part of Maemo platform as of now, ideal for codecs, include vendor-specific propertiary ones.
* '''PulseAudio'''
* '''PulseAudio'''
** Part of [[Task:Maemo roadmap/Fremantle]]. Optional part of platform? What does Maemo really target of device types?
** Part of [[Task:Maemo roadmap/Fremantle]]. Optional part of platform? What does Maemo really target of device types?
Line 147: Line 137:
** The base graphical framework of Maemo. This GTK version should be Maemo 'GTK', but the following things should hold true for the Maemo GTK.
** The base graphical framework of Maemo. This GTK version should be Maemo 'GTK', but the following things should hold true for the Maemo GTK.
*** Maemo GTK is designed for power-saving low-freq devices. It is designed for touchscreens and with memory conservation in mind
*** Maemo GTK is designed for power-saving low-freq devices. It is designed for touchscreens and with memory conservation in mind
-
*** It should not alter its behaviour in such a way that a certain window manager or desktop environment is needed to run applications using this toolkit. If this change of behaviour is needed, the toolkit should detect the WM/DE and enable the behaviour if it's Hildon+Matchbox.  
+
*** It should not alter it's behaviour in such a way that a certain window manager or desktop environment is needed to run applications using this toolkit. If this change of behaviour is needed, the toolkit should detect the WM/DE and enable the behaviour if it's Hildon+Matchbox.  
*** It should not change upstream API (but may add or cause breakage that would make normal GTK applications not work with it.
*** It should not change upstream API (but may add or cause breakage that would make normal GTK applications not work with it.
* '''GTKMM'''
* '''GTKMM'''
Line 168: Line 158:
== SDK (developer kit for the platform) ==
== SDK (developer kit for the platform) ==
-
The SDK is a basic part of developing for Maemo.
+
The SDK is a basic part of developing for Maemo. But there are occasional horror stories. Based on some of the stories about the SDK and other trends in the mobile device world, this is a vision of a proper SDK for Maemo "R".
Maemo "R" SDK should be easy to install. It should be a matter of apt-get'ing a package or installing a VMware appliance for non-Linux users. It's alright for device-specific dev packages & emulator images to require a license to download, but the base Maemo "R" SDK should be easily installable and allow you to start developing for the base Maemo "R" platform immediately. You shouldn't have to go through hoops to get Scratchbox + Rootstrap + Generic Maemo device emulator image and such, - this attracts developers.
Maemo "R" SDK should be easy to install. It should be a matter of apt-get'ing a package or installing a VMware appliance for non-Linux users. It's alright for device-specific dev packages & emulator images to require a license to download, but the base Maemo "R" SDK should be easily installable and allow you to start developing for the base Maemo "R" platform immediately. You shouldn't have to go through hoops to get Scratchbox + Rootstrap + Generic Maemo device emulator image and such, - this attracts developers.
-
 
-
A prime example is Maemo SDK+, http://maemo-sdk.garage.maemo.org/
 
-
 
-
Maemo "R" SDK should not only focus on native application development, but also embrace developer environments for non-native languages such as Python, Java, etc, to show the versatile nature of the Maemo "R" platform. Maemo SDK+ would be able to contain these and could also allow for Eclipse-based development environments etc.
 
-
 
-
Maemo "R" SDK should not be the only way to develop for the tablet - it should be just as possible to get the needed compilers and dev packages and be able to compile on tablet - which is easy as the rootstrap is really the Maemo "R" OS with build-essentials packages on top.
 
Maemo "R" SDK, should consist of four parts:
Maemo "R" SDK, should consist of four parts:
-
=== Scratchbox 2 (cross-compilation environment) ===
+
=== Scratchbox (cross-compilation environment) ===
Build programs for another architecture/target than on the one compiling.
Build programs for another architecture/target than on the one compiling.
Line 186: Line 170:
Packages for Maemo should not expect Scratchbox to be where they're compiled (There's been seen examples of this amongst Nokia code.). This increases portability of Maemo platform. A package that builds in Scratchbox should also build on a tablet.
Packages for Maemo should not expect Scratchbox to be where they're compiled (There's been seen examples of this amongst Nokia code.). This increases portability of Maemo platform. A package that builds in Scratchbox should also build on a tablet.
-
Scratchbox 2 is obviously the way to go, as it provides a more seamless way to deal with cross-compilation.
+
===Maemo "R" rootstrap ===
-
Cross-compiliation certainly speeds up compilation and allows a proper developer environment for developing for Maemo "R".  
+
Maemo base OS with libraries and dev packages to cross-compile any applications for Maemo "R", not to run them.
-
=== Maemo "R" rootstraps ===
+
Cross-compiliation certainly speeds up compilation and allows a proper developer environment for developing for Maemo "R". "Not to run them" is meant as, CPU transparency is okay, but the rootstrap should not try to be a fullly deployed Maemo "R" system. The rootstrap shouldn't try to act as an tablet - we have the emulators for that.
-
The SDK should contain at least one rootstrap - the Maemo "R" base OS, targeted towards both cross-compilation towards the reference platform, for instance targeted towards ARMv5EL and the QEMU versatile-pb emulator.
+
A Maemo "R" rootstrap may have Nokia/device specific dev packages but developers should be encouraged to develop for the defined Maemo "R" platform. Nokia/other hardware vendors specific dev packages should strive towards non-device-specific standardization of the interfacing if possible (a BME dev package may not be relevant on other devices).
-
Developers should be encouraged to develop for this platform API - the reference Maemo "R" platform API. Though, there will be device-specific features that vendors would like to make developers able to develop for. The vendors would then either provide hardware support packages to include on top of the base OS or provide additional rootstraps which represent the device and device-specific APIs shipped on the actual tablets with build-essentials and such on top. These rootstraps or packages would probably be provided under some kind of licensing scheme.
+
Maemo has great possibility to become a general platform for tablet like devices. The possibility of additional device platforms which also embrace the Maemo minimal base + build-essential + dev packages direction will cause every Maemo device to have additional applications as well when they appear for other devices.
-
A rootstrap may be either device-specific (processor types/etc) or have device-specific packages in it. Vendors providing device-specific interfaces for the platform should strive towards standardizing similar types of hardware interfaces (HAL battery templates come to mind, GPS or Bluetooth interfacing), but the vendor may provide subtypes of the APIs - extended APIs for component-specific things.
+
=== QEMU appliances included with target device(s) emulated ===
-
Maemo has great possibility to become a general platform for tablet like devices. The possibility of additional device platforms which also embrace the Maemo "R" base direction will cause every Maemo-using device to have additional applications as well when they appear for other devices.
+
The appliances would be shipped with a device-specific Maemo "R" installed on it. This is where built applications should be run, not inside the SDK (no Xephyr, not full hildon desktop, etc. in Scratchbox). These should be configured with sbrsh for cpu transparency from initial setup. N8x0 emulation is already seen (http://blog.haerwu.biz/2008/04/11/nokia-n800-emulation/). Qemu appliances will allow the user to instantly test how their applications work on the actual device or an emulated version.
-
 
+
-
=== QEMU, able to emulate target device(s) emulated ===
+
-
 
+
-
Vendors should strive for contributing hardware emulation for QEMU for their devices or provide stubs inside the hardware support packages but should act as close to the actual device as possible.
+
-
 
+
-
There should exist a reference generic Maemo "R" platform to develop for, with associated emulator - in the proof of concept this will be the n800 machine and arm1136-r2 CPU emulated in qemu.
+
-
 
+
-
Vendors should provide emulator images (in the form of flash images, disk images) associated to the device rootstraps to make users able to test on their platforms.  
+
-
 
+
-
N8x0 emulation is already seen (http://blog.haerwu.biz/2008/04/11/nokia-n800-emulation/) and in qemu SVN HEAD. Being able to boot their development environments will allow the user to instantly test how their applications work on the actual device or an emulated version.
+
-
 
+
-
Maemo SDK+ already provides the "maemo-runtime" scripts which could be adapted to include features like this.
+
=== Deployment and debugging support scripts ===
=== Deployment and debugging support scripts ===
Line 217: Line 189:
Work could be done on easy deployment of developed packages (# sb-copy-to-tablet -i usb, -i emu, etc) or running in similar manner to sbrsh with NFS and the likes.
Work could be done on easy deployment of developed packages (# sb-copy-to-tablet -i usb, -i emu, etc) or running in similar manner to sbrsh with NFS and the likes.
-
 
-
Again, Maemo SDK+ seems to provide much of this and is definately the way to go regarding SDK plugins (GUIs, Anjuta as an example). Through a simple interface it could be extended to provide deploying and remote debugging features. GDB supports remote debugging for instance.
 
-
 
-
[[Category:Mer]]
 

Learn more about Contributing to the wiki.


Please note that all contributions to maemo.org wiki may be edited, altered, or removed by other contributors. If you do not want your writing to be edited mercilessly, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource (see maemo.org wiki:Copyrights for details). Do not submit copyrighted work without permission!


Cancel | Editing help (opens in new window)

Templates used on this page: