Meego Wiki
Views

SDK/MeeGo 1.1 Application SDK Project Plan

From MeeGo wiki
< SDK(Difference between revisions)
Jump to: navigation, search
(Hosts and Target)
(categorise)
 
(23 intermediate revisions not shown)
Line 1: Line 1:
-
== SDK ==
+
''' !!! THIS IS STILL A DRAFT !!! '''
-
== MeeGo Application SDK Architecture / Work in progress... ==
+
This document describes the MeeGo 1.1 Application SDK contents and how we get there. It should include but not limit to:
 +
* Key requirements of MeeGo SDK release matching MeeGo 1.1 release in Oct
 +
* Get aligned on MeeGo SDK milestones
 +
* List major tasks/deliverables of SDK
 +
* Resources allocated with clear R&R
-
The Application SDK is mainly targetted for Application developers who are interested in creating new applications for MeeGo platform. They might not be so interested in Open Source but are hoping to sell their applications on OVI Store or equivalent.
+
== Mission ==
-
The application SDK should run on multiple different host environments. These host environments have not yet been agreed but probably those will be as follows: Stable Ubuntu 32bit/64bit, Stable Fedora 32bit/64bit, Windows 7, Mac OS X (version?). In general all the parts of the Application SDK should run similarly on all the hosts!
+
* Delivering MeeGo SDK for developers to develop MeeGo Applicaitons at best chance running across platforms and segments(netbook, handset, tablet and TV..).
 +
* Shape MeeGo APIs and compliance with MeeGo SDK.
 +
* Build MeeGo ecosystem with MeeGo SDK.
-
The building of the Application SDK should happen with the MeeGo OBS.
+
MeeGo 1.1 Application SDK is going to be the first MeeGo Application SDK release created in collaboration between MeeGo partners (Nokia & Intel at this point). The Application SDK is mainly targetted for Application developers who are interested in creating new applications for MeeGo platform.
-
Below is the list of the components and information about the responsibles and statuses.
+
The application SDK should run on multiple different host environments (Linux, Win, Mac). In general all the parts of the Application SDK should run similarly on all the hosts! Still it is possible that we will have features that will only work on some of the hosts or with only some of the targets. This aspect should be considered in the SDK architecture.
-
===  Qt Creator ===
+
== Key Drivers ==
 +
* MeeGo Application SDK which allows developers to use any host and develop to any target with a similar manner.
 +
** The host OSs include Windows, Linux (Ubuntu and Fedora??) and Mac OS.
 +
** The targets include CDK,Aava and N900 or simulators/emulators.
 +
** Support both 64bits and 32 bits host machines
 +
** Have a possibility for allowing features that only work on specific hosts or for specific targets
 +
* SDK development process agreed and active
 +
** How are decisions made etc - suggest following the open process defined for MeeGo at http://meego.com/developers/meego-roadmap
 +
 +
 +
== Project Group ==
 +
 +
This chapter lists the people involved and their responsibilities.
 +
 +
* Veli Kaksonen : Nokia MeeGo SDK project manager
 +
 +
== Schedule ==
 +
 +
=== Milestones ===
 +
 +
{| class="wikitable" border=1
 +
|-
 +
! id
 +
! Date
 +
! Short description
 +
|-
 +
! M1
 +
! 20100630
 +
! Project start (Targets set, resources allocated...)
 +
|-
 +
! M2
 +
! 2010????
 +
! Beta release...
 +
|}
 +
 +
=== Meetings ===
 +
 +
== Architecture of MeeGo SDK ==
 +
 +
[[File:sdk_arch.jpg]]
 +
 +
== Integration, Distribution and Installation of MeeGo SDK ==
 +
 +
How MeeGo SDK components to be integrated and distributed
 +
*Some components should be put into OBS and maintained there as RPMs, like
 +
** Qt Creator
 +
** QEMU
 +
** Xephyr
 +
** MAD-developer
 +
 +
* Or just be packaged as tarball and maintained in gitorious, like
 +
** MADDE
 +
 +
*Some components should be created based on the MeeGo build by using tools/scripts, like
 +
** Simulator images
 +
** QEMU/emulator images
 +
** Sysroots
 +
** Toolchains
 +
 +
*MeeGo Application SDK will be built in sync with the MeeGo weekly builds. ...
 +
*Installer of SDK should be developed to package everything of MeeGo SDK into one package (bin)
 +
*End users just need to download the SDK Installers (for Windows, Linux and Mac), and then execute it to install MeeGo SDK on hosts.
 +
 +
 +
