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 92: Line 88:
*** 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?
*** 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'''
* '''Upstart'''
Line 137: Line 132:
** 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/
** 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 142:
** 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 172: Line 167:
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/  
+
A prime example of a good direction is Maemo SDK+, http://maemo-sdk.garage.maemo.org/ - which also could allow for Eclipse-based development environments, targeting more run-time languages such as Python, and so on.
-
 
+
-
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:
Line 192: Line 183:
=== Maemo "R" rootstraps ===
=== Maemo "R" rootstraps ===
-
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.
+
The SDK should contain at least one rootstrap - the Maemo "R" base OS, targeted towards both cross-compilation and an associated emulator CPU+emulated device. The base rootstrap could be for instance Maemo "R" base OS targeted towards ARMv5EL, and the QEMU versatile-pb emulator.
-
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.
+
Developers should be encouraged to develop for this base platform - the generic Maemo "R" platform. 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 firmware 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.
-
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.
+
The goal of a rootstrap is that it is, indeed, a complete OS image, and can be:
 +
 
 +
* user-level emulated (qemu-arm) - run the emulated binaries inside your system (normal usage is when cross-compiling)
 +
* system-level (qemu-system-arm) - boot the emulated device with your rootstrap (NFS comes to mind?)
 +
* actual device (tablet, for instance) - boot your rootstrap with your device through usbnet/NFS, test how it works on the actual tablet.
 +
 
 +
A rootstrap may be either device-specific 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 vendor may provide subtypes of the APIs - extended APIs for component-specific things.
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.
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.
Line 202: Line 199:
=== QEMU, able to emulate target device(s) emulated ===
=== 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.
+
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.
+
There should exist a reference generic Maemo "R" platform to develop for, with associated emulator.
-
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/). 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.
-
 
+
-
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.
Maemo SDK+ already provides the "maemo-runtime" scripts which could be adapted to include features like this.
Line 218: Line 213:
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.
+
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: