Monday, 16 December 2013

Qt Welcomed to the Tizen.org Infrastructure

We're excited to announce... yes you read this everywhere. But hey, we are sharing this news with true enthusiasm! Qt for Tizen source code is now officially a part of Tizen's dedicated repositories. This means the Tizen project now combines both standard improvements from Qt as well as Tizen-specific integration from the five prior Alpha releases of Qt for Tizen. Every change in the code can now be reviewed using Tizen.org services.

Moreover, carefully selected Qt and Qt Tizen Integration packages are now built within the Tizen.org infrastructure. This means pre-compiled binaries are easily available to application developers and system integrators on current and future Tizen profiles, for use with emulator and available Tizen devices.

Details


The following numbers present scale and importance of inclusion contributions from Qt Project in Tizen:


Number of modules and classes indicate how wide functionality is covered by Qt APIs. Given the level of coverage, the size of the code base is considered to be small.

Source Code Repositories


Currently there are 11 repositories related to Qt, all are located in platform/upstream/ path.
This indicates that they originate in unmodified form from the "upstream" open source Qt Project.


All these repositories are since December 2 officially managed by Tomasz Olszak, a co-founder of Qt for Tizen. He has been nominated as one of the two very first maintainers coming from the open source community in Tizen's history.


Among the repositories, 10 come from Qt:

RepositoryDescriptionModulesTested
with Tizen?
qtbaseCommon features such as build tools, documentation tools, QObject, GUI support, networking, XML... Qt Core
Qt D-Bus
Qt GUI
Qt Network
Qt OpenGL
Qt Test
Qt Widgets
Qt XML
Qt Concurrent
Qt SQL
qtchooserA wrapper used to select between Qt development binary versions-
qtdeclarativeSupport for QML and C++ API, scene graph for fluid 60fps accelerated animations, Javascript support and integration with Qt Quick, QML runtime and profiling toolsQt QML
Qt Quick
qtgraphicaleffectsA set of QML types for adding visually impressive and configurable effects to user interfaces. There are over 20 distinct effects.Qt Graphical Effects
qtimageformatsOptional support for other image file formats: MNG, TGA, TIFF, WBMP.Qt Image Formats
qtquickcontrolsA set of controls that can be used to build complete interfaces in Qt Quick, and Qt Quick Layouts, a set of QML types used to arrange items in a user interface.Qt Quick Controls
Qt Quick Layouts
qtsensorsProvides access to sensor hardware and motion gesture recognition. There is also a plugin that handles Tizen smartphone sensors.Qt Sensors
Sensors Plugin for Tizen
qttoolsApplication development facilitating tools.Qt Assistant
Qt Designer
Qt Help
Qt Linguist
Qt UI Tools
qtwaylandA wrapper for Wayland, a light-weight windowing system. It separates a client side and allows running Qt applications as Wayland client, and the server side allowing to write custom Wayland compositors.Qt Wayland
(IVI)
qtxmlpatternsSupport for XPath, XQuery, XSLT and XML Schema validation.Qt XML Patterns

Another repository is a child of the Qt for Tizen project. It delivers features that are already well known to readers of this blog:

RepositoryDescription
qqtquickcontrols-tizenA set of Qt Quick Controls and Styles compliant with Tizen Mobile style.

The large number of repositories indicate deep modularization of Qt which is welcome by engineers preparing actual devices. They can carefully cook a custom version of Qt dedicated for their specific requirements.

Automated Builds


Automated builds are possible in Tizen thanks to the Open Build Service (OBS), an open platform that provides a transparent infrastructure for development of Linux distributions. It originated in openSUSE and MeeGo, and also supports Fedora, Debian, Ubuntu, RedHat etc. Qt for Tizen's sister project Mer is also using it.

Tizen's OBS infrastructure is located at https://build.tizen.org.

Example of qt5 build configurations for i586:


Example statuses of ARM and Intel Atom builds:


Qt packages are built every day from source code repositories, results of the builds are published, and binaries are available for testing.

Code Review


Tizen Project's infrastructure is similar to that of the Qt Project. Code Review service is similarly based on Gerrit and is located at https://review.tizen.org/gerrit.

Thanks to the tight integration with Tizen project's development workflow, Qt for Tizen project can now be more up-to-date with the changes happening in Tizen 3.0. Issues reported by Tizen and Qt tests can be fixed faster.

Where From Here?


From now on we will focus on improving quality by passing auto tests and adapting to the forthcoming Tizen 3.0. So far we have focused on key Qt modules but there are more modules in the pipeline:


These modules are located in the following repositories of the Qt Project:

  • qt3d - Qt 3D adds 3D content to Qt Quick's cross-platform ability and coding power. Developers of fluid user interfaces can now enhance their applications with 3D content.
  • qtjsondb - JSON DB is a no-SQL object store for Qt. It allows JSON objects to be stored, modified and queried without schemas like SQL database, which makes it particularly flexible. It offers integration with Qt Quick UIs.
  • qtconnectivity - Qt Bluetooth for Bluetooth connectivity, Qt NFC for NFC connectivity.
  • qtfeedback - Qt Feedback for controlling and providing tactile and audio feedback to the user.
  • qtlocation - Qt Location, Qt Positioning Provides location positioning, mapping, navigation and place search via QML and C++ interfaces.
  • qtmultimedia - Qt Multimedia provides a rich set of QML types and C++ classes to handle multimedia content, provides necessary APIs to access the camera and radio functionality.
  • qtpim - Qt Organizer for accessing organizer events (todos, events, etc.), Qt Contacts for accessing addressbooks and contact databases, Qt Versit for converting contacts to and from vCard files and to convert organizer items to and from iCalendar files.
  • qtscript - Qt Script provides support for application scripting with ECMAScript.
  • qtserialport - Qt Serial Port provides the basic functionality, which includes configuring, I/O operations, getting and setting the control signals of the RS-232 pinouts.
  • qtsvg - Qt SVG provides classes for rendering and displaying SVG drawings.
  • qtsystems - Qt Publish and Subscribe, Qt Service Framework, Qt System Info.
  • qttranslations - includes translation of Qt built-in messages
  • qttizenextras - Qt for Tizen project's own repository with extra Tizen-specific APIs
  • qtwebkit - Qt WebKit provides the WebView API which allows applications to render regions of dynamic web content


("Qt in Tizen" composition based on work by Marília Almeida, CC BY 2.0 http://flic.kr/p/c5Fhy, thanks!)