== Quality Assurance ==
 +
 +
*QA should cover:
 +
** SDK documentations, like how to install and set up SDK, how to Get Started, how to build, debug;
 +
** SDK components: Qt Creator, Madde, sysroots, Toolchains;
 +
** Simulator/Emulator
 +
** Simulator images and Emulator images
 +
** Simulated devices
 +
** Demo applications/APIs
 +
** Other tools, like packaging tool, performance tunning tools.
 +
 +
== Key Components of MeeGo SDK ==
 +
 +
The components of MeeGo Application SDK are listed in this section. Each component should have a responsible, package maintainer and some status information as we go along.
 +
 +
===  Qt Creator ===
Qt Creator is the chosen IDE for MeeGo Application SDK.  
Qt Creator is the chosen IDE for MeeGo Application SDK.  
 +
* '''Key Requirements for MeeGo1.1:'''
 +
**Support mutiple targets, like N900, CDK and Aava;
 +
**Support remote deploying and debugging.
* '''Responsible:''' Maurice Kalinowski
* '''Responsible:''' Maurice Kalinowski
* '''Package Maintainer:''' Fathi Boudra
* '''Package Maintainer:''' Fathi Boudra
Line 20: Line 108:
** Not part of the OBS builds yet
** Not part of the OBS builds yet
** Adding MADDE targets seems somewhat complicated
** Adding MADDE targets seems somewhat complicated
 +
 +
====Compiling plugins====
 +
 +
The compiling plugins are used for compiling and packaging the software with different tools (MADDE / OBS). The end result should be installable application RPM.
 +
 +
=====MADDE plugin=====
 +
 +
This plugin uses MADDE for compiling and packaging the software.
 +
 +
* '''Responsible:''' unknown
 +
* '''Package Maintainer:''' unknown
 +
* '''Status:'''
 +
** Just a dream
 +
 +
===== OBS plugin =====
 +
 +
This plugin uses OBS for compiling and packaging the software.
 +
 +
* '''Responsible:''' unknown
 +
* '''Package Maintainer:''' unknown
 +
* '''Status:'''
 +
** Just a dream
 +
 +
==== Run plugins ====
 +
 +
The run plugins are used for installing, running and debugging the software. In general the plugin could use e.g. MADDE to provide this feature.
 +
 +
===== Qemu plugin =====
 +
 +
This plugin provides the possibility to use Qemu for "Run plugin" features. This plugin uses MADDE.
 +
 +
* '''Responsible:''' unknown
 +
* '''Package Maintainer:''' unknown
 +
* '''Status:'''
 +
** Just a dream
 +
 +
===== Device run plugin =====
 +
 +
This plugin provides the possibility to use real devices for "Run plugin" features. This plugin uses MADDE.
 +
 +
* '''Responsible:''' unknown
 +
* '''Package Maintainer:''' unknown
 +
* '''Status:'''
 +
** Just a dream
 +
 +
===== Xephyr plugin =====
 +
 +
This plugin provides the possibility to use Xephyr (and chroot) for "Run plugin" features.
 +
 +
* '''Responsible:''' unknown
 +
* '''Package Maintainer:''' unknown
 +
* '''Status:'''
 +
** Just a dream
 +
 +
==== Debugging plugins ====
 +
 +
These plugins are used for debugging in Qt Creator. These could use MADDE for running the debuggers etc. and different kind of methods for visualization.
 +
 +
===== Valgrind =====
 +
 +
TODO
 +
 +
* '''Responsible:''' unknown
 +
* '''Package Maintainer:''' unknown
 +
* '''Status:'''
 +
** Just a dream
 +
 +
===== Oprofile =====
 +
 +
TODO
 +
 +
* '''Responsible:''' unknown
 +
* '''Package Maintainer:''' unknown
 +
* '''Status:'''
 +
** Just a dream
 +
