Create an SDK plugin for the Ubuntu Download Manager

Registered by Manuel de la Peña

The Ubuntu Download Manager is the centralized service within ubuntu that allows to perform downloads. The Ubuntu SDK does not provide a QML plugin and this should be solved.

Blueprint information

Status:
Started
Approver:
Manuel de la Peña
Priority:
Undefined
Drafter:
Manuel de la Peña
Direction:
Needs approval
Assignee:
Manuel de la Peña
Definition:
Approved
Series goal:
Accepted for trusty
Implementation:
Started
Milestone target:
milestone icon ubuntu-14.04-beta-1
Started by
Manuel de la Peña

Whiteboard

In the previous cycle the Ubuntu Download Manager was added as the main service to perform long lasting downloads in Ubuntu Touch[1]. At the time there were plans to add an SDK so that app developers could take advantage of the service, unfortunately the deadline could not be met.

At the time a draft SDK was done[2]. In this blueprint we want to ensure that the proposed SDK is valid for app developers and how we could be the usage of the API better.

Points to consider:

* The fact that DBus is used must be hidden from the average app developer. How can we do this. Should we use callbacks that are called or should the SDK behave like a synchronous API.
* What happens with the life-cycle of the application. Should the SDK take care of serializing. What to do when the app is paused or killed?
* What to do with already downloaded files? Do we need a garbage collection strategy, should the app developer take care of that?
* How about testing? Do we add a testing infrastructure to fake downloads? Is this needed?

[1] https://wiki.ubuntu.com/DownloadService/
[2] https://docs.google.com/a/canonical.com/document/d/1fqeIXENmZsY2ziO9_pq3Xt6xVtLVa4xmb009dJxzaQo

(?)

Work Items

Work items:
[mandel] Provide an API draf, taking into account potential lifetime issues and dbus async methods: TODO
[mandel] Provide dbus API for the metada database used by u-d-m: TODO
[mandel] Provide a client c++ library to talk with the dbus API: TODO
[mandel] Package client c++ library and -dev library: TODO
[mandel] Provide a common shared library shared between the u-d-m daemon and the a client c++ lib: TODO
[mandel] Pacakge common shared library and -dev library: TODO
[mandel] Provide a QML plugin to be added to the SDK: TODO
[mandel] Provide testing infrastructure for downloads: TODO
[mandel] Provide apparmor profile for click applications that want to use the u-d-m: TODO

Dependency tree

* Blueprints in grey have been implemented.