Development process for 3rd Party
MeeGo Application Developers
Presented by:
Narayana Pattipati
[Link]@[Link]
Session flow
• Introduction and objective of the session
• What 3rd party app developers want?
• MeeGo Application Development environment
• MeeGo Application Development process - high level flow
• Resources available for the developers
• Gaps in the existing environment and ways to address them
• Discussion and getting feedback from app developers
• Q&A
2
Introduction
• MeeGo is an open platform
• Supports variety of devices with different form factors
Handset Netbook Media Phone Connected TV In-Vehicle
• These factors generated lot of interest among app developers
• App developers - individuals, companies
• Applications – Open source, Closed source, Commercial
• A great MeeGo application development environment helps in
• Attracting more app developers
• MeeGo becoming a prefered platform for app developers
3
What 3rd party app developers want?
• Stable platform
• A well defined architecture and subsystems
• Developer API
• Clear roadmap of the components
• Stable development tools
• SDK – Simulator, Emulator, IDE
• Tools & Infrastructure
• Great documentation – Architecture, API, SDK, Guidelines and manuals
• Getting Started – Tutorials, examples and sample code
• Developer community and support
• How quickly can I prototype and develop apps?
• Great user experience for the apps
• Large market penetration and revenue potential
• Good App store & ease of distribution
4
MeeGo Application Development Environment
5
Application Development – High level flow
*MeeGo garage is not up yet
6
Basic skills & HW needed
• Basic Software development skills
• C++, Qt, Qt quick
• Java Script, HTML, CSS for web based applications
• MeeGo SDK
• RPM packaging
• GNU build tools
• Minimal hardware needed
• Linux workstation
• N900, Aava handsets
• Netbook
• Reference devices for different UX
[Link]
7
Community participation & Developer engagement
• Mailing Lists
[Link]
[Link]
• IRC
[Link]
• Forums
[Link]
• Working Groups
[Link]
• Community Office Meetings
[Link]
• Local Networks
[Link]
8
Developer Documentation, API, FAQ
• Main sources of information
[Link]
[Link]
• Architecture
[Link]
• Architecture documentation for different subsystems
[Link]
• MeeGo Developers pages
[Link]
[Link]
[Link]
• MeeGo developer API
[Link]
• MeeGo Porting guide
[Link]
• MeeGo FAQ
[Link]
[Link]
9
Compliance and Guidelines
• MeeGo Compliance and Compliance tools
[Link]
[Link]
• Coding Guidelines
• UX design principles
[Link]
• UI design guidelines for different device areas
[Link]
• MeeGo Release Engineering process
[Link]
• MeeGo Packaging Guidelines
[Link]
10
Application Development options
• Native applications
• Qt Quick apps
• Rapid application development based on QML and Javascript
• Can integrate well with Qt/C++ - UI in QML and backend in Qt/C++
[Link]
• Qt / C++ apps
• Use MeeGo SDK which provides Qt Creator for development
• Web Applications
• HTML, CSS, JavaScript
• Web Runtime Environment (WRT)
• Possible to embed WRT UI into C++/Qt apps using QtWebKit module
• Use Web SDK for development
[Link]
[Link]
• MeeGo 1.1 Application development overview
[Link]
11
MeeGo SDK
• MeeGo SDK for Native apps
• Web SDK for web runtime based apps
• MeeGo SDK Development options
• QEMU virtual machine
• Change root (chroot) with Xephyr
• MeeGo on Workstation
• Currently only Handset and Netbook SDK is
available for Download
• Get started with MeeGo SDK
[Link]
[Link]
he_MeeGo_SDK_for_Linux
• Get started with Web SDK
[Link]
• MeeGo SDK mailing list for getting help
[Link]
12
MeeGo SDK – Simulator with Xephyr
• MeeGo chroot with Xephyr is your virtual MeeGo system
• MeeGo UI session or Application launch options from chroot
• Use the chroot for your development
• Qt Creator for application development
• zypper or yum
• Build Service (OBS) commandline tool osc
• Mount your VCS work area for sources
• Installation and setup instructions
[Link]
[Link]
Ubuntu_10.04_LTS
13
MeeGo SDK – QEMU based Emulator
• QEMU is a virtual machine which enables to run x86 and ARM images
on x86 work station.
• Virtualization (VT) support needed on system for graphics acceleration
• QEMU can be used for application development
• Install Qt Creator
• Install MADDE to manage development targets (toolchains)
• Configure Qt Creator to use the toolchain
• Run QtCreator outside QEMU and debug applications
• SSH into QEMU Image
• Use that session for app development, running and debugging
• Detailed steps to setup and run
[Link]
14
Install and use MeeGo on your workstation
• MeeGo is supported and tested on many Netbooks and Laptops
• Install the latest version of MeeGo on Netbook or laptop and use it for
development
• Workarounds may be needed to make applications work
• Detailed instructions to install MeeGo on Netbooks and Notebooks
[Link]
[Link]
[Link]
• List of supported devices along with workarounds can be found at
[Link]
15
MeeGo IDEs
• Qt Creator
• Native app development with Qt, Qt Quick
• Installed along with MeeGo SDK
• Can run apps on Simulator, Emulator or on device
• Detailed instructions to use Qt Creator
[Link]
[Link]
[Link]
• Eclipse, Aptana
• web based apps with WRT
• No documentation is available on Eclipse, Aptana IDEs for MeeGo
16
Qt Creator IDE – Creating a new application
• Setup MeeGo SDK environment on Linux
• Install SDK, setup build targets using MADDE
• Configure Qt Creator to use a specific target (e.g ARM, IA32)
• Configure Qt Creator to run on Simulator, Emulator or device
• Create a new application and build it
• Run on Simulator, emulator or device
• Debug the application (uses gdb internally on Linux)
• Detailed instructions
[Link]
[Link]
17
MeeGo Tools
• Developer Tools
• MeeGo Image Creator (MIC) – for creating and manipulating images
• Image Manager – A GUI image creator
• Spectacle – Packaging assistant
• Bootchart – Monitors where system spends time during startup
• Powertop – Power usage patterns of apps (while device is idle)
• Valgrind, Coverity, gprof, gcov
• MeeGo Tools repo
[Link]
[Link]
• QA Tools
• Test Runner – An automated test execution tool, takes XML test plan as input
• OTS – Open testing system
• Tdriver – Test automation driver for UI or functionality testing
• Crash Reporter – Automatically report crash reports
• Rich core dumper
[Link]
[Link]
18
Build Infrastucture
• MeeGo uses OpenSUSE Build Service(OBS) as the build system
• Details of OBS
[Link]
• MeeGo OBS instances
• Official MeeGo OBS [Link]
• Only for building to MeeGo Core, UX and related projects. Restricted access
• Community MeeGo OBS
• Community App developers can use this build system
• Points to official MeeGo OBS for Core and UX
• Access & usage details [Link]
• Private OBS
• App developers can setup OBS instance, which points to Official MeeGo OBS
[Link]
[Link]
• Community Application Support project – for open apps
[Link]
19
VCS, Repos, Bug Tracking
• Most of the projects under MeeGo use Git
• It is up to app developers to chose VCS and location to host the sources
• Open Issue
• Can MeeGo bugzilla be used for apps hosted on MeeGo Garage?
• The MeeGo source code repository
[Link]
• Binary, Package, Image, daily, weekly release repository:
[Link]
• Source code cross reference – browse through the sources, search
[Link]
• MeeGo Bugzilla [Link]
20
Localization
• Localization is very important for the applications
• Helps in increased user base for applications
• MeeGo uses Transifex to help in software, documentation translation
[Link]
• MeeGo localization related details and process
[Link]
[Link]
21
Packaging
• MeeGo uses RPM packaging
[Link]
• Debian to RPM packaging conversion example
[Link]
• Packaging guidelines
[Link]
• Spectacle – Packaging assistant for MeeGo
[Link]
• Package creation options for native apps
• Use OBS build system for creating and managing packages
• Use Qt Creator to create a package
• Build RPM packages manually
• For web based apps use web SDK for packaging
• W3C packaging format is followed
22
Distribution
• MeeGo Garage
• Open source apps can be hosted and distributed
• Still under construction
• Does it support distribution of commercial application ?
• Criteria and guidelines to distribute apps ?
[Link]
• Commercial app developers can use any app store
23
Gaps in the current environment
• Documentation
• Still evolving and has a long way to go
• Architecture - many subsystems don’t have documentation yet
• MeeGo wiki is difficult to navigate and find information
• Turorials, Examples and code snippers needed
• Manuals and guidelines (e.g UI guidelines for Netbook, IVI)
• API
• Many subsystems (middleware components) don’t have API documentation yet
• SDK
• SDK available only for Handset, Netbook UX
• SDK documentation is still evolving
• Automation of SDK setup
• Infrastructure and Tools
• Community OBS
• Garage
• Still under construction
24
Addressing the gaps
• Some ideas to address the gaps
• A focus group for overall app Development environment & infrastucture
• A focus group for overall documentation
• Comparision study of app development environment with other platforms
• Get feedback from application developers
• A formal survey
• A better mechanism, other than mailing lists, to accumulate feedback
25
Questions?
26
Thank You!
[Link]@[Link]
27
Backup Slides
28
MADDE – MeeGo Application Development & Debug Environment
• MADDE offers the following features:
• Command-line cross-compiling
• Multi-platform support (Linux 32-bit/64-bit, Windows, Mac OS X)
• Configurable for different targets & toolchains
• Part of the MeeGo SDK, enables cross platform development
• Integrates with QtCreator
• No documentation is available for MADDE in MeeGo wiki
• SDK documentation has few details about it to configure targets
[Link]
29
Testing & Automation
• Test Runner
• Tdriver
• OTS (open testing system)
• QA Tools wiki pages have more details about the tools
[Link]
[Link]
• The documentation is still evolving. Its confusing to understand the role
of different tools in automation.
30
OBS – Making a product out of MeeGo
• 3rd party application developers can follow similar strategy to build apps
using a private instance of OBS
31
MeeGo SDK – Simulator with Xephyr
• Image showing Handset UI session running with Xephyr on nVidia graphics card
• From MeeGo chroot, export DISPLAY to an already running Xephyr window started from
your work station and run startmeego script
32
MeeGo SDK – Emulator with QEMU
33