===  MADDE ===
===  MADDE ===
Line 26: Line 190:
It provides same API for underlying tools on all the host platforms. MADDE
It provides same API for underlying tools on all the host platforms. MADDE
can be used from commandline or from IDE. Primary IDE is Qt Creator but
can be used from commandline or from IDE. Primary IDE is Qt Creator but
-
others, like eclipse, can be supported too.
+
others, like eclipse, can be supported too (although not in this project).
* '''Responsible:''' Jari Ihatsu
* '''Responsible:''' Jari Ihatsu
Line 34: Line 198:
** Not part of the OBS builds yet
** Not part of the OBS builds yet
-
==== Compiling ====
+
=== Compiling ===
Compiling is done with combination of a cross-compiler and a sysroot which
Compiling is done with combination of a cross-compiler and a sysroot which
-
includes target headers and libraries.
+
includes target headers and libraries. Compilers come with MADDE.
-
===== Hosts and Target =====
+
==== Hosts and Targets ====
-
The matrix below shows the status of the supported hosts and targets.
+
Status of the supported hosts and targets:
{| class="wikitable" border=1
{| class="wikitable" border=1
Line 48: Line 212:
! MeeGo chroot
! MeeGo chroot
! Ubuntu 32bit
! Ubuntu 32bit
-
! Ubuntu 63bit
+
! Ubuntu 64bit
! Fedora 32bit
! Fedora 32bit
! Fedora 64bit
! Fedora 64bit
Line 64: Line 228:
|}
|}
-
====== Sysroots ======
+
===== Sysroots =====
-
Sysroot respobsibles and statuses.  
+
Sysroot is a collection of target headers and libraries which are used by the compilers to compile the software.
 +
 
 +
Sysroot responsibles and statuses:
{| class="wikitable" border=1
{| class="wikitable" border=1
Line 86: Line 252:
|}
|}
-
====== Cross-Compilers ======
+
===== Cross-Compilers =====
-
Cross-compiler status per host and responsibles.
+
Cross-compiler status per host and responsibles:
{| class="wikitable" border=1
{| class="wikitable" border=1
Line 104: Line 270:
| Ubuntu 32bit
| Ubuntu 32bit
| (ok)
| (ok)
-
| (ok)
+
|  
| Martti Lumme (work in progress)
| Martti Lumme (work in progress)
|
|
Line 110: Line 276:
| Ubuntu 64bit
| Ubuntu 64bit
| (ok)
| (ok)
-
(ok)
+
|-
|-
| Fedora 32bit
| Fedora 32bit
| (ok)
| (ok)
-
(ok)
+
|-
|-
| Fedora 64bit
| Fedora 64bit
| (ok)
| (ok)
-
(ok)
+
|-
|-
| Windows 7
| Windows 7
| (ok)
| (ok)
-
(ok)
+
|-
|-
| Mac OS X
| Mac OS X
| (ok)
| (ok)
-
(ok)
+
|}
|}
-
==== Running ====
+
=== Running ===
-
With MADDE the application developer can create RPM package on any host
+
With MADDE the application developer can create RPM package on any host environment, transfer and run the software on the device or in the emulation.
-
environment, transfer and runt the software on the device or in the
+
-
emulation.
+
-
===== RPM support =====
+
==== RPM support ====
RPM packager is created with ...
RPM packager is created with ...
Line 160: Line 324:
|}
|}
-
===== Target devices =====
+
==== Targets (devices / Emulation) ====
 +
 
 +
 
 +
===== Aava =====
 +
 
 +
===== CDK =====
 +
 
 +
===== N900 =====
 +
 
 +
 
===== Qemu =====
===== Qemu =====
Line 168: Line 341:
{| class="wikitable" border=1
{| class="wikitable" border=1
!  
!  
-
! ARMv5
+
! ARMv5 (N900)
-
! ARMv7
+
! ARMv7 (N900)
-
! Intel
+
! Intel (Aava?)
|-
|-
| Ubuntu 32bit
| Ubuntu 32bit
Line 203: Line 376:
|}
|}
-
====== Qemu Image ======
+
====== Qemu Images ======
 +
 
 +
