Frameworks

Differences between revisions 2 and 3
Revision 2 as of 2014-02-27 14:19:40
Size: 892
Editor: lool
Comment:
Revision 3 as of 2014-02-27 14:56:50
Size: 3862
Editor: lool
Comment:
Deletions are marked like this. Additions are marked like this.
Line 7: Line 7:
There might be multiple frameworks on a single image. Framework xyz is present when /usr/share/click/frameworks/xyz.framework exists, however this should be tested with the proper libclick call or click command (see [[LP #1271633|https://bugs.launchpad.net/ubuntu/+source/click/+bug/1271633]] to track this requirement). There might be multiple frameworks on a single image. Framework xyz is present when /usr/share/click/frameworks/xyz.framework exists, however this should be tested with the proper libclick call or click command (see [[https://bugs.launchpad.net/ubuntu/+source/click/+bug/1271633|LP #1271633]] to track this requirement).
Line 9: Line 9:
== == == Available frameworks ===

'''This table is subject to change and lists existing and planned frameworks at the time of writing.'''

||'''release'''||'''frameworks'''||'''contents'''||
||Ubuntu 13.10 for phones||ubuntu-sdk-13.10||all QML modules and C libraries directly pulled by ubuntu-sdk-libs||
||Ubuntu trusty||ubuntu-sdk-14.04-*-dev||Temporary frameworks over the development of 14.04; will be removed once ubuntu-sdk-14.04-* frameworks are stable||
||Ubuntu 14.04||ubuntu-sdk-14.04-qml||QML modules only; list and versions to be finalized||
||Ubuntu 14.04||ubuntu-sdk-14.04-clibs||C/C++ libraries only; list of included APIs to be finalized||
||Ubuntu 14.04||ubuntu-sdk-14.04-html||Cordova and HTML runtime only||

== How are frameworks defined ==

This depends of the type of framework:
 * for C/C++ apps, the framework is derived from a list of included C/C++ APIs; actual location is TBD
 * for QML apps, the frameworks is derived from a list of versioned QML APIs; actual location is TBD
 * for HTML/Cordova apps, the definition is TBD

== App developer FAQ ==
=== Which framework should I target? ===

While the only stable framework defined so far was the 13.10 one, but it wasn't widely deployed and will soon be superseded. The 14.04 frameworks are imminent and we expect all devices to move to a 14.04 images immediately after release. So you should target the `14.04-*-dev` frameworks for now and move to the `14.04-*` frameworks as soon as these are stable (probably around 14.04 beta 1, see [[TrustyTahr/ReleaseSchedule]]).

Once Ubuntu 14.04 is released, we expect most app developers to keep targeting `14.04-*` frameworks as to ensure maximum compatibility between devices.

In terms of per-release frameworks, you should use the ones that your app requires; for instance, if your app is entirely written in QML, it only needs the ubuntu-sdk-14.04-qml framework.

The rule of thumb is to use the oldest supported framework which satisfies your app's requirements. At the moment this might imply using an older SDK than the latest, but we'd like to allow targeting older frameworks from latest SDK in the future.

=== How long are frameworks supported? ===

As long as possible, ideally forever. The 14.04 framework ought to be supported in later releases for some years.

=== May I use multiple frameworks? ===

You may depend on multiple frameworks from the same baseline; for instance, if your app requires QML and C libraries, you should depend on the ubuntu-sdk-14.04-qml and ubuntu-sdk-14.04-clibs frameworks.

=== How do I target multiple frameworks? ===

Right now this requires uploading multiple apps under different names, but we're discussing ways to make this easier for app developers:
 * either you'd bundle multiple versions of your app, one for each target framework
 * or we'd allow declaration of a range of supported frameworks, and your app would use the highest available one at runtime

Overview

Click Frameworks are "contracts" between the platform (OS) and apps. These were introduced by the Click packaging tool in Ubuntu Touch / Ubuntu for phones images to ensure apps shipped from the application store were compatible with installed devices. Click is generic and might be used in more images than just the ones based on While it was introduced along the first Ubuntu for phone images for Unity 8 / QML / Qt apps, Click is not specific to these technologies and is applicable to other images / stacks.

There might be multiple frameworks on a single image. Framework xyz is present when /usr/share/click/frameworks/xyz.framework exists, however this should be tested with the proper libclick call or click command (see LP #1271633 to track this requirement).

== Available frameworks ===

This table is subject to change and lists existing and planned frameworks at the time of writing.

release

frameworks

contents

Ubuntu 13.10 for phones

ubuntu-sdk-13.10

all QML modules and C libraries directly pulled by ubuntu-sdk-libs

Ubuntu trusty

ubuntu-sdk-14.04-*-dev

Temporary frameworks over the development of 14.04; will be removed once ubuntu-sdk-14.04-* frameworks are stable

Ubuntu 14.04

ubuntu-sdk-14.04-qml

QML modules only; list and versions to be finalized

Ubuntu 14.04

ubuntu-sdk-14.04-clibs

C/C++ libraries only; list of included APIs to be finalized

Ubuntu 14.04

ubuntu-sdk-14.04-html

Cordova and HTML runtime only

How are frameworks defined

This depends of the type of framework:

  • for C/C++ apps, the framework is derived from a list of included C/C++ APIs; actual location is TBD
  • for QML apps, the frameworks is derived from a list of versioned QML APIs; actual location is TBD
  • for HTML/Cordova apps, the definition is TBD

App developer FAQ

Which framework should I target?

While the only stable framework defined so far was the 13.10 one, but it wasn't widely deployed and will soon be superseded. The 14.04 frameworks are imminent and we expect all devices to move to a 14.04 images immediately after release. So you should target the 14.04-*-dev frameworks for now and move to the 14.04-* frameworks as soon as these are stable (probably around 14.04 beta 1, see TrustyTahr/ReleaseSchedule).

Once Ubuntu 14.04 is released, we expect most app developers to keep targeting 14.04-* frameworks as to ensure maximum compatibility between devices.

In terms of per-release frameworks, you should use the ones that your app requires; for instance, if your app is entirely written in QML, it only needs the ubuntu-sdk-14.04-qml framework.

The rule of thumb is to use the oldest supported framework which satisfies your app's requirements. At the moment this might imply using an older SDK than the latest, but we'd like to allow targeting older frameworks from latest SDK in the future.

How long are frameworks supported?

As long as possible, ideally forever. The 14.04 framework ought to be supported in later releases for some years.

May I use multiple frameworks?

You may depend on multiple frameworks from the same baseline; for instance, if your app requires QML and C libraries, you should depend on the ubuntu-sdk-14.04-qml and ubuntu-sdk-14.04-clibs frameworks.

How do I target multiple frameworks?

Right now this requires uploading multiple apps under different names, but we're discussing ways to make this easier for app developers:

  • either you'd bundle multiple versions of your app, one for each target framework
  • or we'd allow declaration of a range of supported frameworks, and your app would use the highest available one at runtime

Click/Frameworks (last edited 2014-05-22 10:23:49 by lool)