Plasma/Active/Development: Difference between revisions

From KDE Community Wiki
< Plasma‎ | Active
m (there's no KDE:Active:Devel (anymore?))
 
(13 intermediate revisions by 5 users not shown)
Line 15: Line 15:
* [[Plasma/Package|Plasmoid and other Plasma plugin packaging]]
* [[Plasma/Package|Plasmoid and other Plasma plugin packaging]]
* [[Plasma/Active/DeviceShell|Developing a device Shell]]
* [[Plasma/Active/DeviceShell|Developing a device Shell]]
=== Setting up a Development Environment ===
The recommended approach for application development is to use a PC with a Linux distribution (e.g. openSUSE). If needed, clone and compile the required PA libraries, notably Active Quick, on your platform. However, this step is not mandatory as long as the application interface is written in standard QML. As general rules please use cmake as compilation management system and QML for your graphical user interface. See [http://community.kde.org/Plasma/Active/Apps PA Apps Recommendations and Guidelines] for further details.
Once your application is ready for testing, please use the latest PA iso on a supported device (e.g. ExoPC). Enable the development repository on your device and type
<nowiki>
zypper refresh && zypper dup </nowiki>
in order to update your PA installation. Make sure that your application compiles and runs on PA.
There are a number of limitations on PA, for example there is no full screen mode for the application as the task bar should be always displayed in case the application misbehaves. These limitations are not always documented, so please test carrefully your application. If needed, install [http://synergy-foss.org/ synergy] in order to have keyboard and mouse support on your tablet. However, check carefully how your application is adapted to touch screens as this is the main target for PA. Using a virtual machine to test your application is not recommended as full touch screen support is not (yet) available.
Once you have tested your application, you can prepare it for deployment by setting up your repository on  [https://build.merproject.org/ Mer Project Open Build Service]. For alternative ways of deploying your application see [http://community.kde.org/Plasma/Active/Apps#Packaging_and_Distribution PA Packaging and Distribution].


=== Interface Standards and Research ===
=== Interface Standards and Research ===
Line 25: Line 39:
Add-ons and widgets for Plasma Active can be created without setting up a build system, and without using C++. Plasmate is a small, custom-made IDE specifically taylored for creating Plasma widgets and other add-ons. Plasmate allows you to quickly create new Plasmoids, or 'fork' and improve existing ones.
Add-ons and widgets for Plasma Active can be created without setting up a build system, and without using C++. Plasmate is a small, custom-made IDE specifically taylored for creating Plasma widgets and other add-ons. Plasmate allows you to quickly create new Plasmoids, or 'fork' and improve existing ones.


Plasmate packages for openSUSE 11.4 can be found in sebas' OBS home repository, and installed as follows (as root):
Kubuntu packages are in the official repository starting from 13.04 (raring):
  <nowiki>
  <nowiki>
# Add sebas' home repo, 11.4 branch
sudo apt-get install plasmate</nowiki>
zypper ar \
http://download.opensuse.org/repositories/home:/vizzzion/openSUSE_11.4/ \
sebas
 
zypper install plasmate
</nowiki>


More information about Plasmate can be found at [[Plasma/PlasMate| here]].
More information about Plasmate can be found at [[Plasma/PlasMate| here]].


== Plasma Active Core Development ==
== Plasma Active Core Development ==
The project page of Plasma Active with pointers to Git repository, current activity and the likes can be found [https://projects.kde.org/projects/playground/base/plasma-mobile here].
The project page of Plasma Active with pointers to Git repository, current activity and the likes can be found [https://projects.kde.org/projects/extragear/base/plasma-mobile here].
Upstream source code for Plasma Active can be downloaded with
Upstream source code for Plasma Active can be downloaded with
  <nowiki>
  <nowiki>
Line 95: Line 103:


=== Meeting Minutes ===
=== Meeting Minutes ===
* [[PA4PlanningMinutes | Plasma Active 4 planning meeting]]
* [[/PA4PlanningMinutes | Plasma Active 4 planning meeting]]
* [[/TaskCentricBrainstormMinutes | Brainstorming meeting on a task-centric approach for Plasma Active]]
* [[/TaskCentricIdeaMinutes | Meeting to further develop ideas on task-centric design for Plasma Active]]
* [[/PA4ReleaseBlockers | Going over release blocker bugs for PA4]]
* [[/PABoFTaslCentric | Metting Minutes for discussion related to Task-Centric UIs during the PA BoF]]


= Testing =
= Testing =
Line 121: Line 133:
Plasma Active is released independently from KDE SC releases, but using the same infrastructure. Plasma Active comes out about two months after SC's 6-monthly feature releases. The Plasma Active Core team decides, based on consensus specifics to the release. Stable releases are branched at beta stage, fully stabilized there, and released as .0 with .1, .2, etc. patch releases following. The release process is managed by Sebastian Kügler.
Plasma Active is released independently from KDE SC releases, but using the same infrastructure. Plasma Active comes out about two months after SC's 6-monthly feature releases. The Plasma Active Core team decides, based on consensus specifics to the release. Stable releases are branched at beta stage, fully stabilized there, and released as .0 with .1, .2, etc. patch releases following. The release process is managed by Sebastian Kügler.


== Preliminary Release Schedule for Plasma Active 4 ==
* [[../PA5 | Plasma Active 5 planning]]
 
* [[/Tasks | Open tasks for development]]
*March 25th 2013: Final tagging of PA4
*February 25 2013: Beta

Latest revision as of 09:47, 22 August 2013

Development

Developing Active Apps

Plasma Active Apps are easy to create, adapt, publish and distribute. You can use Plasma Quick (which builds on top of Qt Quick and the QML declarative markup language), JavaScript, Python, Ruby, C++ and other languages to write Active Apps. We have collected a set of recommendations for writing apps that get the most out of the platform and provide a native look and feel to the user.

You can find documentation for many aspects of Plasma development on the following pages:

Setting up a Development Environment

The recommended approach for application development is to use a PC with a Linux distribution (e.g. openSUSE). If needed, clone and compile the required PA libraries, notably Active Quick, on your platform. However, this step is not mandatory as long as the application interface is written in standard QML. As general rules please use cmake as compilation management system and QML for your graphical user interface. See PA Apps Recommendations and Guidelines for further details.

Once your application is ready for testing, please use the latest PA iso on a supported device (e.g. ExoPC). Enable the development repository on your device and type

zypper refresh && zypper dup

in order to update your PA installation. Make sure that your application compiles and runs on PA.

There are a number of limitations on PA, for example there is no full screen mode for the application as the task bar should be always displayed in case the application misbehaves. These limitations are not always documented, so please test carrefully your application. If needed, install synergy in order to have keyboard and mouse support on your tablet. However, check carefully how your application is adapted to touch screens as this is the main target for PA. Using a virtual machine to test your application is not recommended as full touch screen support is not (yet) available.

Once you have tested your application, you can prepare it for deployment by setting up your repository on Mer Project Open Build Service. For alternative ways of deploying your application see PA Packaging and Distribution.

Interface Standards and Research

Plasma SDK: Plasmate

Add-ons and widgets for Plasma Active can be created without setting up a build system, and without using C++. Plasmate is a small, custom-made IDE specifically taylored for creating Plasma widgets and other add-ons. Plasmate allows you to quickly create new Plasmoids, or 'fork' and improve existing ones.

Kubuntu packages are in the official repository starting from 13.04 (raring):

sudo apt-get install plasmate

More information about Plasmate can be found at here.

Plasma Active Core Development

The project page of Plasma Active with pointers to Git repository, current activity and the likes can be found here. Upstream source code for Plasma Active can be downloaded with

git clone kde:plasma-mobile

or

git clone git://anongit.kde.org/plasma-mobile


Source code for Contour's recommendation features can be found in the "contour" git repository, Share-Like-Connect is in the "share-like-connect" repository:

git clone kde:contour
git clone kde:share-like-connect

or

git clone git://anongit.kde.org/contour
git clone git://anongit.kde.org/share-like-connect

To build the Contour repository it's necessary to have installed Qt mobility 1.1 or newer. Be sure that you're using the latest shared-desktop-ontologies from git://oscaf.git.sourceforge.net/gitroot/oscaf/shared-desktop-ontologiesa and to rebuild soprano and nepomuk after updating shared-desktop-ontologies.

For development questions, please refer to the Plasma mailinglist, or the IRC Channel (see Contact).

For building Plasma Active from master, you need the "active-development/4.7" or "active-development/master" branches from kdelibs and kde-runtime. You can find suitable development packages and install them from openSUSE's Plasma Active repo or the MeeGo Project repo if you don't want to build them on your system. See the Installation section for a recipe to install these packages. Proceed with building plasma-mobile from Git, using CMake and the usual development mechanism for C++ application. Note that building Plasma Active from master is only useful if you want to work on the shell itself, and even then you might still be able to get away with just editing the QML files that come with Plasma Active and define its UI and interaction.

Development Workflow

In order to keep development fun for everybody, the work on Plasma Active is structured as follows.

  • The master branch remains a stable to work on
  • Features are developed in branches
  • Merge of branches happens after review and consensus in the Plasma team
  • Everybody is encouraged to share their branches publicly, as remote branches on git.kde.org in order to keep others in the loop about ongoing activity
  • Stabilization branches for releases are branched from master and then stabilized for a series of releases

Plasma Active is developed in a Scrum-like workflow. We initially start with 2-week development cycles. One cycle typically looks like this:

  • Merge Window (1 week)
  • Stabilization and Integration (1 week)

During the merge window, Plasma Active is open for new features, bigger visual changes, and interaction improvements. During the stabilization and integration phase, quality, integration and default setup is further improved, updated packages and installation images are created. Each cycle results in the following:

  • Newly integrated features
  • Visual improvements
  • Improved functionality in general
  • Updated packages to test and use on the target device
  • An installable live image to use as testing and further development base
  • An overview of the changes in this cycle

Integration Workflow

openSUSE

Integration happens in the KDE:Active project within openSUSE's OBS.

MeeGo

Integration happens in Project:KDE:Devel project of the public MeeGO OBS. The kdelibs, kdebase-runtime, contour, plasma-mobile and share-like-connect modules are continously updated. A test image is regularly created from this project.

Working module revision are submitted to Project:KDE:Trunk:Testing project and after more extense testing to Project:KDE:Trunk project.

Meeting Minutes

Testing

For effectively improving and assuring quality, a structured approach to testing is mandatory. Supporting the process of testing, we have defined a standardised process to develop, build and deploy the Plasma Active Core and Active Apps.

Test Builds and Snapshots

In the process up to the first release, we provide regularly updated packages and bi-weekly installation images to test Plasma Active, and to test your App on the latest state-of-the-art code. You can find installation instructions in the Installation section.

Test on the target device

It is important to test your app, or Plasma Active in general on the target device. The following aspects can not be ful

  • The device is often slower
  • ... has a different display in terms of resolution, pixel density and color reproduction
  • ... uses different input methods, most importantly a touchscreen, a virtual keyboard
  • ... uses sensors, for example rotation sensors, accelerometers or GPS
  • ... API and the platform might differ between your development machine and the target device
  • ... the use-cases of the target device differ wildly from desktop machines, interaction problems and optimization is very hard to do on a different form factor

We recommend a defined development / deployment / testing process, in order to achieve the best possible quality for your app -- after all, only one bug or interaction problem can turn an app from great to unusable. For quicker development cycles, it is of course also possible to run and test Plasma Active in a window on your development machine, or in a virtual machine. If you are looking for a device suitable to test Plasma Active on, head over to the Devices section.

The Plasma Active team can help you getting your app packaged and built on the openSUSE and Meego buildservices.


Release Management

Plasma Active is released independently from KDE SC releases, but using the same infrastructure. Plasma Active comes out about two months after SC's 6-monthly feature releases. The Plasma Active Core team decides, based on consensus specifics to the release. Stable releases are branched at beta stage, fully stabilized there, and released as .0 with .1, .2, etc. patch releases following. The release process is managed by Sebastian Kügler.