The Qemu images are images used with the QEMU full system emulation. The images are as similar as possible to the actual device images.
{| class="wikitable" border=1
{| class="wikitable" border=1
Line 210: Line 385:
! Status
! Status
|-
|-
-
| ARMv5
+
| ARMv5 (Qemu N900)
| Fathi Boudra
| Fathi Boudra
| Work in progress
| Work in progress
|-
|-
-
| ARMv7
+
| ARMv7 (Qemu N900)
| Fathi Boudra
| Fathi Boudra
| Work in progress
| Work in progress
|-
|-
-
| Intel
+
| Intel (Aava?)
| ?
| ?
| ?
| ?
Line 224: Line 399:
-
==== Debugging ====
+
=== Testing & Debugging tools ===
 +
 
 +
What do we have?
-
==== Testing ====
+
== Documentation of MeeGo SDK ==
 +
The Documentation of MeeGo SDK tells how to install/set up MeeGo SDK on any host machine, how to get started to use SDK to create first MeeGo applicaiton, including creating project, editing, compiling and building and remotely deploying and debuging applicaton.
 +
Supported APIs are also important part of SDK docmentation.
-
===  Creating Application SDK releases ===
+
[[Category:SDK]]
 +
[[Category:Meego-1.1]]

Latest revision as of 13:28, 15 April 2011

 !!! THIS IS STILL A DRAFT !!!

This document describes the MeeGo 1.1 Application SDK contents and how we get there. It should include but not limit to:

  • Key requirements of MeeGo SDK release matching MeeGo 1.1 release in Oct
  • Get aligned on MeeGo SDK milestones
  • List major tasks/deliverables of SDK
  • Resources allocated with clear R&R

Contents

Mission

  • Delivering MeeGo SDK for developers to develop MeeGo Applicaitons at best chance running across platforms and segments(netbook, handset, tablet and TV..).
  • Shape MeeGo APIs and compliance with MeeGo SDK.
  • Build MeeGo ecosystem with MeeGo SDK.

MeeGo 1.1 Application SDK is going to be the first MeeGo Application SDK release created in collaboration between MeeGo partners (Nokia & Intel at this point). The Application SDK is mainly targetted for Application developers who are interested in creating new applications for MeeGo platform.

The application SDK should run on multiple different host environments (Linux, Win, Mac). In general all the parts of the Application SDK should run similarly on all the hosts! Still it is possible that we will have features that will only work on some of the hosts or with only some of the targets. This aspect should be considered in the SDK architecture.

Key Drivers

  • MeeGo Application SDK which allows developers to use any host and develop to any target with a similar manner.
    • The host OSs include Windows, Linux (Ubuntu and Fedora??) and Mac OS.
    • The targets include CDK,Aava and N900 or simulators/emulators.
    • Support both 64bits and 32 bits host machines
    • Have a possibility for allowing features that only work on specific hosts or for specific targets
  • SDK development process agreed and active


Project Group

This chapter lists the people involved and their responsibilities.

  • Veli Kaksonen : Nokia MeeGo SDK project manager

Schedule

Milestones

id Date Short description
M1 20100630 Project start (Targets set, resources allocated...)
M2 2010???? Beta release...

Meetings

Architecture of MeeGo SDK

Sdk arch.jpg

Integration, Distribution and Installation of MeeGo SDK

How MeeGo SDK components to be integrated and distributed

  • Some components should be put into OBS and maintained there as RPMs, like
    • Qt Creator
    • QEMU
    • Xephyr
    • MAD-developer
  • Or just be packaged as tarball and maintained in gitorious, like
    • MADDE
  • Some components should be created based on the MeeGo build by using tools/scripts, like
    • Simulator images
    • QEMU/emulator images
    • Sysroots
    • Toolchains
  • MeeGo Application SDK will be built in sync with the MeeGo weekly builds. ...
  • Installer of SDK should be developed to package everything of MeeGo SDK into one package (bin)
  • End users just need to download the SDK Installers (for Windows, Linux and Mac), and then execute it to install MeeGo SDK on hosts.


Quality Assurance

  • QA should cover:
    • SDK documentations, like how to install and set up SDK, how to Get Started, how to build, debug;
    • SDK components: Qt Creator, Madde, sysroots, Toolchains;
    • Simulator/Emulator
    • Simulator images and Emulator images
    • Simulated devices
    • Demo applications/APIs
    • Other tools, like packaging tool, performance tunning tools.

Key Components of MeeGo SDK

The components of MeeGo Application SDK are listed in this section. Each component should have a responsible, package maintainer and some status information as we go along.

Qt Creator

Qt Creator is the chosen IDE for MeeGo Application SDK.

  • Key Requirements for MeeGo1.1:
    • Support mutiple targets, like N900, CDK and Aava;
    • Support remote deploying and debugging.
  • Responsible: Maurice Kalinowski
  • Package Maintainer: Fathi Boudra
  • Status:
    • Not part of the OBS builds yet
    • Adding MADDE targets seems somewhat complicated

Compiling plugins

The compiling plugins are used for compiling and packaging the software with different tools (MADDE / OBS). The end result should be installable application RPM.

MADDE plugin

This plugin uses MADDE for compiling and packaging the software.

  • Responsible: unknown
  • Package Maintainer: unknown
  • Status:
    • Just a dream
OBS plugin

This plugin uses OBS for compiling and packaging the software.

  • Responsible: unknown
  • Package Maintainer: unknown
  • Status:
    • Just a dream

Run plugins

The run plugins are used for installing, running and debugging the software. In general the plugin could use e.g. MADDE to provide this feature.

Qemu plugin

This plugin provides the possibility to use Qemu for "Run plugin" features. This plugin uses MADDE.

  • Responsible: unknown
  • Package Maintainer: unknown
  • Status:
    • Just a dream
Device run plugin

This plugin provides the possibility to use real devices for "Run plugin" features. This plugin uses MADDE.

  • Responsible: unknown
  • Package Maintainer: unknown
  • Status:
    • Just a dream
Xephyr plugin

This plugin provides the possibility to use Xephyr (and chroot) for "Run plugin" features.

  • Responsible: unknown
  • Package Maintainer: unknown
  • Status:
    • Just a dream

Debugging plugins

These plugins are used for debugging in Qt Creator. These could use MADDE for running the debuggers etc. and different kind of methods for visualization.

Valgrind

TODO

  • Responsible: unknown
  • Package Maintainer: unknown
  • Status:
    • Just a dream
Oprofile

TODO

  • Responsible: unknown
  • Package Maintainer: unknown
  • Status:
    • Just a dream


MADDE

MADDE is multiplatform toolset for compiling, running, debugging and testing. It provides same API for underlying tools on all the host platforms. MADDE can be used from commandline or from IDE. Primary IDE is Qt Creator but others, like eclipse, can be supported too (although not in this project).

  • Responsible: Jari Ihatsu
  • Package Maintainer: Fathi Boudra
  • Status:
    • We have a build of MADDE that includes MeeGo ARM target
    • Not part of the OBS builds yet

Compiling

Compiling is done with combination of a cross-compiler and a sysroot which includes target headers and libraries. Compilers come with MADDE.

Hosts and Targets

Status of the supported hosts and targets:

MeeGo chroot Ubuntu 32bit Ubuntu 64bit Fedora 32bit Fedora 64bit Windows 7 Mac OS X
ARMv5 - (cs2007q3)  ?
ARMv7 - (cs2007q3)  ?
Intel (gcc-...) ok
Sysroots

Sysroot is a collection of target headers and libraries which are used by the compilers to compile the software.

Sysroot responsibles and statuses:

sysroot Responsible Status
ARMv5  Fathi Boudra Work in progress
ARMv7 Fathi Boudra Work in progress
Intel  ?  ?
Cross-Compilers

Cross-compiler status per host and responsibles:

ARM-cs2007q3 ARM-MeeGo 4.? Intel-MeeGo 4.?
MeeGo chroot (not planned)  (not planned) (ok)  ?
Ubuntu 32bit (ok) Martti Lumme (work in progress)
Ubuntu 64bit  (ok)  
Fedora 32bit  (ok)  
Fedora 64bit  (ok)  
Windows 7  (ok)  
Mac OS X  (ok)  

Running

With MADDE the application developer can create RPM package on any host environment, transfer and run the software on the device or in the emulation.

RPM support

RPM packager is created with ...

The status of the RPM support on different host platforms.

Host RPM creation Transfer Run
Ubuntu 32bit
Ubuntu 64bit
Fedora 32bit
Fedora 64bit
Windows 7
Mac OS X

Targets (devices / Emulation)

Aava
CDK
N900
Qemu

The status and the responsible of the Qemu on different host platforms.

ARMv5 (N900) ARMv7 (N900) Intel (Aava?)
Ubuntu 32bit Riku Voipio (ok) Riku Voipio (ok)  ?
Ubuntu 64bit Riku Voipio (ok) Riku Voipio (ok)  ?
Fedora 32bit Riku Voipio (ok) Riku Voipio (ok)  ?
Fedora 64bit Riku Voipio (ok) Riku Voipio (ok)  ?
Windows 7 Riku Voipio (ok) Riku Voipio (ok)  ?
Mac OS X  ?  ?  ?
Qemu Images

The Qemu images are images used with the QEMU full system emulation. The images are as similar as possible to the actual device images.

Target Responsible Status
ARMv5 (Qemu N900) Fathi Boudra Work in progress
ARMv7 (Qemu N900) Fathi Boudra Work in progress
Intel (Aava?)  ?  ?


Testing & Debugging tools

What do we have?

Documentation of MeeGo SDK

The Documentation of MeeGo SDK tells how to install/set up MeeGo SDK on any host machine, how to get started to use SDK to create first MeeGo applicaiton, including creating project, editing, compiling and building and remotely deploying and debuging applicaton.

Supported APIs are also important part of SDK docmentation.

Personal tools