Development Process For 3Rd Party Meego Application Developers
Development Process For 3Rd Party Meego Application Developers
Presented by:
Narayana Pattipati
[email protected]
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
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
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
7
Community participation & Developer engagement
• Mailing Lists
http://lists.meego.com/mailman/listinfo
http://meego.com/community/mailing-lists
• IRC
http://meego.com/community/irc-channel
• Forums
http://forum.meego.com/
• Working Groups
http://meego.com/about/governance
• Community Office Meetings
http://wiki.meego.com/Community_Office
• Local Networks
http://wiki.meego.com/Local_MeeGo_Networks
8
Developer Documentation, API, FAQ
• Main sources of information
http://meego.com/
http://wiki.meego.com
• Architecture
http://meego.com/developers/meego-architecture
• Architecture documentation for different subsystems
http://wiki.meego.com/Architecture/Documentation
• MeeGo Developers pages
http://meego.com/developers
http://wiki.meego.com/SDK/Docs/1.1
http://wiki.meego.com/Developer_Guide_for_MeeGo_1.1
• MeeGo developer API
http://meego.com/developers/meego-api
• MeeGo Porting guide
http://wiki.meego.com/MeeGo_Porting_Guide
• MeeGo FAQ
http://meego.com/about/faq
http://wiki.meego.com/MeeGo_FAQ
9
Compliance and Guidelines
• MeeGo Compliance and Compliance tools
http://wiki.meego.com/Quality/Compliance#Specification
http://wiki.meego.com/Quality/ComplianceTools
• Coding Guidelines
• UX design principles
http://meego.com/developers/meego-ux-design-principles
• UI design guidelines for different device areas
http://meego.com/developers/ui-design-guidelines
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++
http://developer.qt.nokia.com/wiki/Qt_Quick_Tutorial
• 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
http://wiki.meego.com/SDK/Docs/1.1/Web_SDK_with_WRT
http://appdeveloper.intel.com/en-us/article/introduction-web-runtime-meego
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
http://wiki.meego.com/SDK/Docs/1.1/Getting_started_with_t
he_MeeGo_SDK_for_Linux
• Get started with Web SDK
http://wiki.meego.com/SDK/Docs/1.1/Web_SDK_with_WRT
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
http://wiki.meego.com/MeeGo_SDK_with_QEMU
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
http://meego.com/devices/netbook/installing-meego-your-netbook
http://meego.com/devices/netbook/installing-meego-netbook/windows-instructions
http://wiki.meego.com/Installation_of_MeeGo_on_notebook
• List of supported devices along with workarounds can be found at
http://wiki.meego.com/Devices
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
http://wiki.meego.com/MeeGo_SDK_with_Xephyr#Application_Development
http://wiki.meego.com/MeeGo_SDK_with_QEMU#Using_QEMU_for_Application_Development
http://wiki.forum.nokia.com/index.php/How_to_use_Qt_Creator_IDE
• Eclipse, Aptana
• web based apps with WRT
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
http://wiki.meego.com/SDK/Docs/1.1/Creating_Hello_World
http://wiki.meego.com/SDK/Docs/1.1/Debugging_with_Qt_Creator
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
http://repo.meego.com/MeeGo/tools/repos/
http://meego.gitorious.com/meego-developer-tools
• 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
http://wiki.meego.com/Quality/QA-tools
http://www.youtube.com/user/meegoqatools
18
Build Infrastucture
• MeeGo uses OpenSUSE Build Service(OBS) as the build system
• Details of OBS
http://wiki.meego.com/Build_Infrastructure
• MeeGo OBS instances
• Official MeeGo OBS http://build.meego.com/
• 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 http://wiki.meego.com/Build_Infrastructure/Community_Builder
• Private OBS
• App developers can setup OBS instance, which points to Official MeeGo OBS
http://wiki.meego.com/Build_Infrastructure/Community_Builder/Installation
http://wiki.maemo.org/OpenSuse_Build_Service/Installation
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?
20
Localization
• Localization is very important for the applications
• Helps in increased user base for applications
21
Packaging
• MeeGo uses RPM packaging
http://wiki.meego.com/Packaging
• Debian to RPM packaging conversion example
http://wiki.meego.com/Packaging/Deb_conversion_example
• Packaging guidelines
http://wiki.meego.com/Packaging/Guidelines
• Spectacle – Packaging assistant for MeeGo
http://wiki.meego.com/Spectacle
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 ?
http://meego.com/garage
• 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
25
Questions?
26
Thank You!
[email protected]
27
Backup Slides
28
MADDE – MeeGo Application Development & Debug Environment
29
Testing & Automation
• Test Runner
• Tdriver
• OTS (open testing system)
• QA Tools wiki pages have more details about the tools
http://wiki.meego.com/Quality_Assurance_Team
http://wiki.meego.com/Quality/QA-tools
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